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.hqwc.cn/news/455016.html

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

相关文章

HTTP相关问题

目录 1.从输入URL到页面展示到底发生了什么? 2.HTTP状态码有哪些? 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些? 4.HTTP和HTTPS有什么区别&…

通过dockerfile 生成自定义nginx镜像

通过dockerfile生成自定义nginx镜像 !!!docker 必须在linux环境下才能进行如果你是window则需要装虚拟机 新建一个文件名字为Dockerfile,无需后缀 文件完整名就是Dockerfile 编写dockerfile FROM nginx RUN echo hello nginx!…

【HTML 基础】语义化标签

文章目录 1. <header>2. <nav>3. <article>4. <section>5. <footer>为什么使用语义化标签结语 在现代的 Web 开发中&#xff0c;语义化标签成为设计网页结构的重要组成部分。通过使用 <header>, <nav>, <article>, <sectio…

函数的连续与间断【高数笔记】

【连续】 分类&#xff0c;分几个&#xff1f;每类特点&#xff1f; 连续条件&#xff0c;是同时满足还是只需其一&#xff1f; 【间断】 分类&#xff0c;分几个大类&#xff0c;又分几个小类&#xff1f;每类特点&#xff1f; 间断条件&#xff0c;是同时满足还是只需其一&am…

使用CHATGPT进行论文写作的缺点和风险

为了真正感受 ChatGPT 的写作潜力&#xff0c;让我们先将其与传统的论文写作方法进行一下比较分析 CHATGPT论文写作的缺点和风险 传统论文写作的考验和磨难很深&#xff1a;费力的研究、组织想法和精心设计的逻辑论证&#xff0c;往往以牺牲你的理智为代价。 进入ChatGPT&am…

zabbix配置自动发现

1.准备一台新的主机&#xff0c;安装相关软件包。 [rootsishi ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [rootsishi ~]# yum -y install zabbix-agent2.修改zabbix-agent端的配置文件 [rootsishi ~]# vim /etc/z…

用 Delphi 程序调用 Python 代码画曲线图 -- 数据来自 Delphi 程序

接本博客上一篇文章&#xff0c;使用 Python 的 matplotlib 库画曲线。 上次是为了实现调用该库&#xff0c;数据是直接写死在 Python 代码里面的。代码是这一行&#xff1a; squares [1, 4, 9, 16, 25]; 既然是 Delphi 调用 Python 的库&#xff0c;数据应该是 Delphi 的程…

springboot第54集:思维导图后端知识点微服务分布式架构周刊

BigDecimal num1 new BigDecimal(0.1); BigDecimal num2 new BigDecimal(0.2); BigDecimal sum num1.add(num2); BigDecimal product num1.multiply(num2); mysql: innodb和myisam有什么区别&#xff1f; InnoDB和Myisam是MySQL数据库中两种非常流行的存储引擎&#xff0c;…

git版本回退。git reset参数详解,特殊提交情形下的git push操作(CR等常见场景),git reflog和git log的详解。

切换分支可以使用 git checkout <> 或者git switch ... 创建分支可以使用 git checkout -b <. ...> 或 git branch <...> git checkout <...> git reset --hrad HEAD^ -- 今日份chatgpt git reset --hard HEAD^ 的含义如下&#xff1a; git reset …

springboot war包部署 和jar包部署

文章目录 war包部署设置打包方式为war排除内嵌的tomcat在插件中指定入口类打包测试 jar包部署设置打包方式执行打包测试访问修改插件版本指定jsp打包配置 重新打包测试 war包部署 设置打包方式为war 执行项目打包的方式为 "war" 默认创建springboot项目打包都是ja…

text-generation-webui搭建大模型运行环境与踩坑记录

text-generation-webui搭建大模型运行环境 text-generation-webui环境初始化准备模型启动项目Bug说明降低版本启动项目 text-generation-webui text-generation-webui是一个基于Gradio的LLM Web UI开源项目&#xff0c;可以利用其快速搭建部署各种大模型环境。 环境初始化 下载…

Intellij Idea的数据库工具 DataGrip

DataGrip DataGrip&#xff1a; IDEA自带&#xff0c;非常好用。智能提示很强大&#xff0c;快捷键跟IDEA自身一致。 如果下载不了 DataGrip&#xff0c;也可以直接用 IDEA 自带的。 常用的快捷键 alt8&#xff1a; 打开数据库Service ctrlshiftF10&#xff1a;打开常用的数…