1. 程式人生 > >uboot啟動uImage和rootfs(bootcmd和bootargs引數)

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。