Linux第43步_移植ST公司uboot的第4步_uboot测试

uboot移植结束后,需要进行测试。

1、烧录程序

1)、将STM32MP157开发板的网络接口与路由器的网络接口通过网线连接起来。

2)、将开发板的串口和电脑通过USB线连接起来。

3)、将开发板的USB OTG接口和电脑通过USB线连接起来。

4)、将开发板上拨码开关拨到“000”位置。

5)、给开发板上电。

6)、准备烧录文件

tf-a-stm32mp157d-atkserialboot.stm32,是我们移植TF-A得到的。

tf-a-stm32mp157d-atk-trusted.stm32,是我们移植TF-A得到的。

uboot.stm32,是我们移植uboot得到的。

④、atk-image-bootfs.ext4借用正点原子的,文件路径:D:\Linux安装\08、系统镜像\08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\atkimage-bootfs.ext4。

⑤、tf-a.tsv,FlashLayout文件(脚本文件),见下面的路径:

系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\flashlayout\ atk_emmc-stm32mp157d-atk-qt.tsv,需要将这个文件重命名为“tf-a.tsv”。

将上述文件拷贝到“C:\Program Files\STMicroelectronics\images\my-tfa”

见下图:

7)、使用“Notepad++”软件打开“tf-a.tsv”;

点击“视图”,显示符号“, “显示空格与制表符”,修改后保存,见下图如下:

8)、打开“STM32CubeProgrammer”

9)、点击“Connect”

10)、点击“Open file”,得到下图:

11)、选择“tf-a.tsv”,点击“打开”,点击“Browse”,选择“my-tfa”文件,然后点击“Download”,见下图:

12)、将开发板断电,将拨码开关设置为010,再上电。

13)、等串口输出“Hit any key to stop autoboot:  1”,需要立即按下回车健”,得到下图

2、测试开发板网络连接

1)、使用网线将STM32MP157开发板上的网络接口与电脑或者路由器连接起来; 

2)、使用串口设置“网络地址环境变量”

已知虚拟机网络参数:

虚拟机IP地址:“192.168.2.180

虚拟机网关:“192.168.2.1

虚拟机子网掩码:“255.255.255.0

开发板的“网络地址环境变量”设置如下:

setenv ipaddr 192.168.2.178       //开发板“IP地址”

setenv ethaddr 00:04:9f:04:d2:36  //开发板网卡“MAC地址”,48位

setenv gatewayip 192.168.2.1      //开发板默认网关

setenv netmask 255.255.255.0      //开发板子网掩码

setenv serverip 192.168.2.180     //服务器地址,也就是“Ubuntu地址”

saveenv

见下图操作:

3)、测试开发板网络连接

输入“ping 192.168.2.180”,见下图操作:

3、测试USB OTG设备

1)、输入“ums 0 mmc 1

注意:正点原子STM32MP157开发板只有一个USB OTG接口,它可以用作USB SLAVE,对应的索引为0,所以ums后面跟的是0,mmc后面跟的是1,表示将EMMC挂载到“虚拟机”上,同理:ums 0 mmc 0表示将TF卡挂载到虚拟机上

见下图操作:

2)、查看虚拟机桌面是否有U盘图标,见下图:

注意:在虚拟机上发现磁盘bootfs,说明USB OTG工作成功。

3)、双击“bootfs”,得到下图:

4)、结束U盘挂载,在串口输入“CTRL+C键”,见下图操作:

  1. 查询是否使能“boot”和“bootd”命令

输入:“? boot

输入:“? bootd

见下图:

如果串口上出现上述信息,表示开发板使能了“boot”命令。

boot”和“bootd执行的是同一个函数。

5、从EMMC启动Linux

1)、输入“ext4ls mmc 1:2”,查看EMMC的分区2;

EMMC的分区2中存放了15个文件:

boot.scr.uimg

lost+found,这是一个文件夹;

mmc0 extlinux,这是一个文件夹;

mmcl extlinux,这是一个文件夹;

stm32mp157d-atk.dtb,这是移植uboot时,生成的“.dtb”设备树文件;

stm32mp157d-atk-hdmi.dtb,这是“.dtb”设备树文件;

stm32mp157d-atk-mipi.dtb,这是“.dtb”设备树文件;

stm32mp157d-atk-spdif.dtb,这是“.dtb”设备树文件;

