[应用相关] IAP更新内部和外部两个Flash遇到的问题

[复制链接]
 楼主| elephant00 发表于 2021-2-8 10:57 | 显示全部楼层 |阅读模式

项目中用到外部NorFlash,用来存放图形和字体等内容,内部Flash存储应用程序,更新固件使用的是IAP的方式。其中应用程序存放在内部 0x800 0000开始的地址区域中,图形库存放在外部 0x9000 0000开始的地址空间中。现在遇到个问题,就是使用IAR生成的Bin文件如果遇到地址不连续的情况会产生一个巨大的文件(GB级别)。如何设置IAR生成两个bin文件,一个应用程序的,一个库的,这样我用IAP更新的时候可以灵活更新(更新其中一个或者全部)。有大神知道该怎么做吗?
classroom 发表于 2021-2-8 11:08 | 显示全部楼层
生成bin文件估计是不行的,生成HEX,然后在上位机做一下处理会好一点
laocuo1142 发表于 2021-2-8 11:08 | 显示全部楼层
IAR直接生成APP的bin文件就可以了,库文件可以用图形原文件。这样bin文件的大小就正常了。至于需要更新APP还是图片库,由通讯协议定义,发过去的命令要更新app就更新app,接下来IAP收到的数据就更新到APP去,反之亦然。
powerantone 发表于 2021-2-8 11:08 | 显示全部楼层

图形库时单独的库吧,烧写文件的时候,选择烧写地址写入图形库即可。我用字库的时候时这样写的。或自己写一个程序吧两个bin文件合成一个文件即可。
flycamelaaa 发表于 2021-2-8 11:09 | 显示全部楼层

ST的很简单,编译器都是支持生成BIN文件的。同时图形库肯定时固定的。比如1M的FLASH,就建立一个1M的缓冲区按照指定地址写入数据即可。在读取库时,用指着读取就可以了。我用字库都是这么做的。会用c#或者VB写个简单的应用程序,对自己也有好处。方便自己对数据的处理。万事能不求人,坚决不求人。
probedog 发表于 2021-2-8 11:09 | 显示全部楼层
1 不要搞太复杂了。将你说的库单独放到外边,不要跟程序一起编译。好处很多。
2 数据固定放到外边,程序不会引用? 映射了就直接地址引用,没映射就接口读。
3 文件很多?到底多少?你说现在是做成数组放到程序中了,那你是已经将图片转为数组了?
是一个数组还是多个数组? TXT2BIN或者BIN2txt这两个小工具,可以了解。
4 如果你不会写什么小工具,用uedit也可以很好处理数据啊,列模式了解了解。
wakayi 发表于 2021-3-2 23:15 | 显示全部楼层
在上位机做比较好
wowu 发表于 2021-3-2 23:16 | 显示全部楼层
内部和外部都是相对什么来说的呢
xiaoqizi 发表于 2021-3-2 23:18 | 显示全部楼层
灵活更新的意思是什么
木木guainv 发表于 2021-3-2 23:21 | 显示全部楼层
尽量简单处理一下
磨砂 发表于 2021-3-2 23:23 | 显示全部楼层
没有必要分的这么清楚吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1030

主题

3864

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部

1030

主题

3864

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部