新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CAN总线的在线更新机制的设计与实现

基于CAN总线的在线更新机制的设计与实现

作者:时间:2013-07-31来源:网络收藏

  

  其中①启动程序是一段特定的驻留代码,专门用于接收来自主机新的代码,将其烧写到相应的FLASH空间,完成后跳转到应用代码区去执行新的程序,代码比较少,编译生成的映像文件小于4 KB,每次系统上电或重启后先执行启动程序。

  ②应用程序是真正实现用户功能的代码。

  ③用户数据区是用于存储应用程序的一些设置和数据。

  3.3 中断向量表重映射与复制

  LPC11C24支持32个向量中断,中断向量表默认位于FLASH 的第一个4 KB 空间,地址从0×00000000~0×00000079.按照前面的设计,启动程序占用第一个4KB的空间,当跳转到应用程序时,实际的中断向量表是位于0×00001000~0×00001079的空间。但LPC11C24系列的单片机不支持自定义中断向量表的地址,只支持将中断向量表从FLASH重映射到RAM.

  为了能让应用程序实现正常的中断处理,启动程序在跳转到应用程序之前还需要将应用程序的中断向量表复制并映射到RAM[10].

  代码实例如下:

  

  3.4 启动程序和应用程序的设计与固化

  程序都在Keil for ARM 集成环境下编写并编译。

  首先在Keil软件下新建基于LPC11C24的工程,并配置FLASH和SRMA的起始地址和大小。具体如表2所示。

  

  3.5 启动程序与应用程序之前的跳转

  在启动程序中定义应用程序的地址,#defineAPP_CODE_ADDR (0×00001000),程序跳转的代码采用汇编语言编写,代码实例如下:

  

  3.6 启动代码的实现流程当用户需要更新应用代码时,PC的上位机软件通过向各种终端发送升级命令。而终端开机后自动运行启动程序,启动程序会检测没有升级命令,如果有的话,则接收应用程序代码,直到完成整个升级。如果没有,则运行应用程序。实现的流程图如图2,图3所示。



评论


相关推荐

技术专区

关闭