月度归档:2018年02月

写在2018春节前

今天农历二十九,明天就是大年三十了。深圳的春节冷冷清清,几乎听不到鞭炮的声音。忙了一年,现在回想起来,这一年好像没做多少事情。时间啊,真的是过得太快,现在我也进入了中年大叔的行列了。中年是一个尴尬的年纪,中年大叔,中年大妈,这些词总是让人感觉少了点敬意。成年人的生活没有容易二字。人到中年,是在负重前行,上有父母要孝顺,下有子女要培养,中间还有婚姻中无数的琐事要应付。对我们这些坐在格子间的小职员来说,工作更是一个巨大的危机。有时上班看着窗外的落日,真的非常想逃离。但是离开了又能去哪呢?不得自由,应该是很多我这个年纪人的心声。

2018年,希望有新的开始,能有所突破。但愿我能终得自由。

LPC1768实现网络IAP

嵌入式系统一般都需要实现网络升级功能,方便维护。思路是把LPC1768的512K flash分为5部分:

Bootloader:0X0000 0000 – 0X0000 7FFF 32K 扇区0-7

应用程序:0X0001 0000 – 0X0004 7FFF 224K 扇区16-22

升级程序缓存区:0X0004 8000 – 0X0007 FFFF 224K 扇区23-29

扇区8用来保存升级数据包数量,每个数据包最大1024字节

扇区9用来放初始化标志,因为芯片出厂FLASH值都为0XFF,上电时读扇区9的值,如果不等于初始化标志,那么向扇区9写入初始化标志,并把扇区8保存数据包数量的地址清零。然后跳转到应用程序运行。

升级原理:应用程序运行时,接收到升级程序,把升级程序写入升级程序缓冲区,写完后把升级包的数量写入扇区8的起始位置,然后看门狗复位,开始执行Bootloader程序,升级程序先读取扇区9判断芯片是否初始化过,如果初始化标志正确,读扇区8保存的升级包数量,根据数据包数量读取升级程序缓存区的数据写到应用程序区,每次写一个数据包,即1024字节,写完后,把扇区8的起始位置4字节清零。最后跳转到应用程序,开始执行新的应用程序。升级完成。

LPC1768 FLASH地址分配如下:

clip_image002 继续阅读