求助:LPC4357 IAP应用程序升级方法

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

求助:LPC4357 IAP应用程序升级方法

2,779 Views
skysky
Contributor III

想利用U盘进行应用程序升级。使用的芯片为LPC4357,应用程序较大,存储有LCD界面数据。

我自己的想法是:

1.把BIN文件从U盘中读出,(可能是一次性读入,也可能是分段读入)

2.将读入的BIN文件段,用IAP指令进行内部flash的擦除和写入。

这种构想有一个问题就是,当程序较大时,需要使用到两个BANK进行存放。但是,BIN文件本身是不包含地址信息的。

编译生成的BIN文件为一个完整的程序段,无法知道从U盘中读入的BIN文件段应该写入到flash的确切地址。

也就无法知道要读该段BIN文件写入到哪一个BANK中的哪一个flash扇区内。

是不是有什么其他方法可以进行IAP写入?

或是改用其他方式进行程序升级?

0 Kudos
6 Replies

2,379 Views
jeremyzhou
NXP Employee
NXP Employee

Hi sky sky ,

非常感谢使用NXP产品,很高兴为你提供技术支持!

根据你的问题,我认为你是想做个bootloader方案。

如你所述,BIN不包含地址存放信息,所以需要你在设计时,提前规划好application code (即BIN文件)存放的位置,至于每次从U盘中的BIN文件读多少字节的数据,这个也是需要在设计时规划好的,我的建议是你可以以sector为单位,方便IAP command 对Flash进行烧录.

bootloader方案有很多,就看你选择以怎样的方式将application code传输给MCU,至于代码烧录部分,都是会选择使用IAP command的。

Have a great day,
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,379 Views
skysky
Contributor III

hi jeremy:

  经过一些思考和验证后,该问题我已想到了解决方案,正待测试。

只是有点疑问还望能够解答。

就是LPC18xx/43xx这种双BAND FLASH的芯片,在用KEIL编译生成BIN文件时,只能生成两个分开的BIN文件,然后再用BIN文件合并工具对两个BIN文件进行合并成一个BIN?

0 Kudos

2,379 Views
jeremyzhou
NXP Employee
NXP Employee

Hi sky sky,

我觉得这个问题没有太大的意义,你也说了BIN都没有地址信息,合并了对于不知道的人有什么意义呢,肯定首选生成HEX之类的可执行文件,里面携带着地址信息,问题关键是你要实现的应用场景是什么呢,IDE 不会把代码分两半每边都存一点的。
Have a great day,
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,378 Views
skysky
Contributor III

应用场景其实就是很常用的U盘更新程序咯。

0 Kudos

2,379 Views
jeremyzhou
NXP Employee
NXP Employee

Hi sky sky,

我的建议是尽量只使用一个Blank作为代码区,另外一个区尽量存放代码或者存放数据,KEIL涉及Linker file修改不是很方面,我建议你可以使用MCUXpresso,其有专门的设置功能。具体可参考此贴

【经验分享】指定数据存储于特定外部RAM区域 - ARM Cortex-M系列产品 - 恩智浦技术社区 - 手机版 - Powered by Discuz!
Have a great day,
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,379 Views
skysky
Contributor III

谢谢提供一种参考。

0 Kudos