Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器

测试uboot命令,搭建nfs服务器和tftp服务器,是测试uboot非常关键的一步。跳过这一节,后面可能要踩坑。

一、输入“help回车”,查询uboot所支持的命令

二、输入“? bootz回车”,查询“bootz”怎么用

注意:和boot一样,用来启动 Linux 系统的

三、常用的查询命令

1、输入“? bdinfo回车”,查询“bdinfo”怎么用

输入“bdinfo回车”,查询“开发板的信息

2、输入“printenv回车”,打印环境变量

3、输入“version回车”,打印uboot当前的版本号

四、输入“reset回车”,设置开发板重启

五、输入“? setenv回车”,查询“setenv”怎么用

六、修改环境变量,setenv和saveenv是成对出现的

见下图:

七、新建环境变量

输入“setenv author 'console=ttySTM0,115200 root=/dev/mmcblk2p2 rootwait rw'回车

输入“saveenv回车”,保存新建环境变量“author”,及其值。

输入“reset回车”,重启开发板

八、输入“printenv回车”,打印环境变量

九、删除环境变量

输入“setenv author回车”,将“author”设置为空值,就可以删除环境变量

输入“saveenv回车”,保存新建环境变量“author”,及其值。

输入“reset回车”,重启开发板

输入“printenv回车”,打印环境变量

十、内存操作命令

1、显示指定内存地址的值

输入“? md回车”,查询md的用法

注意:在uboot里,所有的数据为16进制

输入“md.b C0100000 14回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

输入“md.w C0100000 A回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

输入“md.l C0100000 5回车”,查询内存首地址为“0xC0100000”开始处的20个字节;

2、修改指定内存地址的值

输入“? nm回车”,查询“nm”的用法

使用nm将内存地址为c0100000处的4个字节修改为12345678,然后再改回原来的值。

3、输入“? mm回车”,查询“mm”的用法

修改指定地址的内存值,和“nm用法”不同的地方是:它修改内存数据后,内存的地址会自动增加。

使用mm将内存地址为c0100000处的4个字节修改为12345670,然后再改回原来的值。

4、使用“一个数据”填充“指定内存起始地址”的一段内存

使用mw将内存地址为c0100000处的12个4字节修改为“0A0A0A0A”。

十一、清除命令cls

在调试串口按回车,会一直执行“上次执行的命令”,为了取消,可以输入“cls”清除“上次执行的命令”;

输入cls就可以清除“自动执行上条命令”

十二、数据拷贝命令cp

将内存首地址为“C0100000”处的12个4字节数据拷贝到内存首地址为“C0100030”处

十三、比较两段内存的数据是否相等CMP

十四、网络操作命令

1、输入“ifconfig”查询虚拟机的IP地址,加下图:

2、将开发板的USB串口连接好,打开串口调试,设置网路变量

输入“setenv ipaddr 192.168.2.178回车”,设置开发板的IP地址为“192.168.2.178”

输入“setenv ethaddr 00:04:9f:04:d2:36回车”,设置开发的MAC地址为“00:04:9f:04:d2:36”

输入“setenv gatewayip 192.168.2.1回车”,设置网关地址为“192.168.2.1”

输入“setenv netmask 255.255.255.0回车”,设置子网掩码为“255.255.255.0”

输入“setenv serverip 192.168.2.180回车”,设置ubuntu主机的IP地址为“192.168.2.180”

输入“saveenv回车”,保存环境变量

3、输入“dhcp回车”,路由器获分配IP地址给开发板

十五、搭建nfs服务器

nfs命令功能:使用uboot中的nfs命令将ubuntu中的文件下载到开发板的DRAM内存中;其次是用来从ubuntu下载内核镜像uImage和设备树

uImage文件路径为08、系统镜像\08、系统镜像\02、出厂系统镜像\03、linux-mp1-5.4.31-gca8f6cddb-v1.7 。

stm32mp157d-atk.dtb文件路径为08、系统镜像\08、系统镜像\02、出厂系统镜像\03、linux-mp1-5.4.31-gca8f6cddb-v1.7 。

