【IMX6ULL驱动开发学习】10.设置uboot使用网络加载zImage和dtb

news2025/1/10 16:27:02

1. 在uboot中设置网络

首先启动自己的板子,使用 ifconfig 命令或者 ifconfig -a 命令查看自己网卡的地址

ifconfig
ifconfig -a

我的网卡地址是这个

52:15:66:2E:16:71

接着设置自己的ip

setenv ipaddr 192.168.1.100

设置服务器ip

 setenv serverip 192.168.1.200

保存变量

saveenv

重启后按任意键进入uboot
测试ping命令

mmc1(part 0) is current device
Net:   FEC1
Normal Boot
Hit any key to stop autoboot:  0 
=> 
=> ping 192.168.1.200
FEC1 Waiting for PHY auto negotiation to complete.... done
Using FEC1 device
host 192.168.1.200 is alive
=> 

出现这两句,就说明网络通了

Using FEC1 device
host 192.168.1.200 is alive

2. 服务器端设置tftp服务

在家目录下新建tftp共享文件夹

mkdir tftpboot
chmod 777 tftpboot

设置 /etc/default/tftpd-hpa 文件
主要设置 TFTP_DIRECTORY=“/home/me/tftpboot”,设置tftp共享目录

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/me/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
#TFTP_OPTIONS="--secure"

将内核文件和设备树文件复制到tftp共享目录下
zImage 的路径 /home/…/…/Linux内核文件/arch/arm/boot/
dtb 的路径 /home/…/…/Linux内核文件/arch/arm/boot/dts

cp zImage /home/me/tftpboot
cp ***.dtb /home/me/tftpboot

在这里插入图片描述

重启服务

sudo service tftpd-hpa restart

3. 测试手动加载内核 & 设备树
启动开发板,按任意键进入uboot命令行
(1)加载内核

tftp 80800000 zImage

(2)加载设备树

tftp 83000000 imx6ull-alientek-emmc.dtb

(3)启动内核和设备树

bootz 80800000 - 83000000

在这里插入图片描述


4. 自动从网络加载内核与设备树(设置 ubootargs 和 ubootcmd)

输入 pri 查看当前uboot内的变量,把 ubootargs 和 ubootcmd 先保存下来
用于之后恢复原值

在这里插入图片描述

(1)设置 ubootargs

setenv bootargs 'console=tty0 console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

console用来设置 linux 终端(或者叫控制台),也就是通过什么设备来和Linux进行交互,是串口还是屏幕?
这里设置console为ttymxc0,因为linux启动以后I.MX6ULL 的串口1在linux下的设备文件就是/dev/ttymxc0,115200是串口的波特率
= - = - = - = - = - = - =
root用来设置根文件系统的位置,root=/dev/mmcblk1p2 用于指明根文件系统存放在mmcblk1 设备的分区 2 中。
root 后面有rootwait rw,rootwait表示等待 mmc 设备初始化完成以后再挂载,否则的话mmc 设备还没初始化完成就挂载根文件系统会出错的。rw表示根文件系统是可以读写的。

(2)设置ubootcmd(Uboot倒计时后要后执行的命令)

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'

最后保存变量,然后重启uboot

saveenv

重启

boot

(3)测试
在这里插入图片描述
恢复 bootcmd 变量值,从emmc中启动内核和设备树

setenv bootcmd 'run findfdt;mmc dev ${mmcdev};mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi'

最后保存变量,然后重启uboot

saveenv

重启

boot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何系列 如何在单机和集群环境保证代码线程安全

文章目录 什么是线程安全什么场景下会发生如何保证线程安全单机环境1.无状态设计2.使用final关键字(不可变)3.使用synchronized关键字4.使用volatile关键字5.使用java.util.concurrent.atomic包中的原子包装类6.使用java.util.concurrent.locks包中的锁7…

【ROS2】(导航-05)在 Navigation-ROS 2上加载地图

一、说明 如何建立ROS2的导航地图?在ROS2的服务器中,其中有一个地图服务器,该服务器与参数服务器类同,当外界节点请求的时候,将新的地图导入导航系统中。注意,这里新的地图就是因为场景足够大时&#xff0c…

Docker常见使用

Docker常见使用 1、Docker安装 ## 下载阿里源repo文件 $ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo $ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum clean …

Linux系统编程(多进程编程深入2)

文章目录 前言一、进程退出状态二、进程退出状态宏的使用三、wait的局限性四、waitpid函数讲解五、使用fork函数创建两次孙进程解决子问题总结 前言 本篇文章继续讲解多线程编程。 一、进程退出状态 进程退出状态(Exit Status)指的是进程在终止时返回…

HTML中的常用标签用法

作者:爱塔居 专栏:javaEE 作者简介:大三学生,希望和大家一起进步 目录 一、注释标签 二、标题标签:h1-h6 三、段落标签:p 四、换行标签:br 五、格式化标签 六、图片标签:img 七、超链…

