背景:
在嵌入式开发中,经常需要对系统的各个部分进行修改。倘若每次修改都烧写到板子中,一来浪费时间,其次影响存储介质寿命。
所以,需要一些手段来避免此类问题。
概览:
编译uboot
将uboot写入SD卡,并通过硬件设置从sd卡启动uboot程序
编译kernel,设置其可以通过NFS挂载根文件系统
开发环境安装TFTP服务器、NFS服务器
目标环境设置uboot参数,并进行测试
制作根文件系统(optional)
将uboot参数改回,烧写各部分到板子上
第2步不一定是用sd卡,根据硬件特性的差异决定,也可以考虑将uboot写入板子中,再进行此后的操作。
在这里我们重点介绍第三步以及第五步。其他步骤请参考其他资料。第三步以修改bootcmd为主,第五步以修改bootargs为主。
设置uboot,使其通过下载并引导内核
1.确保配置好了tftp服务器,并在tftp服务器指定的根目录下存放kernel镜像
2.明白镜像的运行地址位于何处(第三步中需要用到)
3.在uboot的下载模式中,设置bootcmd
setenv bootcmd 'tftp 0x42000000 kernel;bootm 0x42000000'
saveenv
嵌入式系统Linux内核对nfs文件系统的支持:
这里只做简单的介绍,具体细节可以参考:《配置uboot指定nfs挂载根文件系统》
1.进入内核配置页,根据以下参数进行配置
-> Networking support
-> Networking options
[*] IP: kernel level autoconfiguration
-> File systems
[*] Network File Systems
<*> NFS client support
<*> NFS client support for NFS version
[*] NFS client support for the NFSv3 ACL protocol extension
[*] Root file system on NFS
2.uboot修改bootargs(最好是备份好bootargs) 添加下划线部分*其中的ip根据自己的实际情况进行修改
setenv bootargs 'root=/dev/nfs nfsroot=${serverip}:/xxx/fs,v3,tcp rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask} ::eth0:on init=/linuxrc console=ttyAMA0,115200'
saveenv
这样一来,调试就非常方便而且高效了。
改编自:《Tiny210v2( S5PV210 )平台下: 利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS) 》