uboot啟動uImage和rootfs(bootcmd和bootargs引數)
-boot的環境引數中有兩個和核心啟動相關的,它們是bootcmd和bootargs
1.u-boot中和環境引數有關的命令
printenv:列印當前環境引數
setenv param_name "value":設定環境引數
saveenv:儲存環境引數到FLASH
2.bootcmd:
這個引數包含了一些命令,這些命令將在u-boot進入主迴圈後執行
示例:
bootcmd=cp.b 0x10050000 0x20400000 0x130000;bootm 0x20400000
意思是啟動u-boot後,從nand flash中讀核心映像到記憶體,然後啟動核心
3.bootargs
這個引數設定要傳遞給核心的資訊,主要用來告訴核心分割槽資訊和根檔案系統所在的分割槽。
示例:
root=/dev/mtdblock5 rootfstype=jffs2console=ttyS0,115200 mem=35M mtdparts=nand.0:3840k(u-boot),4096k(kernel),123136k(filesystem)
其中:
root=/dev/mtdblock5 表示根檔案系統在第五分割槽
rootfstype=jffs2 表示根檔案系統的型別是jffs2
console=ttyS0,115200 表示終端為ttyS0,串列埠波特率為115200
mem=35M 表示記憶體大小為35M
mtdparts告訴核心MTD分割槽情況,它在核心目錄/drivers/mtd/cmdlinepart.c檔案中有介紹:
* The format for the command line is as follows: * * mtdparts=<mtddef>[;<mtddef] * <mtddef> := <mtd-id>:<partdef>[,<partdef>] * where <mtd-id> is the name from the "cat /proc/mtd" command * <partdef> := <size>[@offset][<name>][ro][lk] * <mtd-id> := unique name used in mapping driver/device (mtd->name) * <size> := standard linux memsize OR "-" to denote all remaining space * <name> := '(' NAME ')' * * Examples: * * 1 NOR Flash, with 1 single writable partition: * edb7312-nor:- * * 1 NOR Flash with 2 partitions, 1 NAND with one * edb7312-nor:256k(ARMboot)ro,-(root);edb7312-nand:-(home) */ |
關於mtd-id,每個FLASH都不一樣,實際上我覺得和當前FLASH的驅動有關係,在核心啟動後會列印相關的分割槽資訊,裡面會有相關FLASH的mtd-id。