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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月09日 19时07分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现
2019-04-27
javac编译原理和javac命令行的使用
2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器
2019-04-27
Unity使用RenderTexture实现裁切3D模型
2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一
2019-04-27
Unity iOS接SDK,定制UnityAppController
2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C)
2019-04-27
记一次iOS闪退问题的定位:NSLog闪退
2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS)
2019-04-27
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标
2019-04-27
Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息)
2019-04-27
Unity中获取物体的尺寸(size)的三种方法
2019-04-27
Unity中的关节组件和绳子效果的实现
2019-04-27
Unity可视化编程插件: Bolt,可以像UE4的蓝图那样啦
2019-04-27
Android的.dex、.odex与.oat文件扫盲
2019-04-27
Unity移动应用如何在Bugly上查看崩溃堆栈
2019-04-27
一分钟搞明白Android的.so文件、ABI和CPU的关系
2019-04-27
UGUI的Text描边Outline拓展
2019-04-27