1、将uImage文件发送到虚拟机“zgq/linux/nfs”目录下

2、输入“ls回车”,列出“nfs”目录下的文件和文件夹

3、输入“nfs C2000000 192.168.2.180:/home/zgq/linux/nfs/uImage回车”从服务器下载uImage,保存到内存首地址为“C2000000”

十六、在ubuntu上搭建TFTP服务器

tftp命令功能:用来从ubuntu下载内核镜像uImage和设备树。

1、安装 tfp-hpa 和 tfpd-hpa,输入“sudo apt-get install tftp-hpa tftpd-hpa回车

2、输入“mkdir tftpboot回车”,创建“tftpboot”目录

3、输入“chmod 777 /home/zgq/linux/tftpboot回车”,给tftpboot赋可执行权限,非常重要

配置“tftp”创建“/etc/xinetd.d”目录

输入“cd /etc/回车

输入“sudo mkdir xinetd.d回车

输入“ls回车

4、输入“sudo vi tftp回车”,新建一个tftp文件

server tftp

{

        socket_type = dgram

        protocol = udp

        wait = yes

        user = root

        server = /usr/sbin/in.tftpd

        server_args = -s /home/zgq/linux/tftpboot/

        disable = no

        per_source = 11

        cps = 100 2

        flags = IPv4

}

5、按“ESC”,再输入“:wq回车”,保存文件。

6、输入“sudo service tftpd-hpa start回车”,启动tftp服务器

7、输入“sudo vi /etc/default/tftpd-hpa回车

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/zgq/linux/tftpboot"

TFTP_ADDRESS=":69"

TFTP_OPTIONS="-1 -c -s"

8、按“ESC”,再输入“:wq回车”,保存文件。

9、输入“sudo service tftpd-hpa restart回车”,重启“tftp服务器”

至此,“tftp服务器”搭建好了。

十七、使用tftp从ubuntu下载文件

1、将“uImage”拷贝到“tftpboot”目录下

输入“cd nfs/回车

输入“cp uImage /home/zgq/linux/tftpboot/回车

2、输入“chmod 777 uImage回车”,给uImage赋可执行权限

3、在串口输入“tftp C2000000 uImage回车”,将uImage下载到内存地址为C2000000地址处,实现从ubuntu下载文件,见下图:

十八、EMMC和SD卡操作命令

1、输入“mmc info回车”,查询SD卡的信息

2、查询EMMC信息

输入“mmc rescan回车”,扫描mmc

输入“mmc list回车”,列出mmc设备
输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc info回车”查看EMMC信息

3、查看EMMC分区

输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc part回车”,查看EMMC分区

4、读EMMC

输入“mmc dev 1回车”,切换到EMMC

输入“mmc read c0000000 400 10回车

从EMMC的第1024(0x400)个块开始,读取16(0x10)个块的数据到DRAM的0XC0000000地址处。

十九、EXT格式文件系统操作命令

1、查询EXT4格式设备的目录和文件信息

输入“mmc dev 1回车”,切换到EMMC设备

输入“mmc info回车”查询EMMC信息

2、输入“mmc part回车”查看EMMC分区

输入“ext4ls mmc 1:2”查看“boot分区”有哪些文件和目录

3、将EMMC中的uImage文件读到DRAM中

输入“ext4load mmc 1:2 C2000000 uImage回车”,将EMMC分区2中的uImage读到内存C2000000地址处。

4、将ubuntu中的uImage文件烧写到EMMC中,生成文件为“test_uImage”

输入“mmc dev 1回车”,切换到EMMC设备

输入“tftp C0000000 uImage回车”,使用tftp将uImage下载到内存C0000000的地址处。

输入“ext4write mmc 1:2 C0000000 /test_uImage 7ef8a0回车

输入“ext4ls mmc 1:2回车”查看“boot分区”有哪些文件和目录

见下图:

二十、使用网络下载uImage和设备树stm32mp157d-atk.dtb到内存再启动linux

