u-boot的環境參數中有兩個和內核啓動相關的,它們是bootcmd和bootargs
1.u-boot中和環境參數有關的命令
printenv:打印當前環境參數
setenv param_name "value":設置環境參數
saveenv:保存環境參數到FLASH
2.bootcmd:
這個參數包含了一些命令,這些命令將在u-boot進入主循環後執行
示例:
bootcmd=boot_logo;nand read 10000003c0000 300000;bootm 1000000
意思是啓動u-boot後,執行boot_logo顯示logo信息,然後從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。