在设计阶段,通常选用ICP或是ISP的方法升级单片机软件,比如在stm32系列产品MCU上不但可以升级程序流程,并且还可以调节即时观察运行内存数据信息、外接设备情况和局部变量及其断点调试运作、设定中断点等。
可是当发布产品之后,这类单片机设计或是微控制系统被置入某一目标系统软件中,难以选用ICP方法开展单片机编程升级;因而必须一种仅根据uart、can、eth等通信接口就可以完成单片机编程升级的技术性,IAP就是在其中一种;
IAP全名In Application programmer即在运用程序编写。IAP技术性将程序存储器分成多个区域,在其中一种是IAP APP区域,APP用于储存一切正常作业的程序流程,IAP用于储存根据通信接口改动APP区域的程序流程;
文中或是以stm32为例子,介绍一下和IAP相关专业知识。
栈表针SP:程序执行务必的标准,SP务必向下一个合理合法的详细地址室内空间,stm32有两个sp,msp和psp,如果不应用rtos,默认设置应用msp,应用rtos的小伙伴们留意自动跳转前先转换到相匹配的sp,不然系统软件很有可能奔溃;复位后sp值是程序存储器第一个字;
复位详细地址:单片机设计复位后必须复位详细地址,它就是程序存储器的第二个字;
在stm32上程序存储器一般就是指Flash,在标准库或是HAL库文件有对Flash的驱动软件,关键应用擦掉函数公式,读存储器函数公式,写储存器函数公式;
Flash系统分区:假定程序存储器尺寸为48KB
0x08000000-0x08003FFF:16KB IAP区域
0x08004000-0x0800FFFF:48KB APP区域
依据必须可以加上别的系统分区,比如系统软件主要参数区域,系统软件标示区域,及其保存区域等