博客
关于我
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/

你可能感兴趣的文章
Ossim4系统故障处理
查看>>
Spring赌上未来:响应式的 WebFlux 框架更优雅,性能更强!
查看>>
oss报UnknownHost,k8s设置hostAliases参数
查看>>
OSS报错The difference between the request time and the current time is too large
查看>>
OSS直传与UXCore-Uploader实践
查看>>
Spring详解Bean的生命周期
查看>>
OS模块
查看>>
OS第1章
查看>>
OS第2章 —— 进程
查看>>
OS第3章 —— 进程调度和死锁
查看>>
OS第5章
查看>>
OS第6章 —— 设备管理
查看>>
OTA测试
查看>>
Other User's Bloh Links
查看>>
others
查看>>
Oulipo
查看>>
Outlook 2010 Inside Out
查看>>
outlook 2016 接收发送无法及时收下邮件,如何更改接收时间?
查看>>
Outlook Express could not be started
查看>>
outlook express 故障
查看>>