完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 单片机与电脑,在代码运行空间的区别单片机与 电脑/Linux嵌入式 在代码运行的空间上不同。大多数单片机,代码都是在Flash中运行的。而电脑/linux嵌入式,是将代码从存储介质(可能是硬盘/SD卡/EMMC/NAND)中读出,拷贝到RAM,再在RAM中去执行代码。 2. 为什么是这样?为什么单片机的代码在Flash中运行呢?这样不会搞得代码运行速度很慢嘛? 因为单片机的运行速度一般都比较慢,Flash的读取速度足够跟得上代码运行的速度。但这个跟得上不是说先读取Flash后运行代码,而是一边Flash读一边MCU运行代码。 在单片机内部都会有Flash预读操作,相当于提前读取Flash代码段放入缓存,CPU运行代码时直接从缓存中读,不需要等待Flash读取完成,从而加快单片机的读取和运行速度。代码在Flash中运行,这样做的好处是可以减少RAM的占用,减少生产的硬件成本。 而电脑/linux嵌入式则不一样,运行速度较为迅速,Flash的读取速度远远跟不上代码运行的速度,如果这时还在Flash中运行代码,则会严重影响代码的执行速度。所以要先将代码从存储介质(可能是硬盘/SD卡/EMMC/NAND)中读出,拷贝到RAM,在RAM中去执行代码。 特别注意:并非所有的单片机都是在Flash中运行代码,像stm32H7系列、NXP 的i.MX RT系列 就是代码在RAM中运行的。这类MCU的特点是运行速度非常快,远超一般单片机。它们内部Flash更像 Cortex-A嵌入式处理器中的 BootROM,内置Flash很小,几乎都是用来执行出厂配置代码的,用户很少用,都是将代码存放于外置的Flsh中。 还有一种情况,就是系统比较复杂的情况,也需要将代码运行于RAM上。用户可自行将代码拷贝到RAM中运行,并用函数指针去调用RAM中的注册函数。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:18 , Processed in 1.206809 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号