0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从网络启动linux系统如何做调试

玩转单片机 来源:玩转单片机 作者:玩转单片机 2022-10-09 15:23 次阅读

网络启动 linux 系统的唯一目的就是为了调试!不管是为了调试 linux 系统还是 linux 下的驱动。每次修改 linux 系统文件或者 linux 下的某个驱动以后都要将其烧写到 EMMC 中去测试,这样太麻烦了。我们可以设置 linux 从网络启动,也就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中,这样每次重新编译 linux 内核或者某个 linux 驱动以后只需要使用 cp 命令将其拷贝到这个指定的文件夹中即可,这样就不用需要频繁的烧写 EMMC,这样就加快了开发速度。

|配置网络

uboot是支持网络的,在移植uboot的时候一般都要调通网络功能,因为在移植linuxkernel的时候需要使用到uboot的网络功能做调试。uboot支持大量的网络相关命令,比如 dhcp、ping、nfs 和 tftpboot。

cd34d262-47a1-11ed-a3b6-dac502259ad0.png

(启动时打印信息

cd5dd450-47a1-11ed-a3b6-dac502259ad0.png

(网络相关的变量)

1、连接网线,网线一定要接在左边那个网口,uboot的FEC1就是这个网口;

2、 配置uboot的网络,把下面命令全部输入uboot面板中;

setenvipaddr192.168.2.50//开发板IP地址
setenv ethaddr b8:ae:1d:01:00:00  //开发板网卡 MAC 地址
setenvgatewayip192.168.2.1//开发板默认网关
setenv netmask 255.255.255.0  //开发板子网掩码
setenvserverip192.168.2.55/服务器地址,也就是Ubuntu地址
saveenv//保存环境变量

上面的配置不一定适合所有,请根据实际网络进行配置:

Windows电脑的cmd中的ipconfig指令来查看;

linux的电脑使用ifconfig指令来查看;

注意:虚拟机中的ubuntu要使用【桥接】,然后在【虚拟网络编辑器】中添加桥接的网络,不懂就百度一下,一定要保证物理机和虚拟机的网络在同一个网段,并且能ping通,若ping不通物理机,可以关闭【防火墙】再尝试;

3、测试是否ping通

cdb10f44-47a1-11ed-a3b6-dac502259ad0.png

| 搭建TFTP服务

tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa,命令如下:

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

TFTP也需要一个文件夹来存放文件,在用户目录下新建一个目录,示例命令如下:

//创建文件夹
mkdir /home/noah/linux/tftpboot
// 赋予权限
chmod 777 /home/noah/linux/tftpboot

最后配置 tftp,安装完成以后新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,然后在里面输入如下内容:

server tftp
{
  socket_type = dgram
  protocol = udp
  wait = yes
  user = root
  server = /usr/sbin/in.tftpd
  server_args = -s /home/noah/linux/tftpboot/
  disable = no
  per_source = 11
  cps = 100 2
  flags = IPv4
}

cdfe9a02-47a1-11ed-a3b6-dac502259ad0.png

配置完后启动tftp服务,命令如下:

sudo service tftpd-hpa start

打开/etc/default/tftpd-hpa文件,将其修改为如下所示内容:

# /etc/default/tftpd-hpa


TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/noah/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
TFTP_DIRECTORY 就是上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。 最后输入如下命令, 重启 tftp 服务器:
sudo service tftpd-hpa restart
tftp 服务器已经搭建好了,接下来就是使用了。 | 测试验证 将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:
chmod 777 zImage

ce36eb0a-47a1-11ed-a3b6-dac502259ad0.png

uboot串口交互指令中的「tftp命令格式」如下:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]

loadAddress:文件在DRAM中的存放地址;

[[hostIPaddr:]bootfilename]:要从Ubuntu中下载的文件;

注意:tftp传输文件,不需要输入文件在Ubuntu中的完整路径,只需要输入文件名即可。

比如我们现在将 tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处,命令如下:

tftp 80800000 zImage

ce4fc62a-47a1-11ed-a3b6-dac502259ad0.png

|启动Linux

1、设置环境变量,命令如下:

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk-emmc.dtb; bootz 80800000 - 83000000'
saveenv

2、通过tftp将zImage和设备树下载到板子的RAM中,命令如下:

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk-emmc.dtb

