MINI2440從SD卡更新NK及nboot(二)

 

  在上一篇文章中,實現應用程序操作FLASH及更新Nboot。這討論應用程序更新NK,這個比更新Nboot要複雜一些。由於MINI2440不使用EBOOT,系統從SD卡系統後,Flash是沒有分區的,理論上NK.nb0不一定需要BINFS,但如果不使用BINFS,系統是啓動不了的,這讓我百思不得其解。。。
  分區可使用BP_OpenPartition(),這個只能在驅動中使用,因此在FMD_OEMIoControl()加多一個Case, BP_OpenPartition()需要指定超始地址,長度,分區類型等。MINI2440第2塊寫TOC,第3塊到第19塊是BootLogo,第20塊開始纔是BINFS。SuperVivi燒入NK時可看到分區的一些信息,如下:
  

Enter your selection: w

Clear the free memory

Please send the Image through USB.

Download Address=0x80200000  Length=0x1a338e0

........................Done.

Low Level Format: Start = 0x1300(19 ), Num = 0x7ed00(2029)

.............................................................................................................................................................................................................Done.

Create Partition: Start = 0x1400(20 ), Num = 0xd200(210).

................................................Done.

Create Partition: Start = 0xe600(230 ), Num = 0x6fd00(1789).

...Done.

Start Windows CE...;

  從上面得知,分了兩個區,第一個區爲BINFS ,第二區爲FAT

  在調用BP_OpenPartition() 之前需調用BP_LowLevelFormat(),因爲BP_OpenPartition 會檢測MBR

    

  BINFS 從第20 開始的,但友善燒NK 卻從第39 塊開始,想不明白?
  第2 塊寫TOC ,可查看NBOOT 相關代碼

   

  將TOC 寫在第2 塊,接下來就把NK.nb0 從第39 塊開始寫,NK文件太大,不能一次性將其讀入內存,可參考如何實現從SD卡更新NK  提到的分段讀寫NK

  在寫NK 時,若遇到壞塊,需跳過,檢測是否爲壞塊可調用驅動中的IsBlockBad()

  關鍵代碼:

 

 

----------------------------------------------------------

尊重他人勞動成果,轉載請標明出處http://www.cnblogs.com/feishanm

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章