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 版本。 二、创…

七、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、执行 或者 $() 范围内的命令…

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

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

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

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

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

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

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

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

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

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

Swift Combine 管道 从入门到精通三

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二 1. 用弹珠图描述管道 函数响应式编程的管道可能难以理解。 发布者生成和发送数据,操作符对该数据做出响应并有可能更改它,订阅者请求并接收这些数据。 这…

LoveWall v2.0Pro社区型校园表白墙源码

校园表白墙,一个接近于社区类型的表白墙,LoveWall。 源码特色; 点赞, 发评论, 发弹幕, 多校区, 分享页, 涉及违禁物等名词进行检测! 安装教程: 环境要求;…

一文读懂|Apollo自动驾驶平台9.0全面解读

2023年12月19日,百度正式推出了Apollo开放平台的全新升级版本--Apollo开放平台9.0,面向所有开发者和生态合作伙伴,以更强的算法能力、更灵活易用的工具框架,以及更易拓展的通用场景能力,继续构筑自动驾驶开发的领先优势…

极限的反问题【高数笔记】

1. 什么是极限反问题? 2. 极限反问题分为几类? 3. 每一类极限反问题的具体做法是什么? 4. 每一类极限反问题具体做法是否有前提条件? 5. 例题?

本地安全策略 | 服务器管理 | 配置项

本地安全策略 Windows 本地安全策略是一组在本地计算机上配置的安全设置,用于管理计算机的安全性和访问控制。这些策略是针对单个计算机的,与域策略不同,本地安全策略不通过域控制器进行集中管理。本地安全策略通过本地组策略编辑器进行配置…

Linux---线程

线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程 线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中,在CPU眼中…