博客
关于我
Uboot 网络加载并启动Linux - 基于移植好的网络功能
阅读量:569 次
发布时间:2019-03-07

本文共 1817 字,大约阅读时间需要 6 分钟。

前言

在开发过程中,已经成功实现了DM9621网卡的移植工作。接下来,将重点介绍基于Uboot的网络命令集应用,包括通过tftpboot加载内核和设备树等内容,最后实现通过网络环境加载并启动Linux系统。


使能DM9621网卡

说明

由于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命令

在成功设置网卡功能后,可以通过ping命令验证网络连接状态。以下是示例命令:

u-boot # ping 192.168.1.1u-boot # ping 192.168.1.141

此时如果能接收回复,说明网络已经正常工作。

tftpboot命令

通过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/

你可能感兴趣的文章
NS3 IP首部校验和
查看>>
NSDateFormatter的替代方法
查看>>
NSError 的使用方法
查看>>
NSGA-Ⅲ源代码
查看>>
nsis 安装脚本示例(转)
查看>>
NSJSON的用法(oc系统自带的解析方法)
查看>>
nslookup 的基本知识与命令详解
查看>>
NSNumber与NSInteger的区别 -bei
查看>>
NSOperation基本操作
查看>>
NSRange 范围
查看>>
NSSet集合 无序的 不能重复的
查看>>
NSURLSession下载和断点续传
查看>>
NSUserdefault读书笔记
查看>>
NS图绘制工具推荐
查看>>
NT AUTHORITY\NETWORK SERVICE 权限问题
查看>>
NT symbols are incorrect, please fix symbols
查看>>
ntelliJ IDEA 报错:找不到包或者找不到符号
查看>>
NTFS文件权限管理实战
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>