7612|20

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

从应用层升级BOOTLOADER和内核 [复制链接]

最近项目需要做应用层升级内核和BootLoader,以前没做过这方面的事,出现个问题,升级前要先擦除放内核的那几块flash,但是擦除后系统就出问题了。有这方面经验的大侠麻烦指点下,谢谢先!

最新回复

用户数据和配置肯定是要保存的,看来做两个OS分区是目前的最佳选择了,不过这个还没做过得好好分析!  详情 回复 发表于 2010-6-9 10:16
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
如果用xip肯定不能这么做,如果是在内存中跑nk,是可以在应用程序中擦出nk的block的
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
googleman做的,他的blog上有的吧
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

4
 
就是用的XIP,所以比较麻烦,2楼能提供个链接或文章名字吗,我去找了没找到。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
XIP的NK是放在binFS中的,对binFS文件系统操作不可以么?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
没有人会这样做,这是给自己的产品埋一个巨大的定时炸弹。

你设想一下,在用应用程序升级bootloader的时候出错,原来的已经擦除,新的没写进去,你的机器除了返修还有别的办法吗?而谁有敢保证这样的出错不会出现呢?

bootloader的功能很单一,而且也不涉及用户交互,所以升级它是没有意义,却会给自己徒增许多麻烦的事情。
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

7
 
以前见没有用XIP的实现过。。。
先把IMG读入内存,然后操作NANDFLASH 的接口写入,前提是RAM足够大,不然会失败。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 yashi 的回复:

没有人会这样做,这是给自己的产品埋一个巨大的定时炸弹。

你设想一下,在用应用程序升级bootloader的时候出错,原来的已经擦除,新的没写进去,你的机器除了返修还有别的办法吗?而谁有敢保证这样的出错不会出现呢?

bootloader的功能很单一,而且也不涉及用户交互,所以升级它是没有意义,却会给自己徒增许多麻烦的事情。

这个需求是用户提出的我们只有做了,当然尽量保证不出错。
我们这个RAM有128M,升级的内容是从SD卡读取
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
除非是bootloader经常换,要不没有必要,
如能够升级的话,更加好了
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个需求是用户提的,现在方案是应用程序提供文件名和文件地址,驱动获取后直接写flash,在驱动层做一个接口供应用调用。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 
首先不说可靠性的问题
使用XIP的系统,在系统运行当中有可能会需要从flash里面读取内容,你这时候去擦除flash,很难避免不出问题
一般这种情况下都是使用bootload读取sd卡来更新系统
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
值得讨论下,如何能够在wince下更新nk.bin的,对于产品的初期用处比较大,
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 10 楼 reallyu 的回复:

首先不说可靠性的问题
使用XIP的系统,在系统运行当中有可能会需要从flash里面读取内容,你这时候去擦除flash,很难避免不出问题
一般这种情况下都是使用bootload读取sd卡来更新系统


主要就是这个系统运行要从flash里读取内容问题不好处理,不知道大家有没有好的解决办法
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
xip的肯定是不行,运行的时候分区是锁住的。
可以参考windows mobile的做法。
单独弄一个bootloader专用于update,wm中是用ce定制出来一个uldr。
需要更新的时候就进入uldr,然后更新系统,重启动。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
如果你们的flash比较大,可以参考KIN的方案,搞两个os分区,假设为os1和os2,os1运行的时候就把新系统image烧写到os2中,反之则否,并更新一个启动标志位。在bootloader中根据标志位去启动最新的系统。
image都不大,KIN内置就256M的flash,它的flash.bin一般都是100M,已经算很大了。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 10 楼 reallyu 的回复:
首先不说可靠性的问题
使用XIP的系统,在系统运行当中有可能会需要从flash里面读取内容,你这时候去擦除flash,很难避免不出问题
一般这种情况下都是使用bootload读取sd卡来更新系统


要加互斥,以前我做的是自己玩的,没有大量测试,嘿嘿,就怕弄着突然死机断电,不过总比没有好。哈哈哈。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

17
 
呵呵,做2个os的区域,这个想法好哇,
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 14 楼 codewarrior 的回复:

如果你们的flash比较大,可以参考KIN的方案,搞两个os分区,假设为os1和os2,os1运行的时候就把新系统image烧写到os2中,反之则否,并更新一个启动标志位。在bootloader中根据标志位去启动最新的系统。
image都不大,KIN内置就256M的flash,它的flash.bin一般都是100M,已经算很大了。


这个方案我们商量下,谢谢哈,flash是够用的4G。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 15 楼 gooogleman 的回复:

引用 10 楼 reallyu 的回复:
首先不说可靠性的问题
使用XIP的系统,在系统运行当中有可能会需要从flash里面读取内容,你这时候去擦除flash,很难避免不出问题
一般这种情况下都是使用bootload读取sd卡来更新系统


要加互斥,以前我做的是自己玩的,没有大量测试,嘿嘿,就怕弄着突然死机断电,不过总比没有好。哈哈哈。


这个互斥是怎么个做法呢?谢谢解释下!
yashi版主的意见很值得注意,一个不好就只有返厂。问了他们需求的这个必须做。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 18 楼 un_chairman 的回复:
引用 15 楼 gooogleman 的回复:

引用 10 楼 reallyu 的回复:
首先不说可靠性的问题
使用XIP的系统,在系统运行当中有可能会需要从flash里面读取内容,你这时候去擦除flash,很难避免不出问题
一般这种情况下都是使用bootload读取sd卡来更新系统


要加互斥,以前我做的是自己玩的,没有大量测试,嘿嘿,就怕弄着突然死机断电,不过总比没有好。哈……

作这个功能必须是稳妥第一,安全第一。否则光customer care就够受的。
经过大规模应用并且安全稳妥的方案就我说的那两个,要么你学wm,这个流程非常复杂,wm在真正做更新之前还有个模拟更新过程,如果失败就不做更新;要么你就搞两个OS分区。
另外我问一下,你们需要更新之后仍然保存用户数据和配置么?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表