一、开发背景
由于开发阶段需要频繁修改内核镜像文件和根文件系统,如果每次修改都通过烧写 emmc 或者烧录 sd卡制卡过于繁琐,所以需要通过网络启动和加载
二、开发需求
内核镜像文件(zImage)和根文件系统(rootfs)创建好后,存放于 Ubuntu 中,开发板启动过程中自动提取对应的文件。
三、开发环境
Linux Ubuntu 4.15.0-65-generic + i.mx6d(cortex-A9)
四、实现步骤
所需材料:zImage、imx6dl-c-sabresd.dtb 和 rootfs(解压包)
1、Ubuntu 安装 tftp,主要用于传输 zImage,拷贝的形式传输,安装方法自行百度
2、Ubuntu 安装 nfs,主要用于文件系统共享,鉴于文件系统比较大,不适合拷贝传输,采用共享的形式,安装方法自行百度
3、linux-arm 进入 uboot 后设置 bootcmd 和 bootargs
bootcmd 用于加载内核和设备树, bootargs用于将参数传递给内核,进而启动对应的文件系统
setenv bootcmd 'tftp 12000000 zImage; tftp 18000000 imx6dl-c-sabresd.dtb; bootz 12000000 - 18000000'
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=172.16.21.34:/home/yangjinghui/mx6d/nfs/rootfs,proto=tcp rw ip=172.16.21.88:172.16.21.34:172.16.21.254:255.255.255.0::eth0:off'
saveenv
其中 0x12000000 是内核的起始地址,0x18000000 是设备树的起始地址,ubuntu 网络地址:172.16.21.34,开发板地址:172.16.21.88,文件系统在 ubuntu 下的路径:/home/yangjinghui/mx6d/nfs/rootfs
注意:开发板的 mac 地址需要设置,但是不能和 ubuntu 的地址一样。否者会加载失败
标签:uboot,zImage,172.16,文件系统,nfs,内核,Ubuntu From: https://www.cnblogs.com/yangjinghui/p/17655039.html