1、使用FileZilla将uImage和设备树stm32mp157d-atk.dtb上传到tftpboot目录下,见下图:

2、给uImage和stm32mp157d-atk.dtb赋可执行权限,非常重要

输入“ls回车”,列出tftpboot目录下的文件和文件夹

输入“chmod 777 uImage回车

输入“ls回车”,列出tftpboot目录下的文件和文件夹发现uImage变成了可执行文件;

输入“chmod 777 stm32mp157d-atk.dtb回车

输入“ls回车”,列出tftpboot目录下的文件和文件夹,发现stm32mp157d-atk.dtb变成了可执行文件;

3、输入“tftp C2000000 uImage回车”,将uImage下载到DRAM中的C2000000地址处;

输入“tftp C4000000 stm32mp157d-atk.dtb回车”,将设备树下载到DRAM中的C4000000地址处;

4、输入“bootm c2000000 - c4000000回车”启动linux内核

二十一、从EMMC直接启动linux

输入“mmc dev 1回车”,切换到EMMC

输入“ext4ls mmc 1:2回车”查看“boot分区”是有uImage和stm32mp157d-atk-dtb

输入“ext4load mmc 1:2 c2000000 uImage回车”,将EMMC中的uImage文件加载到内存地址C2000000处

输入“ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb回车”,将EMMC中的stm32mp157d-atk.dtb文件加载到内存地址C4000000处

输入“bootm c2000000 - c4000000回车”启动linux内核

二十二、通过设置环境变量bootcmd的值,从EMMC启动linux系统

开发板上电,运行TF-A,然后是uboot,然后是bootcmd

出现“STM32MP>”时输入setenv bootcmd 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000',设置从EMMC启动linux系统

出现“STM32MP>”时输入: saveenv,保存bootcmd的值

出现“STM32MP>”时输入: boot回车,启动 Linux 系统

二十三、通过设置环境变量bootcmd的值,从网络启动linux系统

出现“STM32MP>”时输入setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 -c4000000',设置从网络启动linux系统

出现“STM32MP>”时输入: saveenv,保存bootcmd的值

出现“STM32MP>”时输入: boot,启动 Linux 系统

二十四、run命令

1、输入“setenv mybootemmc 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'回车

输入“saveenv回车”,保存创建的mybootemmc环境变量;

输入“run mybootemmc回车”,设置从EMMC启动linux。

输入“boot回车,启动 Linux 系统;

2、输入“setenv mybootnet 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'回车

输入“saveenv回车,保存创建的mybootnet环境变量;

输入“run mybootnet回车”,从网络启动linux。

输入“boot回车”,启动 Linux 系统;

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

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

相关文章

如何正确理解和获取S参数

S参数是网络参数,定义了反射波和入射波之间的关系,给定频率的S参数矩阵指定端口反射波b的矢量相对于端口入射波a的矢量,如下所示: bS∙a 在此基础上,如下图所示,为一个常见的双端口网络拓扑图:…

【RK3399 Android10, 支持温控风扇】

文章目录 【RK3399 Android10, 支持温控风扇】需求描述patch 【RK3399 Android10, 支持温控风扇】 需求描述 3399 Android10 的风扇,希望能做成温度控制的风扇,通过设置不同测温度阈值来实行不同的风速 patch kernel 0020-feat-rochchip-system-mon…

git如何在忘记pull的情况下push了代码导致的冲突

在忘记pull的情况下push代码导致冲突时,可以按照以下步骤解决问题: 首先,确认你的本地分支和远程分支之间存在冲突。可以通过执行git status命令查看冲突文件列表。 确定冲突文件后,打开这些文件并找到冲突的部分。冲突的部分会以…

go-carbon v2.3.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…

【算法题】93. 复原 IP 地址

题目 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011…

红队打靶练习:HEALTHCARE: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 gobuster cms sqlmap 爆库 爆表 爆列 爆字段 FTP 提权 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Inte…

LoRA:语言模型微调的计算资源优化策略

