微控制器(MCU)怎样运行存储在Flash的步伐???

[复制链接]
发表于 2025-12-30 18:23:23 | 显示全部楼层 |阅读模式
                忙,太忙了!!!忙完就好了。MCU运行不也就云云?在微控制器单位(MCU)中,我们所编写的步伐时通常是存储在闪存(Flash)中。当MCU启动时,它会从闪存中读取步伐代码,并将其加载到RAM中实行。
                信任基于以上,各人会有几个疑问:
                1、既然步伐在RAM中运行,那为什么要存储在Flash?为什么不存储在RAM?
                2、如果存储在Flash的步伐巨细比RAM巨细还要大,那又怎样处置惩罚?
……
……
目次
1、步伐为什么要存储在Flash?
2、步伐为什么不存储在RAM?
3、存储在Flash的步伐比RAM大时怎样实行步伐?
4、如果步伐确实高出了RAM的限定,会发生什么?
4.1、性能降落
4.2、内存不敷错误
4.3、功能限定
5、微控制器(MCU)运行存储在Flash中的步伐时通常有哪些步调?
5.1、启动和引导
5.2、步伐加载
5.3、按需读取
5.4、缓存机制
5.5、分支和跳转
5.6、动态搬运
5.7、循环和重复
5.8、注意事项
6、总结

 
1、步伐为什么要存储在Flash?

        解:闪存(Flash)是一种非易失性存储介质,可以确保断电后,存储在此中的数据不会由于断电而丢失,且内存相较于RAM来说大得多,因此闪存(Flash)适实用例存储步伐代码
2、步伐为什么不存储在RAM?

        解:随机存取存储器(RAM)是一种易失性存储介质,在断电后存储在此中得数据就会丢失,但其读写速率相较于闪存(Flash)来说更快,适实用来数据存储和处置惩罚。以是不适实用来永世存储步伐;而恰当来实行步伐。
3、存储在Flash的步伐比RAM大时怎样实行步伐?

        解:众所周知,Flash巨细通常是RAM的几倍乃至十几倍,那么如果存储在Flash的步伐比RAM本身还大时,MCU又当怎样运行步伐?,各人要信任,我们能想到的前人大多都思量到了。微控制器(MCU)通常会接纳分页或分段技能管理干系内存。
4、如果步伐确实高出了RAM的限定,会发生什么?

4.1、性能降落

        步伐在Flash与RAM中频仍互换代码段;
4.2、内存不敷错误

        如果步伐实验访问的代码或数据不在RAM中,大概就会引发内存不敷的错误;
4.3、功能限定

        由于RAM空间的限定,现实代码中不得不较少步伐的部分功能
5、微控制器(MCU)运行存储在Flash中的步伐时通常有哪些步调?


5.1、启动和引导

        当MCU上电或复位时,它会从预界说的地点开始实行代码,这个代码一样寻常是引导加载步伐(Bootload)的起始地点。引导加载步伐负责初始化硬件、设置体系时钟,然后跳转到主步伐的起始地点。着实这部分告急涉及到制止向量表的迁移,感爱好的可以私信作者。
5.2、步伐加载

        步伐的代码存储在Flash中,但并不必要一次性全部加载到RAM,MCU的CPU会根据步伐的实行流程,通过步伐计数器(PC)指示当前必要实行的指令地点。
5.3、按需读取

        当CPU必要实行一个指令时,但此时指令并不在CPU的指令缓存中,那么就会从Flash中读取该指令。控制器负责将指令从Flash存储器中读取出来,并通过数据总线转达给CPU。
5.4、缓存机制

        很多MCU都具有指令缓存机制,它可以镌汰对Flash的访问次数,以进步实行服从。如果指令已经存在于缓存中,那么CPU可以直接从缓存中读取指令,从而无需访问Flash。这里涉及多级缓存干系内容。干系内容见《盘算机体系布局之缓存机制原理及其应用(一)》
5.5、分支和跳转

        当步伐实行到分支(函数调用或跳转指令)时,CPU会更新步伐计数器(PC)以指向新地点。如果新地点不在当前缓存的代码段中,CPU大概会必要从Flash中加载新的代码段。
5.6、动态搬运

        对于不支持指令缓存的浅易MCU,或出现缓存MISS时,CPU会直接从Flash读取指令;对于支持代码搬运的MCU,如果必要实行的代码不在RAM中,利用体系或步伐代码会负责将须要的代码段从Flash搬运到RAM中。
5.7、循环和重复

        步伐实行是一个循环的过程,CPU会不停重复上述步调,直至步伐实行完毕。
5.8、注意事项

        以上过程对于差别的MCU大概会有所差别,其依赖于详细的硬件架构、指令集、内存管理单位(MMU)、缓存计谋等因素。
6、总结

        以上应该是可以资助各人相识关于存储在Flash的步伐至RAM运行的过程,固然,大概涉及其他的知识点(缓存机制、为什么要有缓存?、缓存MISS会发生什么?、多级缓存的目的是什么?又有什么优点?。。。。。。)各人不是很相识,作者会连续更新维护文章,充实将各个知识点举行干系联。这里也表明下为什么不在此文章中做发散,嵌入式范畴知识体系之广泛,并不能通过寥寥万字/十几万字可以表明的,其知识体系在兼容的同时是不停更新迭代,做这一行毕生都将连续学习,以是作者只能针对单个知识点逐一讲授。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表