打印
[应用相关]

继续讨论STM32的IAP

[复制链接]
3557|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuPlayer|  楼主 | 2009-8-25 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们目前一个产品用STM32做的,用IAP实现免开机壳升级。
目前的做法是在Flash专门开了一个Loader区域,而不是放在RAM中。
现在问题来了,FLASH不够用了,想把Loader挪到RAM中去运行。

但是我们的主程序用到了较大的buffer使用,IAP的Loader必然要覆盖部分buffer,
不知哪位有比较好的处理方法,来保证ram的使用不会冲突?
沙发
mcuisp| | 2009-8-25 18:00 | 只看该作者
这个、、、、纯粹技巧问题。
各人有各人的方法,呵呵。
ST有一篇**的。
或者用大RAM的芯片,一力降十会。

使用特权

评论回复
板凳
香水城| | 2009-8-25 18:06 | 只看该作者
几个问题:
1)你说的这个Loader是否就是前面说的IAP?还是通过IAP先下载一个Loader,再用Loader下载真正的应用程序?

2)用到较大RAM的主程序,与IAP什么关系?它就是IAP还是下载的应用程序?如果它与IAP程序相互独立,他们是不会在同一个时间运行的,应该所有RAM区可以互相覆盖的。

使用特权

评论回复
地板
mcuisp| | 2009-8-25 18:10 | 只看该作者
这方面我挂了一个发明专利,呵呵。
我的手持机一直在用这方面的“思路”或“技巧”。
说不定什么时候可以靠这个“地雷”“敲”一笔,哈哈。

使用特权

评论回复
5
banhushui| | 2009-8-25 19:31 | 只看该作者
:)楼主是否是因为IAP占了FLASH太多空间
方法1. 最简单换更大容量的
方法2. 主程序用到了较大的buffer  这个BUF是做什么用的,这个BUF许多情况下是可以利用的,比如这个BUF是用来倒腾4K的或者更大FLASH,那么做IAP时该空间可以利用
如果是多任务系统,还可以直接把多余的任务干掉,用任务的占用的空间也可以
方法3. 如果系统带FLASH,直接先把数据写入FLASH,设置标志,复位,IAP程序启动检查标志然后更新程序成功后清楚标志,该方法可以使你的IAP很精简

使用特权

评论回复
6
banhushui| | 2009-8-25 19:36 | 只看该作者
本帖最后由 banhushui 于 2009-8-25 19:37 编辑

其实不开机壳用ST自带的ISP也可以实现啊,自己留个接口就是:)

使用特权

评论回复
7
McuPlayer|  楼主 | 2009-8-25 22:25 | 只看该作者
以前一直没时间优化这块,现在由于功能多了几倍,居然导致FLASH区块开始紧张了。
目前已经修改了一个RAM跑LDR的版本,但主程序故意让出了这块RAM。

使用特权

评论回复
8
McuPlayer|  楼主 | 2009-8-25 22:27 | 只看该作者
程序分AP和LDR两部分,但FLASH中只有AP。
需要升级的时候,AP负责把LDR送到RAM,然后跳到LDR,然后LDR负责把新的AP送到FLASH,然后再跳到新AP上,升级结束。
是不是有点像“**生蛋,蛋生**”类似的,哈哈。

使用特权

评论回复
9
mcuisp| | 2009-8-25 22:40 | 只看该作者
MP is playing fire,hehe.

使用特权

评论回复
10
McuPlayer|  楼主 | 2009-8-25 23:28 | 只看该作者
现在是想paly fire一下,可没时间啊
几个客户都天天电话催进度,月初上海那边还专门派了一个人到我这里上班盯进度啊
忙得要发疯了,上论坛算是忙里偷闲啦,技术性太强的帖子实在是没精力参与,只好掺和些技术不太深入的话题

使用特权

评论回复
11
McuPlayer|  楼主 | 2009-8-27 11:11 | 只看该作者
还是关闭此贴吧,看来希望透过二姨论坛的大脑激荡法发现更多的问题以及Solution的想法有点不切实际。

使用特权

评论回复
12
mohanwei| | 2009-8-27 11:20 | 只看该作者
这种方式碰到个掉电复位什么的就麻烦了。
理想的方式还是在Flash里写保护一个独立的loader。开机时通过一系列的逻辑条件判断是否需要升级用户程序。这样不怕升级过程中掉电。用户程序也可以使用几乎全部资源——除了一小块Flash。

使用特权

评论回复
13
McuPlayer|  楼主 | 2009-8-27 15:11 | 只看该作者
“一小块Flash”----------其实也不是那么小的,不信你build一个最小的USB的Loader试试看。
我现在产品就是用的此方法,但实验中的版本用的是RAM方法,等稳定后再port到产品中去。

使用特权

评论回复
14
mohanwei| | 2009-8-27 17:35 | 只看该作者
LM的loader包括串口、以太网、SPI才不到4K;ATMEL的SAMBA包括USB,串口也可以做到很小……不过ST的USB的确没玩过。

使用特权

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

本版积分规则

个人签名:善待今天就是对未来最好的策划。 博客:http://www.mcuplayer.com

338

主题

7307

帖子

26

粉丝