WINCE系统跑起来后,通过AP更新NBOOT+EBOOT+NK,怎么处理TOC,MBR的改变,要不要去调用BP_XXX( )那些函数接口?

Abrolex   2009-4-30 11:23 楼主
WINCE系统跑起来后,通过AP更新NBOOT+EBOOT+NK,怎么处理TOC,MBR的改变,要不要去调用BP_XXX( )那些函数接口?

回复评论 (22)

是不是在FMD_OEMIoControl( )函数里面,提供READSECTOR,WRITESECTOR,ERASEBLOCK接口就可以了?
点赞  2009-4-30 11:25
但看到通过EBOOT更新NK的代码,他们都用到了BP_XXX( )那些函数接口。通过AP来更新NK,是不是也要调用这些接口?
点赞  2009-4-30 11:27
写入NK,应该是写在DOS分区里面(已经被低级格式化了,并写入了MBR),这个时候就应该有文件系统的概念了。也就存在逻辑扇区跟物理扇区之间的转换了,应该怎么进行他们之间的转换呢?
点赞  2009-4-30 11:29
顶起来,让大家看看。
点赞  2009-4-30 15:38
这个工作,无非是写入MBR的以及除去老的NK。

其实都是通过FMD_IOControl函数和应用通信,然后在该函数里面调用底层的flash读写,擦除函数。即可。使用eboot是手动写入MBR的。会比ADS 的自动写入MBR会难一点,不过对于bootloader都能随意修改的人来说不是难题。
点赞  2009-4-30 15:46
引用: 引用 5 楼 gooogleman 的回复:
这个工作,无非是写入MBR的以及除去老的NK。

其实都是通过FMD_IOControl函数和应用通信,然后在该函数里面调用底层的flash读写,擦除函数。即可。使用eboot是手动写入MBR的。会比ADS 的自动写入MBR会难一点,不过对于bootloader都能随意修改的人来说不是难题。



更新NK,要对应更新TOC结构的,如果不更新。系统启动的时候怎么知道读多少个扇区(NK的全部内容)。
点赞  2009-4-30 17:00
那你也照抄 本来微软下的代码 啊。甚至可以调用吧。
点赞  2009-4-30 17:01
要写NK数据进去,要进行对应低级格式化的。要进行低级格式化就得用到那些BP_XXX( )那些函数接口。
点赞  2009-4-30 17:03
引用: 引用 7 楼 gooogleman 的回复:
那你也照抄 本来微软下的代码 啊。甚至可以调用吧。


你写的没有调用那些BP_XXX( )那些函数接口?
点赞  2009-4-30 17:04
我现在是在照抄,但老是出问题啊。几个库文件老是编译报什么重定义错误。好烦!
点赞  2009-4-30 17:05
引用: 引用 10 楼 xqhrs232 的回复:
我现在是在照抄,但老是出问题啊。几个库文件老是编译报什么重定义错误。好烦!


哈哈,这是初步。等不错误也有很多事情,其实应用程序只是通知FMD_IOcontrol
去做事以及弄个buf指针传到驱动。这样下面的代码还是按照原来的bootloader方式实现的。所以你放心吧。
点赞  2009-4-30 17:10
确实挺麻烦的,更新NBOOT+EBOOT还好说,因为他们都是死的.但更新NK就难搞了,又是TOC,又是MBR,分区表,又是文件系统,又是逻辑地址与物理地址之间的映射关系.


现在还不知道通过AP更新NK应该用那个文件,是BIN文件还是NB0文件?他们怎么加载进程序,一条条记录该怎么解包,相关的知识点还真多.有的一阵子搞的了!
点赞  2009-4-30 20:17
IsValidMBR: MBR sector = 0x140 (valid MBR)


OpenPartition: Partition Exists=0x0 for part 0x21.
CreatePartition: Enter CreatePartition for 0x21.


LastLogSector: Last log sector is: 0xfebf.
CreatePartition: Start = 0x180, Num = 0x3c80.   //第6块开始!!!-----DOS分区大小为0X3C80=30976KB


Log2Phys: Logical 0x180 -> Physical 0x2c0

WriteMBR: MBR block = 0x5.                        //MBR-----第5块
BP_SetDataPointer at 0x0
WriteData: Start = 0x0, Length = 0x1e37940.

Log2Phys: Logical 0x180 -> Physical 0x2c0   //2009--4--30  XQH  这个转换理解是什么???


Updateded TOC!    //TOC更新

//==============================================================================
为什么DOS分区开始的扇区就是0X180了?为什么不是从逻辑0号扇区开始?

点赞  2009-5-4 09:28
Log2Phys: Logical 0x180 -> Physical 0x2c0  //2009--4--30  XQH  这个转换理解是什么???

为什么开始点是0X180扇区?
点赞  2009-5-4 09:29
nb0里面的启动地址,镜像大小存储在什么地方?
点赞  2009-5-4 10:51
应该更新 nk.bin nb0里面没有这些信息
点赞  2009-5-4 11:36
1> LBAtocCHS( )
2> CHStoLBA( )
3> Log2Phys( )

这三个函数有什么区别?
点赞  2009-5-4 14:17
FAT表在那里?为什么NK不从第6个块开始存而要从第11个块开始存?空的那几个块用做什么用途了?

CE下的文件是怎么管理的?有没族表和DIR区的说法?
点赞  2009-5-4 15:00
LZ用AP进行系统升级的问题解决没?
点赞  2009-6-18 10:54
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复