uInitrd,是initialized RAM disk的缩写,启动时存在于内存的文件系统;

alientek 1024x600.bmp,这是一个图片文件,用来测试LCD能否显示;

alientek 1280x800.bmp,这是一个图片文件,用来测试LCD能否显示;

alientek 480x272.bmp,这是一个图片文件,用来测试LCD,适合我的开发板

alientek 800x480.bmp,这是一个图片文件,用来测试LCD能否显示;

uImage,这是uboot专用的映像文件;

5.4.31-gca8f6cddb这是Linux文件

其中比较重要的就是4个“.dtb设备树文件”和Linux内核的“uImage镜像文件”。

2)、设置bootcmd 环境变量,从EMMC里面读取系统文件:

出现“STM32MP>”时输入:

setenv bootcmd 'ext4load mmc 1:2 c2000000 uImage;ext4load mmc 1:2 c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'

出现“STM32MP>”时输入: saveenv

出现“STM32MP>”时输入: boot

6、从网络启动Linux

1)、检查是否安装“NFS服务”和“SSH服务”。

2)、记得前面曾经在“linux”目录下创建过一个“nfs”的文件夹,这个是用来供nfs服务器使用。

使用tftp从ubuntu中下载“Image”和“.dtb设备树文件”;

将“Linux镜像文件”和“Linux根文件系统”放到ubuntu下的tftp中;

设置Linux从网络启动。

这样不需要频繁烧写EMMC,每次重新编译Linux内核或某个Linux驱动后,就可以使用“cp命令”,将其文件拷贝到这个指定的文件夹即可,加快了开发速度,方便了调试。

STM32MP> setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000'

STM32MP> saveenv

STM32MP> boot

设置好以后,uboot 先从tftp服务器下载uImage和stmm32mp157d-atk.dtb这两个文件,然后启动。

7LCD测试

从EMMC中读取“alientek_800x480.bmp”,保存到内存C0000000地址处。

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

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

其中alientek_800x480.bmp符合当前开发测试

3)、输入“ext4load mmc 1:2 C2000000 alientek_800x480.bmp回车”,将EMMC分区2中的alientek_800x480.bmp读到内存C2000000地址处;

4)、输入“bmp info c2000000回车”,显示图片信息;

5)、输入“bmp display c2000000 0 0回车”,显示 bmp;

至此,uboot测试完成。

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、ScrollBar组件 鸿蒙(HarmonyOS)滚动条组件ScrollBar&…

Leetcode3020. 子集中元素的最大数量

Every day a Leetcode 题目来源:3020. 子集中元素的最大数量 解法1:哈希 枚举 用一个哈希表统计数组 nums 中的元素及其出现次数。 暴力枚举数组中的数,作为 x,然后不断看 x2,x4,⋯ 在数组中的个数。直到个数不足 2 个为止&a…

搭建macOS开发环境-1:准备工作

请记住: 最重要的准备工作永远是:备份数据 !!! 通过图形界面检查 Mac 的 CPU 类型: 在搭载 Apple 芯片的 Mac 电脑上,“关于本机”会显示一个标有“芯片”的项目并跟有相应芯片的名称: 通过命令行检查Mac的CPU类型 …

使用vite创建vue+ts项目,整合常用插件(scss、vue-router、pinia、axios等)和配置

一、检查node版本 指令:node -v 为什么要检查node版本? Vite 需要 Node.js 版本 18,20。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 二、创…

