×
单片机 > 单片机程序设计 > 详情

关于LPC1768的IAP随笔

发布时间:2020-06-01 发布时间:
|

单片机的程序需要自升级,现在的IAP程序大多数的做法都是,上电先启动一个小程序,我们称之为boot程序,然后该程序会和其它的控制器或者PC进行交互,一般有串口方式,通过交互通信口将新的程序发送给MCU,由MCU对FLASH进行自编程,完成后断电或者重启即可,整个升级工作完成。

本例结合LPC1768的IAP来讨论程序的转移。从之前的博客《关于LPC1768的存储地址、运行地址、向量地址》可以知道,MCU上电后,总是从0x00000000地址开始运行程序。那么boot程序往往也是从0地址开始运行。boot程序本质上也是一段普通的应用的程序,之所以叫boot程序,是因为该程序的功能主要是供引导和升级用,MCU真正要实现用的功能的程序我们称之为user程序。boot程序和user程序都是独立的程序,两个程序之间几乎没有管理和数据共享。当不需要做iap的时候,可以省略掉boot程序。如下图1和图2对比了单独的user程序和添加了boot程序之后的效果。

      

           图1 user                                   图2 boot+user

再回顾一下boot程序的流程:



boot转移到user的程序如下:



这里func定义为一个函数指针:typedef void (* func)(void);参考本论坛的“强制地址跳转”


关键字:LPC1768  IAP随笔

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机int字节的实现