WinCE内核热更新

"热更新"是我自己起的名字,意思就是说在ce中彻底更新系统,包括bootloader和内核.其实原理还是很简单的,就是用MmMapIoSpace映射好nand的寄存器,然后把对nand的操作从别的程序移植过来.

没错,一切都在ce中运行的一个应用程序中完成的.本来以为这个项目失败了,今天偶然看了一下原来的源代码,原来是指针没有解引用,这么一个低级的失误导致失败的...汗~...还有两个nand的操作语句没有加,不符合nandflash操作时序,改正之后,FlashID读出来了!0xec76!这证明在ce的应用程序中彻底更新自己是可行的!

之后从sjf项目中移植了对nand的写和读代码,稍作修改,ok了!首先完成了nboot1 nboot2以及usb-downloader的烧写,没有问题,一切正常!!然后就是最关键的内核烧写了.开始的几次倒是可以烧,但是因为烧写位置还有ecc的问题,在重新启动这个内核后还是无法校正ecc.然后又按照eboot的源代码加了ecc写入,这次手工加载内核没有出现ecc问题了,意味着内核已经被成功写入了flash.

但是目前最大的问题,恐怕是唯一的问题就是在bootloader加载内核之后会不停的重启.不论4.2还是5.0...郁闷,还不知道是怎么回事.

还有一个功能可能需要完成,就是刷新内核后更新toc.这个还是比较麻烦的,首先要把toc从block1读出来,然后按照toc的数据结构配置好,再写入block1.不难,但是工作量很大.年前估计弄不出来了,年后吧,做一个完善的CEUpdater!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值