软件子系统各组成部分之间的层次与关联,怎样相互识别、配置与加载?
一、系统启动流程
bootloader(uboot) ————> Linux Kernel(uImage) ————> Rootfs(Init) ————> Applications
二、启动环境配置
uboot环境变量: printenv setenv saveenv tftpboot nand read/write …等等
baudrate 115200
bootdelay
bootcmd :在uboot命令行中输入boot或bootd运行bootcmd变量指定的命令进行启动
ipaddr, serverip, ethaddr,gatewayip
bootargs
bootargs内核启动参数:
bootargs '= ...'设置如下:
bootargs=root=/dev/nfs nfsroot=192.168.10.7:/home/hong/nfsroot ip=192.168.10.11 init=/linuxrc console=ttySAC0,115200
- root, rootfstype, nfsroot
- root=/dev/nfs nfsroot=nfsserver:path
- root=/dev/mtdblock2
mtdparts: mtdparts=mtd-id:@(),@()
mtdparts=s5pv210-nand:1M(boot),5M(kernel),80M(rootfs),426M(usrfs)
要想这个参数起作用,内核中的mtd驱动必须要支持,即内核配置时需要选上
`Device Drivers ---> Memory Technology Device (MTD) support ---> Command line partition table parsing`
rootfstype=jffs2/yaffs2/squashfs/ubifs/…
- ip:使用nfs时必须进行设置
ip=ip addr
ip=ip addr:server ip addr:gateway:netmask::which netcard:off
init, console
mem 限制linux内核的使用内存 mem=128M
三、启动参数设置:在uboot命令行中输入以下内容:
- setenv bootargs 'root=/dev/nfs nfsroot=192.168.10.7:/home/hong/nfsroot ip=192.168.10.11 init=/linuxrc console=ttySAC0,115200'
- setenv bootcmd 'tftpboot 20008000 tiny_uImage;bootm 20008000'
总结:
1. 收集信息:flash类型与分区(nand/nor/spi.etc), 内存大小, 根文件系统类型,网络参数等(参考SDK开发手册)
2. 配置参数:setenv bootargs ‘…’;saveenv;
3. 测试参数:确保内核镜像可以成功加载,必不可少的步骤