프로그램 사용/u-boot2009. 12. 30. 12:26
당연한것 일수도 있지만, u-boot에서 kernel로 argument를 날려주고
그 인자들 중, NIC 관련 변수들을 파싱하여 자동으로 네트워크를 설정하게 되는데
인자를 ' '(홀따옴표)로 감싸주어 커널에서 파싱하도록 할 수 있다.

물론, bootargs에 한번에 넣어서는 불가능하며,
run 명령어를 통해서 인자를 생성후 넘겨주는 방식을 취한다.

We can use U-Boot environment variables to store all necessary configuration parameters:

=> setenv ipaddr 192.168.100.6
=> setenv serverip 192.168.1.1
=> setenv netmask 255.255.0.0
=> setenv hostname canyonlands
=> setenv rootpath /opt/eldk-4.2/ppc_4xx
=> saveenv

Then you can use these variables to build the boot arguments to be passed to the Linux kernel:

=> setenv nfsargs 'root=/dev/nfs rw nfsroot=${serverip}:${rootpath}'


Note: You cannot use this method directly to define for example the "bootargs" environment variable, as the implicit usage of this variable by the "bootm" command will not trigger variable expansion - this happens only when using the "setenv" command.

[링크 : http://www.denx.de/wiki/DULG/LinuxBootArgs]


사용예
setenv nfsargs 'setenv bootargs console=ttyAS0,115200 root=/dev/mtdblock2 rootfstype=cramfs'
setenv addip 'setenv bootargs ${bootargs} nwhwconf=device:eth0,hwaddr:${ethaddr}
                    ip=${ipaddr}::${gateway}:${netmask}:${histname}::off'
setenv bootcmd 'run nfsargs addip\; tftp 0x84400000 uImage\; bootm'

아무튼, bootcmd 에 'run' 을 통해서 bootargs를 생성후 임시 변수를 커널로 넘겨주는 방식이다.
(실제로 bootargs 변수는 uboot에 존재하지 않는다.)
Posted by 구차니