已经做嵌入式好几年了,现在才发现对芯片内部的事一概不知,真是少壮不努力,老大徒伤悲(郑重声明:我还是花季,正值年少呢),现在开始补这方面的知识,加油。
对于ARM芯片来说,芯片里面都有什么:
1、FLASH:大多数MCU都有,地址为0x00,一般我们下载调试程序的时候,都是将程序下载到了CPU的flash里面,然后上电就可以启动了。属于一级启动,就是直接可以运行。
2、ROM:也是BOOTROM,里面一般会存储bootload引导程序,作用就是让程序从其他地方启动,不从FLASH里面。可以实现两种功能:(一级启动)
1)这样bootload就可以做IAP升级,将外部的程序代码加载到内部FLASH里面,实现系统升级。
2)当我们不想运行FLASH里面的程序,或者这款MCU没有内部FLASH,怎么办?这时bootload可以实现从SRAM或者外部的存储器FLASH,加载程序启动。
3、SRAM:MCU拥有的一片内存,掉电丢失,因此一般在调试Debug时,程序就被下载到这里,bootload引导到这里执行,但是你对板子再次上电时,里面就没有程序来,所以板子启动不了。
不过一般使用外部存储器,会将存储在外部存储的程序先读到SRAM里面再执行。
4、外部存储器:看芯片支持哪种FLASH,将程序代码烧写进去,然后bootload开始引导,可以加载到sram或外部的SDARM中执行,也可以通过xip进行原地执行。
5、当有bootload和flash两种类型启动方式时,就需要boot mode的选择,一般是硬件的boot引脚决定。
这是自己的理解,刚刚开始,应该有些理解有误,大神们看见的话,再给我指点指点,普及普及,感恩。