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 在此基础上,如下图所示,为一个常见的双端口网络拓扑图:…

红队打靶练习: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…

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…

elastic-job VS xxl-job

1、Elastic-job介绍 Elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 &#xff0c; 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。Elastic-Job-Lite定位为轻量级无中心化解决方案&#xff0c;使用jar包的形式提供分布式任务的协调服务…

【开源】基于JAVA+Vue+SpringBoot的贫困地区人口信息管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

SM2259XT量产工具修复金泰克固态硬盘29F01T2ALCQJ1颗粒开卡

在这里插入代码片前言 网心云用的固态硬盘突然坏了识别不了&#xff0c;磁盘管理、diskGenius、pe系统里均无法识别&#xff0c;查询发现可以用开卡工具修复&#xff0c;遂进行了一番折腾。 拆硬盘 如图硬盘是块金泰克240g容量的&#xff0c;拆开后找到主控芯片型号为SM2259…

算法学习——LeetCode力扣哈希表篇1

算法学习——LeetCode力扣哈希表篇1 242. 有效的字母异位词 242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; 描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同…

我在项目中使用Redis的几个场景

目录 缓存 会话存储 分布式锁 消息队列 位统计 计数器 排行榜 缓存 缓存的目的是为了提高系统响应速度、减少数据库等资源的压力&#xff0c;redis作为键值对形式的内存数 据库&#xff0c;可以提供非常快速的读取速度&#xff0c;使得它成为存储热点数据或频繁访问数…