打印
[应用相关]

IAP更新内部和外部两个Flash遇到的问题

[复制链接]
492|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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文件合成一个文件即可。

使用特权

评论回复
5
flycamelaaa| | 2021-2-8 11:09 | 只看该作者

ST的很简单,编译器都是支持生成BIN文件的。同时图形库肯定时固定的。比如1M的FLASH,就建立一个1M的缓冲区按照指定地址写入数据即可。在读取库时,用指着读取就可以了。我用字库都是这么做的。会用c#或者VB写个简单的应用程序,对自己也有好处。方便自己对数据的处理。万事能不求人,坚决不求人。

使用特权

评论回复
6
probedog| | 2021-2-8 11:09 | 只看该作者
1 不要搞太复杂了。将你说的库单独放到外边,不要跟程序一起编译。好处很多。
2 数据固定放到外边,程序不会引用? 映射了就直接地址引用,没映射就接口读。
3 文件很多?到底多少?你说现在是做成数组放到程序中了,那你是已经将图片转为数组了?
是一个数组还是多个数组? TXT2BIN或者BIN2txt这两个小工具,可以了解。
4 如果你不会写什么小工具,用uedit也可以很好处理数据啊,列模式了解了解。

使用特权

评论回复
7
wakayi| | 2021-3-2 23:15 | 只看该作者
在上位机做比较好

使用特权

评论回复
8
wowu| | 2021-3-2 23:16 | 只看该作者
内部和外部都是相对什么来说的呢

使用特权

评论回复
9
xiaoqizi| | 2021-3-2 23:18 | 只看该作者
灵活更新的意思是什么

使用特权

评论回复
10
木木guainv| | 2021-3-2 23:21 | 只看该作者
尽量简单处理一下

使用特权

评论回复
11
磨砂| | 2021-3-2 23:23 | 只看该作者
没有必要分的这么清楚吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

966

主题

2956

帖子

7

粉丝