- 积分
- 69
贡献7
飞刀0 FD
注册时间2012-4-24
在线时间60 小时
|
本帖最后由 mu163163 于 2012-12-11 12:04 编辑
又到了自己回答自己问题的时间了:lol
通过这几天的努力,不断在内核中打印出信息,发现了一种可行的方法,跟大家说说吧。
首先,要在eboot阶段创建flashpart.dll可以识别的分区表,我只在一个英文论坛(好像是论坛,不太清楚,当时没怎么留意)上看到过一种别人介绍的方法,他是说wince7里已经有了eboot代码的新架构,新架构里采用的是新的分区方法,也就是说你可以去移植这个架构的eboot分区代码,然后创建你要的分区表。这种方法我没有去实现过,有意愿的人可以去试一试,这是一种思路吧,我觉得。
下面来说说我的另一种方法。上面已经说了,flashpart.dll无法识别mspart.dll创建的MBR格式的分区表,但是我在内核打印信息里发现了一件事,就是内核第一次启动的时候会去查分区表,查不到的话,会收集nand flash的block情况,然后根据block的情况以及注册表里的对应的信息对nand flash进行格式化以及分区,下次启动的时候就可以找的到分区表了。其中,有两种block内核是不会去使用它们的,一种是bad block,另一种就是reserved block。
所以说,你如果想内核不去使用某一些block,那你可以选择把它们标记成上面的两种类型的block;如果你想把后面的区域分多个分区的话,可以在内核启动起来后,在存储管理器里进行分区。不过,这种办法并不能挂载binfs分区,不过至少可以使用剩下来的nand flash了。至于怎么去设置这些标记,我就不透露了,自己可以琢磨一下。
不过也有一个问题我没搞懂,就是我保留了一部分的block,剩下的被格式化成一个分区,可是分区大小却不对,它的扇区数总是会比我(总的扇区数 - 保留的扇区数)多,这令我很是纳闷,如果有哪位知道原因的,请你告诉我,那将解我心头一大疑惑。
发现我发帖问的问题都没什么人回答,不知道是大家不太看帖还是不知道答案,还是希望大家能互相帮助,共同进步!:lol
以上都是个人见解,有不对之处,希望大家指正。 |
|