(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.4节(函数重载)

4.2.4 函数重载 ​ 有时您可能想要两个非常相似但参数和实现不同的函数。传统做法是,您必须为每个函数想出一个稍微不同的名称,但是现代编程语言允许您对一个函数符号进行多次定义。 ​ 重载的概念很简单:编译器允许您使用相同的名称定义两…

.[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复

导言: 在当今数字化时代,勒索病毒已成为网络安全领域的一大威胁。其中一种新近出现的勒索病毒是由[hudsonLcock.li].mkp[hendersoncock.li].mkp[myersairmail.cc].mkp制作的,它以其高效的加密算法和勒索方式而备受关注。本文91数据恢复将介绍…

七、Nacos源码系列:Nacos服务发现

目录 一、服务发现 二、getServices():获取服务列表 2.1、获取服务列表 2.2、总结图 三、getInstances(serviceId):获取服务实例列表 3.1、从缓存中获取服务信息 3.2、缓存为空,执行订阅服务 3.2.1、调度更新,往线程池中…

【Spring】Tomcat服务器部署

📝个人主页:五敷有你 🔥系列专栏:Spring⛺️稳中求进,晒太阳 单体项目部署 本地工作 项目在本地开发完毕之后进行一些必要参数的修改。 比如: 数据库的JDBC的配置文件,还有前端页面的…

项目02《游戏-06-开发》Unity3D

基于 项目02《游戏-05-开发》Unity3D , 接下来做 背包系统的 存储框架 , 首先了解静态数据 与 动态数据,静态代表不变的数据,比如下图武器Icon, 其中,武器的名称,描述&#xff…

Swift Combine 发布者publisher的生命周期 从入门到精通四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三 1. 发布者和订阅者的生命周期 订阅者和发布者以明确定义的顺序进行通信,因此使得它们具有从开始到结束的生命周期: …

课时17:本地变量_命令变量

2.2.3 命令变量 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 基本格式 定义方式一:变量名命令注意: 是反引号定义方式二:变量名$(命令)执行流程:1、执行 或者 $() 范围内的命令…

安卓——计算器应用(Java)

步骤 1: 设置Android Studio项目 创建一个新的Android项目,选择Java作为编程语言。 步骤 2: 设计用户界面 打开activity_main.xml文件,在res/layout目录下,设计你的计算器用户界面。这个例子使用了LinearLayout来排列两个EditText输入框和…

常用C++模版

目录 前言类型转换int 转 stringstring 转 int 进制转换10进制转n进制( 2 ≤ n ≤ 16 , n ∈ Z 2\leq n\leq 16,n\in \mathbb Z 2≤n≤16,n∈Z)n进制转10进制( 2 ≤ n ≤ 16 , n ∈ Z 2\leq n\leq 16,n\in \mathbb Z 2≤n≤16,n∈Z&#xff0…

pycharm像jupyter一样在控制台查看后台变量

更新下:这个一劳永逸不用一个一个改 https://blog.csdn.net/Onlyone_1314/article/details/109347481 右上角运行

Spring IoC容器(四)容器、环境配置及附加功能

本文内容包括容器的Bean 及 Configuration 注解的使用、容器环境的配置文件及容器的附加功能(包括国际化消息、事件发布与监听)。 1 容器配置 在注解模式下,Configuration 是容器核心的注解之一,可以在其注解的类中通过Bean作用…

UniApp 快速上手与深度学习指南

一、UniApp 简介 UniApp 是中国DCloud公司研发的一款创新的跨平台应用开发框架,它基于广受欢迎的前端开发库Vue.js,旨在解决多端适配和快速开发的问题。通过UniApp,开发者能够采用一套统一的代码结构、语法和API来构建应用程序,从而实现真正意义上的“一次编写,到处运行”…

DevOps落地笔记-20|软件质量:决定系统成功的关键

上一课时介绍通过提高工程效率来提高价值交付效率,从而提高企业对市场的响应速度。在提高响应速度的同时,也不能降低软件的质量,这就是所谓的“保质保量”。具备高质量软件,高效率的企业走得更快更远。相反,低劣的软件…

消息中间件之RocketMQ源码分析(八)

RocketMQ中的消息过滤 RocketMQ设计了消息过滤,来解决大量无意义流量的传输:即对于客户端不需要的消息, Broker就不会传输给客户端,以免浪费宽带,RocketMQ4.2.0支持Tag过滤、SQL92过滤、Filter Server过滤 Tag过滤 第一步:用户发…

chrome扩展插件常用文件及作用

Chrome扩展通常包含以下常用文件及其作用: manifest.json: 描述了扩展的基本信息,如名称、版本、权限、图标等。定义了扩展的各种组件和功能,包括后台脚本、内容脚本、页面、浏览器动作按钮等。 background.js: 后台脚…

蓝桥杯Web应用开发-CSS3 新特性【练习三:文本阴影】

文本阴影 text-shadow 属性 给文本内容添加阴影的效果。 文本阴影的语法格式如下: text-shadow: x-offset y-offset blur color;• x-offset 是沿 x 轴方向的偏移距离,允许负值,必须参数。 • y-offset 是沿 y 轴方向的偏移距离&#xff0c…