AM335 uboot启动参数
发布日期:2021-09-16 16:46:41 浏览次数:3 分类:技术文章

本文共 4765 字,大约阅读时间需要 15 分钟。

include/env_default.h中:

#elif defined(DEFAULT_ENV_INSTANCE_STATIC)static char default_environment[] = {#elseconst uchar default_environment[] = {#endif代码略#ifdef	CONFIG_EXTRA_ENV_SETTINGS	CONFIG_EXTRA_ENV_SETTINGS#endif代码略

CONFIG_EXTRA_ENV_SETTINGS定义在include/configs/am335x_evm.h中:

#define CONFIG_EXTRA_ENV_SETTINGS \	"loadaddr=0x80200000\0" \	"kloadaddr=0x80007fc0\0" \	"fdtaddr=0x80F80000\0" \	"fdt_high=0xffffffff\0" \	"rdaddr=0x81000000\0" \	"bootfile=uImage\0" \	"fdtfile=\0" \	"console=ttyO0,115200n8\0" \	"optargs=\0" \	"mtdids=" MTDIDS_DEFAULT "\0" \	"mtdparts=" MTDPARTS_DEFAULT "\0" \	"dfu_alt_info_mmc=" DFU_ALT_INFO_MMC "\0" \	"dfu_alt_info_emmc=rawemmc mmc 0 3751936\0" \	"dfu_alt_info_nand=" DFU_ALT_INFO_NAND "\0" \	"mmcdev=1\0" \	"mmcroot=/dev/mmcblk0p4 rw\0" \	"mmcrootfstype=ext4 rootwait\0" \	"nandroot=ubi0:rootfs rw ubi.mtd=7,2048\0" \	"nandrootfstype=ubifs rootwait=1\0" \	"nandsrcaddr=0x280000\0" \	"nandimgsize=0x500000\0" \	"rootpath=/export/rootfs\0" \	"nfsopts=nolock\0" \	"static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \		"::off\0" \	"ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M\0" \	"ramrootfstype=ext2\0" \	"ip_method=off\0" \	"bootargs_defaults=setenv bootargs " \		"console=${console} " \		"${optargs}\0" \	"mmcargs=run bootargs_defaults;" \		"setenv bootargs ${bootargs} " \		"androidboot.console=ttyO0 " \		"root=${mmcroot} " \		"rootfstype=${mmcrootfstype} emmcboot init=/init ip=${ip_method}\0" \	"nandargs=setenv bootargs console=${console} " \		"${optargs} " \		"root=${nandroot} " \		"rootfstype=${nandrootfstype}\0" \	"spiroot=/dev/mtdblock4 rw\0" \	"spirootfstype=jffs2\0" \	"spisrcaddr=0xe0000\0" \	"spiimgsize=0x362000\0" \	"spibusno=0\0" \	"spiargs=setenv bootargs console=${console} " \		"${optargs} " \		"root=${spiroot} " \		"rootfstype=${spirootfstype}\0" \	"netargs=setenv bootargs console=${console} " \		"${optargs} " \		"root=/dev/nfs " \		"nfsroot=${serverip}:${rootpath},${nfsopts} rw " \		"ip=dhcp\0" \	"bootenv=uEnv.txt\0" \	"loadbootenv=fatload mmc ${mmcdev}:3 ${loadaddr} ${bootenv}\0" \	"importbootenv=echo Importing environment from mmc ...; " \		"env import -t $loadaddr $filesize\0" \	"ramargs=setenv bootargs console=${console} " \		"${optargs} " \		"root=${ramroot} " \		"rootfstype=${ramrootfstype}\0" \	"loadramdisk=fatload mmc ${mmcdev}:4 ${rdaddr} ramdisk.gz\0" \	"loaduimagefat=fatload mmc ${mmcdev}:3 ${kloadaddr} ${bootfile}\0" \	"loaduimage=fatload mmc ${mmcdev} ${kloadaddr} ${bootfile}\0" \		"mmcboot=echo Booting from mmc ...; " \		"run mmcargs; " \		"bootm ${kloadaddr}\0" \	"nandboot=echo Booting from nand ...; " \		"run nandargs; " \		"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \		"bootm ${loadaddr}\0" \	"spiboot=echo Booting from spi ...; " \		"run spiargs; " \		"sf probe ${spibusno}:0; " \		"sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; " \		"bootm ${loadaddr}\0" \	"netboot=echo Booting from network ...; " \		"setenv autoload no; " \		"dhcp; " \		"tftp ${loadaddr} ${bootfile}; " \		"run netargs; " \		"bootm ${loadaddr}\0" \	"ramboot=echo Booting from ramdisk ...; " \		"run ramargs; " \		"bootm ${loadaddr}\0" \	"findfdt="\		"if test $board_name = A335BONE; then " \			"setenv fdtfile am335x-bone.dtb; fi; " \		"if test $board_name = A33515BB; then " \			"setenv fdtfile am335x-evm.dtb; fi; " \		"if test $board_name = A335X_SK; then " \			"setenv fdtfile am335x-evmsk.dtb; fi\0"

这么多参数不是所有的都是有用的。

当uboot自动启动内核时,调用的命令是bootcmd,内核参数是bootargs

先看bootcmd,在include/env_default.h中:

#ifdef	CONFIG_BOOTCOMMAND	"bootcmd="	CONFIG_BOOTCOMMAND		"\0"#endif

CONFIG_BOOTCOMMAND的定义在am335x_evm.h中:

#define CONFIG_BOOTCOMMAND \	"mmc dev ${mmcdev}; if mmc rescan; then " \		"echo SD/MMC found on device ${mmcdev};" \		"if run loadbootenv; then " \    看上面loadbootenv的定义,会发现这条命令会启动失败			"echo Loaded environment from ${bootenv};" \			"run importbootenv;" \		"fi;" \		"if test -n $uenvcmd; then " \			"echo Running uenvcmd ...;" \			"run uenvcmd;" \		"fi;" \		"if run loaduimagefat; then " \     这条会启动成功,看这条			"run mmcboot;" \          这条命令会执行		"elif run loaduimage; then " \			"run mmcboot;" \		"else " \			"echo Could not find ${bootfile} ;" \		"fi;" \	"else " \		"run nandboot;" \	"fi;" \

loaduimagefat的定义:

loaduimagefat=fatload mmc ${mmcdev}:3 ${kloadaddr} ${bootfile}

当命令执行run mmcboot时,

"mmcboot=echo Booting from mmc ...; " \		"run mmcargs; " \		"bootm ${kloadaddr}\0" \

当执行run mmcargs,

"mmcargs=run bootargs_defaults;" \		"setenv bootargs ${bootargs} " \		"androidboot.console=ttyO0 " \		"root=${mmcroot} " \		"rootfstype=${mmcrootfstype} emmcboot init=/init ip=${ip_method}\0" \

这里使用setenv bootargs设置了内核启动参数。

启动参数是:

console=ttyO0,115200n8 androidboot.console=ttyO0 root=/dev/mmcblk0p4 rw rootfstype=ext4 rootwait emmcboot init=/init ip=off

转载地址:https://blog.csdn.net/xgbing/article/details/102809667 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:s5p4418分区
下一篇:linux内核文档汇集

发表评论

最新留言

不错!
[***.144.177.141]2024年04月09日 19时07分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章