编者按:随着数据量和计算能力的增加,大模型的参数量也在不断增加,同时进行大模型微调的成本也变得越来越高。全参数微调需要大量的计算资源和时间,且在进行切换下游任务时代价高昂。 本文作者介绍了一种新方法 LoRA,可…

Java LinkedList 实现栈和队列

Java LinkedList 实现栈和队列 package com.zhong.collection;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {// LinkedList 创建一个队列LinkedList<String> queue new LinkedList<>();// 进队System.out…

2024年【A特种设备相关管理(电梯)】考试题及A特种设备相关管理(电梯)模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;电梯&#xff09;考试题是安全生产模拟考试一点通生成的&#xff0c;A特种设备相关管理&#xff08;电梯&#xff09;证模拟考试题库是根据A特种设备相关管理&#xff08;电梯&#xff…

BC107 矩阵转置

描述 KiKi有一个矩阵&#xff0c;他想知道转置后的矩阵&#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵&#xff09;&#xff0c;请编程帮他解答。 输入描述&#xff1a; 第一行包含两个整数n和m&#xff0c;表示一个矩阵包含n行m列&#xff0c;用空格分隔。 (1≤n≤…

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML&#xff08;Unified modeling language UML&#xff09;统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的&#xff0c;是UML图中最核心的。类图的是用于…

【Java数据结构】单向 不带头 非循环 链表实现

模拟实现LinkedList&#xff1a;下一篇文章 LinkedList底层是双向、不带头结点、非循环的链表 /*** LinkedList的模拟实现*单向 不带头 非循环链表实现*/ class SingleLinkedList {class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val …

安全通信设置:使用 OpenSSL 为 Logstash 和 Filebeat 提供 SSL 证书

在为 Elasticsearch 采集数据时&#xff0c;我们经常使用到 Filebeat 及 Logstash。在我们之前的很多教程中&#xff0c;我们通常不为 Filebeat 和 Logstash 之前的通信做安全配置。 如何为 Filebeat 及 Logstash 直接建立安全的链接&#xff1f;这个在很多的情况下是非常有用的…

Python算法题集_环形链表

Python算法题集_环形链表 题234&#xff1a;环形链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【集合检索】2) 改进版一【字典检测】3) 改进版二【双指针】 4. 最优算法 本文为Python算法题集之一的代码示例 题234&#xff1a;环形链表 …

分享64个节日PPT,总有一款适合您

分享64个节日PPT&#xff0c;总有一款适合您 64个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/190YgEPzmbvopsht-n7YhpQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

Django模板(一)

一、基本规则 作为一个Web框架,Django需要一种方便的方式来动态生成HTML。最常用的方法依赖于模板。模板包含所需HTML输出的静态部分以及描述如何插入动态内容的特殊语法 1.1、django默认模板 在settings中配置: TEMPLATES = [{BACKEND: django.template.backends.django.…

Axios设置token到请求头的三种方式

1、为什么要携带token? 用户登录时&#xff0c;后端会返回一个token&#xff0c;并且保存到浏览器的localstorage中&#xff0c;可以根据localstorage中的token判断用户是否登录&#xff0c;登录后才有权限访问相关的页面&#xff0c;所以当发送请求时&#xff0c;都要携带to…

时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-GRU-AdaBoost卷积门控循环单元结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-GRU-AdaBo…

[Linux] 网络编程套接字

目录 预备知识 网络字节序 网络字节序和主机字节序转换的库函数 socket编程接口 socket常见API sockaddr结构 套接字的种类 预备知识 1.在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。 2.端口号&#xff1a;是传输层协议的内容…

Flink面试准备

零. 主要内容 一. Flink 提交 1. Flink怎么提交? Local模式 JobManager 和 TaskManager 共用一个 JVM,只需要jdk支持&#xff0c;单节点运行&#xff0c;主要用来调试。 Standlone模式 Standlone 是Flink自带的一个分布式集群&#xff0c;它不依赖其他的资源调度框架、不依赖y…