关于bootcmd与bootargs初解

                                    uboot中bootcmd与bootargs初解
科普:
U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。(详见百度百科)


由于我在移植内核和文件系统时需要设置uboot的环境变量,所以在这就对uboot各环境变量参数研究了一下。而其中最重要的两个环境变量为bootcmd和bootargs。


bootcmd:自启动时执行的首条命令。由此可见bootcmd的重要性,要是第一条命令就错了,那后面的就无法执行下去了。bootcmd指定了要从flash的哪里读数据,读多少数据,读到内存(一般为SDRAM)的哪里去,再从内存的哪里启动(执行)。


样板:bootcmd=nand read 30008000 100000 800000;bootm 30008000。


此处,bootcmd从flash的100000(即1M)处开始读800000(即8M)大小的数据到内存的30008000地址处,再从30008000地址处执行代码。(从何处读必须与之前写的位置对应,从哪里开始写的就从哪里开始读,切记不可弄错,以保证数据的完整性。而读多少就没有硬性要求,只需要记住,读多不读少,稍微读大些就行了,但不可过大,不可读到下一段数据中,即保证读的大小在你做的内核的分区表中内核代码分区里。读到内存中就没什么好讲的,代码都是在内存中运行的。bootm即指定从30008000处启动内核。)


bootargs:传递给内核启动参数。也是非常重要的一个环境变量,如果传递了错误的参数,内核便会启动失败。


样板:bootargs=noinitrd root=/dev/mtdblock4 rootfstype=jffs2 init=/linuxrc console=ttyS0,115200


此处各参数的含义:
noinitrd:
当系统不是使用ramdisk文件系统(内嵌在内核里的文件系统)启动时,指定使用该参数。
如果使用ramdisk文件系统,需要指定initrd=r_addr,size, r_addr表示initrd在内存中的位置,size表示initrd的大小。


root:
用来指定rootfs(根文件系统)的挂载位置(root=/dev/mtdblock4在第四分区)
可在后面加上权限(如rw)


rootfstype:
当文件系统不是内嵌在内核中,而是与内核一起存放在flash中时(例如jffs2),需指定文件系统类型,否则无法挂载。


init:
init指定的是内核启起来后,进入系统中运行的第一个脚本,一般init=/linuxrc(linuxrc是系统启动时执行的脚本,用于加载模块驱动等,运行在init进程之前,退出后才调用init,一般linuxrc为一个链接,连接到bin/busybox,所以写法不固定)


console:
指定串口终端设备,指定与终端相应的串口波特率,指定之后可用secureCRT之类的终端仿真程序操作开发板。


上述各参数基本上是必须指定的,还有些可选定的参数可自行查找百度。


uboot环境变量除了bootcmd和bootargs之外,其余的变量在移植内核时,很少用到。


uboot内可自行定义环境变量,一般用于下载内核和文件系统和顺序执行擦,写之类uboot自带的命令,用分号隔开。
例:set bbl 'tftp 30008000 linuxrom.bin;nand erase 100000 600000;nand write 30008000 100000 600000'
上诉例子实现了下载linuxrom.bin,擦除100000(1M)之后的600000(6M)大小的空间,并将内存30008000里的linuxrom.bin写到100000(1M)之后的600000(6M)大小的空间里。(set后记得save,不然下次上电后会丢失)


最后,在擦的时候,一定要注意别把uboot给擦掉了,不然就得重烧了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值