本文共 1828 字,大约阅读时间需要 6 分钟。
在开发过程中,已经成功实现了DM9621网卡的移植工作。接下来,将重点介绍基于Uboot的网络命令集应用,包括通过tftpboot加载内核和设备树等内容,最后实现通过网络环境加载并启动Linux系统。
由于DM9621网卡是基于USB接口实现的,因此默认情况下Uboot通信默认是不启用的。为了让网卡正常工作,需要手动启动USB功能并启用DM9621网卡。
在Uboot Shell中执行以下命令:
u-boot # usb startu-boot # usb reset
此时会显示类似以下信息:
u-boot # usb startstarting USB...USB0: USB EHCI 1.00scanning bus 0 for devices...1 USB Device(s) found
接着设置相关的环境变量:
u-boot # setenv ethaddr 00:d8:1c:04:55:60u-boot # saveenv
注意事项:
刚烧录的Uboot环境变量中没有ethaddr,这意味着在启用网卡时会显示如下警告信息:Warning: dm9601_eth using MAC address from ROM
这属于正常现象,只需手动设置ethaddr环境变量即可,即可完成网卡的合法化设置。
在成功设置网卡功能后,可以通过ping命令验证网络连接状态。以下是示例命令:
u-boot # ping 192.168.1.1u-boot # ping 192.168.1.141
此时如果能接收回复,说明网络已经正常工作。
通过tftpboot命令可以从指定地址的TFTP服务器下载文件。以下是常见使用示例:
u-boot # tftpboot 0x40007000 uImageu-boot # tftpboot 0x41000000 exynos4412-itop-elite.dtb
注意事项:
tftpboot命令允许将指定文件加载到指定的内存地址中。在本文中,已经完成了对内核文件uImage和设备树文件(exynos4412-itop-elite.dtb)的获取和加载。在成功完成tftpboot操作后,只需要通过bootm命令启动内核即可。以下是启动示例:
u-boot # bootm 0x40007000 - 0x41000000
说明:
0x40007000:内核映像的加载地址0x41000000:设备树blob的加载地址启动完成后,Linux系统将从指定地址加载并继续运行。
为了节省手动操作的繁琐,可以通过设置bootcmd环境变量实现自动化启动。在完成以上操作后,请执行以下命令:
u-boot # setenv bootcmd 'usb start; usb reset; tftpboot 0x40007000 uImage; tftpboot 0x41000000 exynos4412-itop-elite.dtb; bootm 0x40007000 - 0x41000000; boot'u-boot # saveenv
接着设置bootargs以指定根文件系统和其他启动参数:
u-boot # setenv bootargs root=/dev/mmcblk1p1 rwu-boot # setenv bootargs rootfstype=ext4
或者如果需要使用NFS挂载根文件系统,则设置如下:
u-boot # setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.140:/home/jason/rootfs ip=192.168.1.141:192.168.1.140:192.168.1.1:255.255.255.0:itop:eth0:off rootfstype=ext4u-boot # saveenv
完成环境变量设置后,重启系统即可无需手动操作即可完成完整的Linux启动流程。
通过以上步骤,您已经成功实现了基于DM9621网卡的网络加载和系统启动。接下来的开发工作中,可以根据实际需求进一步优化系统性能和功能优化。祝您在技术探索的道路上碰撞出见解!
转载地址:http://kvdjz.baihongyu.com/