LPC1768学习笔记

LPC1768学习笔记:IAP升级

1.需求:通过串口给主机升级,主机的通信串口与升级串口相同
2.方法:要完成APP与IAP程序的切换判断,我们需要一个flag_update单独标识地址的,当flag_update为0xFF的时候,视为正常上电状态,程序由IAP(0x10000000)可以直接跳转到APP中执行;当flag_update为0x55的时候,视为远程烧写状态,程序由IAP开始之后,不跳转APP,而是执行自己的等待烧写流程。这边具体的流程和应用后面会具体介绍。
为了满足切换判断的功能,就需要该标志位不随APP程序的烧写而发生变化,所以我这边选择将IAP存储区之后的一个扇区,即地址0x10009000作为flag_update的存储地址,这样,在IAP程序不变的情况下,随便怎么烧写APP,只要目标地址满足上述表格中的要求,该标志位就不会发生变化。当然,使用用其他满足条件的存储方式(诸如存入外部Flash、存入EEPROM等)都可以。
一.芯片内存划分:芯片总内存为512K
(1)IAP程序内存 :0x0000 0000 - 0x0000 8FFF -36K(可根据自己调整)
(2)升级标志内存:0x0000 9000 - 0x0000 9FFF -4K
(3)数据缓冲内存:0x0000 B000 - 0x0000 BFFF -4k
(4)APP程序内存 :0x0000 C000 - 0x0007 FFFF -472k
芯片手册内存分布地址:
在这里插入图片描述
二.IAP流程图说明:
【IAP】:对于IAP程序来说,首先根据flag_update状态判断是否跳转APP,如果不跳转,则等待升级包。待升级包传输完毕,全部写到APP的地址中之后,再执行跳转到APP程序的起始地址执行(或者直接重启)。跳转或者重启之前需要将flag_update重新置为正常上电状态(0xFF),这样以避免下一次重启之后,程序仍然跑在IAP中。
【APP】:对于APP程序来说,需要实现的很简单,就是在串口收到某些外部指令的时候(可自由设置),将flag_update置为远程烧写状态(0x55),并重启。重启之后,MCU会重新从IAP程序开始执行,执

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值