歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

U-Boot如何向內核傳遞Flash的分區信息

1.如何對nand 分區。修改mtdparts環境變量就可以了麼?

對於目前的U-boot而言,是的.而且, 設置了mtdparts變量之後,你可以在nand read/write/erase命令中直接使用分區的名字而不必指定分區的偏移位置.

set bootargs noinitrd console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2  mtdparts=nand_flash:128k(u-boot)ro,64k(u-boot envs),3m(kernel),30m(root.jffs2),30m(root.yaffs) 


2 內核通過bootargs找到文件系統,bootargs中的mtdblockx即代表分區,block1,2,3代表哪個分區是如何確定的。

事實上,bootargs中的"root=/dev/mtdblockx"只是告訴內核,root fs從第x個(x=0,1,2...)MTD分區掛載,mtdblock0對應第一個分區,mtdblock1對應第二個分區,以此類推.至於這個分區對應MTD device(NAND Flash)的哪一段范圍,取決於內核讀到的MTD分區信息,這個分區信息可以通過:

1) 寫死在MTD層的NAND Controller驅動或者內核其他部分代碼裡

2) 通過U-boot傳遞給內核的命令行中的mtdparts=...部分解析得出,解析的規則同u-boot中mtdparts變量的賦值規則

3) 其他可以讓內核知道分區信息的任何辦法


3 在u-boot中給nand分區後是否要對應修改kernel的代碼?

如果你用的是通過內核命令行給MTD層傳遞u-boot中的MTD分區信息,那是不需要的,在這種情況下,內核讀取到的分區信息始終和u-boot中的保持一致(推薦的做法)

如果你用的是把分區信息寫死在內核源代碼裡的方法,那最好保證它和u-boot中的保持一致,即同步修改內核的相關部分代碼

Copyright © Linux教程網 All Rights Reserved