使用到的文件有「野火提供的yocto的zImage和dtb文件」,可以在野火公开文件包中找到;

3、启动内核,命令如下:

bootz 80800000 - 83000000

ce766500-47a1-11ed-a3b6-dac502259ad0.png

4、启动成功

cedf7e0a-47a1-11ed-a3b6-dac502259ad0.png

至此,uboot的移植基本完成,可以启动Linux内核。启动内核之后,uboot的使命就完成了。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26920
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30196
  • emmc
    +关注

    关注

    6

    文章

    180

    浏览量

    52018

原文标题:i.MX6ULL|从网络启动 Linux 系统

文章出处:【微信号:玩转单片机,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    教你如何快速启动Linux 系统

    实时不好,比如启动时间过长。本文主要就如何加快Linux 系统启动速度进行了总结和探讨。深圳发烧友双节推出免费公开课:嵌入式、单片机、ARM、MIPS、FPGA、Android等技术
    发表于 09-22 14:44

    教你如何快速启动Linux 系统

    实时不好,比如启动时间过长。本文主要就如何加快Linux 系统启动速度进行了总结和探讨。二、 系统启动流程一个基于
    发表于 09-27 11:07

    教你如何快速启动Linux 系统

    教你如何快速启动Linux 系统 加速启动的方法以上流程中每一步都可以进行优化,每步的优化方法如下:1. 为加快Flash 读取内核的
    发表于 08-23 15:42

    教你如何快速启动Linux 系统

    实时不好,比如启动时间过长。本文主要就如何加快Linux 系统启动速度进行了总结和探讨。二、 系统启动流程一个基于
    发表于 04-16 16:28

    Linux系统中的tomcat服务启动

    Linux系统启动一个服务是通过service 这个命令,service [服务名] [选项],例如service networking start ,用来启动网络服务。其实serv
    发表于 07-08 08:39

    Linux系统启动卡制作及系统固化

    观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动
    发表于 09-17 16:16

    Linux系统启动卡制作及系统固化

    。用时约5min,eMMC成功固化Linux系统,同时串口调试终端打印提示信息。3.3 eMMC启动
    发表于 06-08 14:51

    如何通过网络升级嵌入式系统linux内核

    通过网络升级嵌入式系统linux内核1、首先修改u-boot分配两个kernel分区,kernel_old和kernel_new开机的时候默认kerner_old
    发表于 12-16 06:48

    请问linux-3.0.35系统如何使用TF卡启动

    linux-3.0.35系统在用户手册上目前只有SD烧写和OTG烧写启动,请问需要怎么样才能用TF卡启动?因为
    发表于 01-07 08:08

    如何做材料行业转为电子?

    如何做材料行业转为电子行业
    发表于 04-08 08:54

    基于LINUX系统的IPv6网络安装与调试

    基于LINUX系统的IPv6网络安装与调试:简要介绍了下一代互联网(即IPv6 网络) 的通信协议,重点说明IPv6 的地址结构特点及其管理
    发表于 01-01 11:37 10次下载

    如何做grub启动

    如何做grub启动盘 有时候我们的电脑可能出现系统无法引导的情况,比如说你重装了windows,把MBR给重写了,又比如像我今天这样,把装了grub的系统给格了
    发表于 01-18 12:58 1929次阅读

    实例分析LINUX系统的静/动态集成调试模式

    现有的嵌入式LINUX系统开发过程中,所有的工程师都疲惫于使用两种不同的调试模式分别调试系统的内核和应用程序。首先通过一个JTAG
    发表于 11-06 11:00 0次下载
    实例分析<b class='flag-5'>LINUX</b><b class='flag-5'>系统</b>的静/动态集成<b class='flag-5'>调试</b>模式

    linux系统启动项设置

    在使用双系统的时候,我们需要设置启动项来选择要启动的操作系统。在Linux系统中,设置双
    的头像 发表于 11-28 15:05 506次阅读

    3562-Linux系统启动卡制作及系统固化

    启动卡”或“SD 升级卡”。“SD 启动卡” 可通过 Micro SD 模式启动系统,适用于日常调试;“SD 升级卡”适用于批量生产时,
    的头像 发表于 03-05 15:58 88次阅读
    3562-<b class='flag-5'>Linux</b><b class='flag-5'>系统启动</b>卡制作及<b class='flag-5'>系统</b>固化