快速排序到底有多快

作者主页:paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《算法详解》专栏,本专栏是针对于大学生,编程小白精心…

ECS服务器上搭建一个Java开发环境

ECS服务器上搭建一个Java开发环境 本步骤将在ECS服务器上搭建一个Java开发环境,包括OpenJDK 1.8和Maven 3.6.3,并配置阿里云镜像仓库。 执行如下命令,安装OpenJDK 1.8。 yum -y install java-1.8.0-openjdk-devel.x86_64执行如下命令&…

【NLP】用python实现文本转语音处理

一、说明 介绍一款python调用库,离线软件包pyttsx3 API,它能够将文字转化成语音文件。Python 中有多种 API 可用于将文本转换为语音。pyttsx3 是一个非常易于使用的工具,可将输入的文本转换为音频。与其它类似的库不同,它可以离线…

AutoSAR系列讲解(入门篇)2.2-SWC的类型(APPL)

SWC的类型 一、原子级的SWC(Atomic SWC) 二、集合级的SWC(Composition SWC) 三、特殊的SWC 一、原子级的SWC(Atomic SWC) 原子级的SWC(Atomic SWC):故名思意&#xff…

git 的基本操作

1. git建立本地仓库 在想要建立的目录下输入命令 git init 我们可以看一下 .git目录下有什么 2. 配置git本地仓库 配置用户的 name 和 email 命令:git config [...] 配置完后,我们像查看一下 刚才的配置 2.1 查看配置命令 git config -l 2.2 删除…

【CS144-2021】Stanford 计算机网络课程学习

CS144 2019 Fall:https://kangyupl.gitee.io/cs144.github.io/2020 Fall:https://github.com/lawliet9712/Stanford-CS144-2021【推荐】2021 Fall:https://github.com/Kiprey/sponge 前前后后弄了半个月,终于啃完 CS144 了&#…

VLAN基础知识3_VLAN间三层通信(单臂路由)

目录 1.VLAN单臂路由简介 2.基于单臂路由VLAN间三层通信原理 3.VLAN间三层通信单臂路由实验 3.1 常用配置命令 3.2 实验配置步骤 3.3实验效果 1.VLAN单臂路由简介 单臂路由(One-Arm Router)是一种网络拓扑结构,其中一个路由器的一个接…

动手写一个 Java JWT Token 生成组件

OAuth2 中默认使用 Bearer Tokens (一般用 UUID 值)作为 token 的数据格式,但也支持升级使用 JSON Web Token(JWT) 来作为 token 的数据格式。实际来说,OAuth 规范中并无限制 Token 采取何种格式。今天我们就采用 JWT 来作为 Token,它的一个好…

四种缓存的避坑总结

背景 分布式、缓存、异步和多线程被称为互联网开发的四大法宝。今天我总结一下项目开发中常接触的四种缓存实际项目中遇到过的问题。 JVM堆内缓存 JVM堆内缓存因为可以避免memcache、redis等集中式缓存网络通信故障问题,目前还在项目中广泛使用。 堆内缓存需要注…

FFmpeg5.0源码阅读——avformat_find_stream_info

摘要:在使用FFmpeg库时通常使用avformat_find_stream_info相关函数来探测流的基本信息,为了更加深入理解FFmpeg的基本流程,本文根据FFmpeg 5.0的源码详细描述了该函数的具体实现。   关键字:FFmpeg   读者须知:读者…

数学之美:神奇的杨辉三角形,比帕斯卡早了近600年,致敬中国古代数学家(63)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 什么是杨辉三角形? 杨辉三角形有什么规律? 中国古代数学家杨辉。 西方科学家帕斯卡。 杨…

【开源与项目实战:开源实战】81 | 开源实战三(上):借Google Guava学习发现和开发通用功能模块

上几节课,我们拿 Unix 这个超级大型开源软件的开发作为引子,从代码设计编写和研发管理两个角度,讲了如何应对大型复杂项目的开发。接下来,我们再讲一下 Google 开源的 Java 开发库 Google Guava。 Google Guava 是一个非常成功、…

智能指针类模板:auto_ptr、unique_ptr、shared_ptr的原理与使用

1. 什么是智能指针 智能指针是行为类似于指针的类对象,通常用于管理动态内存分配。C程序通常手动动态分配堆内存,但如果动态分配的内存没有释放,则会发生内存泄漏。 例如代码段1.1。 // 代码段1.1 void demo() {double *pd new double;*pd…

使用STM32F103的串口实现IAP程序升级功能

使用STM32F103的串口实现IAP程序升级功能 🎬IAP程序烧录全过程演示: ✨这几天折腾IAP升级功能,狂补了很多相关BootLoader相关的知识。本来最想实现IAP升级程序的方式是,基于SPI通讯的SD卡,借助挂载的FatFS文件系统&am…