基于《认知觉醒》的观点:阅读就是为了改变。所以,记录一下最近看到的相关知识
因为公司音箱需要卖给客户以后进行升级。所以需要了解Bootloader的内容。
总体框架是,芯片flash中有两套完全不同的程序,平时上电复位先从A程序开始启动,然后跳转到B程序。一般的开发都是在进行B程序,应用层,也可以理解为App的开发。
那为什么要两个程序呢?因为stm32等芯片,本身不像电脑有操作系统和bios。所以,上电复位以后的初始化硬件设备(时钟的初始化和中断初始化,还有就是中断向量表的映射之类的)就需要现有一段程序来执行,这就是程序A。
然后,在各类嵌入式机器做出来以后,整个产品已经封装好了。平时就是运行B程序。当需要升级时,不可能程序B把自己删除,再把自己写入。这就需要程序A来把B删除,然后写入新的B,再运行。此处,程序A就像一个后勤装修队,平时整栋楼就是白领员工(程序B)进进出出工作。但当整栋大楼内部需要拆掉或者装修时。白领就不能工作了。整个大楼的使用和操控安排全部交给后勤装修队,该砸墙砸墙,该修厕所修厕所。重新装修一番安排好后。后勤装修队退居二线,整个大楼的使用权再交给程序B白领员工。
程序A就是Bootloader,程序B就是App程序(嵌入式工程师平时打代码, 改bug的就是B程序)。
上面有了大致框架认识,具体知识见下面两个我感觉最有用的链接:
stm32内部flash读写:
https://www.cnblogs.com/xingboy/p/11346568.html
STM32在线升级 (IAP):
https://blog.csdn.net/elikang/article/details/86082960