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.rhkb.cn/news/256587.html

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

相关文章

「Linux」用户操作

root用户 su:切换账户 语法:su [–] [用户名] -:可选,表示是否在切换用户后加载环境变量,建议带上用户名:表示要切换的用户,省略时表示切换到root切换用户后,通过exit命令退回上一个…

LocalAI 部署(主要针对 mac m2 启动)

LocalAI 部署 介绍 LocalAI 是免费的开源 OpenAI 替代方案。 LocalAI 充当 REST API 的直接替代品,与本地推理的 OpenAI API 规范兼容。 它无需 GPU,还有多种用途集成,允许您使用消费级硬件在本地或本地运行 LLM、生成图像、音频等等&#…

spring boot(2.4.x 开始)和spring cloud项目中配置文件application和bootstrap加载顺序

在前面的文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 spring boot 2.4.x 版本之前通过 ConfigFileApplicationListener 加载配置 https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-project/spring-boot/src/mai…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本:2.6.1 单机源码启动项目 启动教程:社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑,也是第一次阅读大型项目源码,写文章记录。 在写文章前,已经跑了 Divide 插件体验了一下(体…

Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)

文章目录 题面链接题意题解代码总结 题面 链接 E. Tetrahedron 题意 从一个顶点出发走过路径长度为n回到出发点的方案总数 题解 考虑dp f [ i ] [ 0 ∣ 1 ∣ 2 ∣ 3 ] f[i][0|1|2|3] f[i][0∣1∣2∣3]:走了i步,现在在j点的方案总数 转移: f [ i ]…

【Linux进程间通信】用管道实现简单的进程池、命名管道

【Linux进程间通信】用管道实现简单的进程池、命名管道 目录 【Linux进程间通信】用管道实现简单的进程池、命名管道为什么要实现进程池?代码实现命名管道创建一个命名管道 理解命名管道匿名管道与命名管道的区别命名管道的打开规则 作者:爱写代码的刚子…

【C语言进阶】深度剖析数据在内存中的存储--上

1. C语言中的数据类型的简单介绍 注:C99标准里面,定义了bool类型变量。这时,只要引入头文件stdbool.h ,就能在C语言里面正常使用bool类型。 1.1 在C语言中各类型所占内存空间的大小如下 char类型的数据类型大小为1字节即8比特位。…

蓝桥杯每日一题------背包问题(三)

前言 之前求的是在特点情况下选择一些物品让其价值最大,这里求的是方案数以及具体的方案。 背包问题求方案数 既然要求方案数,那么就需要一个新的数组来记录方案数。动态规划步骤如下, 定义dp数组 第一步:缩小规模。考虑n个物品…

云原生容器化-4 Docker仓库

1.Docker仓库 1.1 Docker Hub docker仓库用于存放docker镜像,可以分为公用和私有两种。Docker Hub是全球公用的仓库,因服务器在国外,国内基本不可以;一般需要配置阿里、腾讯等加速器。公司内部而言,可以搭建私有的Do…

使用 devc++ 开发 easyx 实现 Direct2D 交互

代码为 codebus 另一先生的 文案 EasyX 的三种绘图抗锯齿方法 - CodeBus 这里移植到 devc 移植操作如下&#xff1a; 调用dev 的链接库方式&#xff1a; project -> project option -> 如图所示 稍作修改的代码。 #include <graphics.h> #include <d2d1.…

【数据结构】13:表达式转换(中缀表达式转成后缀表达式)

思想&#xff1a; 从头到尾依次读取中缀表达式里的每个对象&#xff0c;对不同对象按照不同的情况处理。 如果遇到空格&#xff0c;跳过如果遇到运算数字&#xff0c;直接输出如果遇到左括号&#xff0c;压栈如果遇到右括号&#xff0c;表示括号里的中缀表达式已经扫描完毕&a…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示

对上一篇的工作C学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化&#xff0c;增加一个显示运动员每组成绩的折线图。 1&#xff09;在Qt Creator的项目文件&#xff08;.pro文件&#xff09;中添加对Qt Charts模块的支持&#xff1a; QT charts 2&#xf…

STM32WLE5JC

Sub-GHz 无线电介绍 sub-GHz无线电是一种超低功耗sub-GHz无线电&#xff0c;工作在150-960MHz ISM频段。 在发送和接收中采用LoRa和&#xff08;G&#xff09;FSK调制&#xff0c;仅在发送中采用BPSK/(G)MSK调制&#xff0c;可以在距离、数据速率和功耗之间实现最佳权衡。 这…

微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 论文地址&#xff1a;https://arxiv.org/abs/2402.05140 Github 地址&#xff1a;https://github.com/sjunhongshen/Tag-LLM 大语言模型&#xff08…

Ubuntu Desktop - scrolling (Terminal 缓存更多终端历史输出内容)

Ubuntu Desktop - scrolling [Terminal 缓存更多终端历史输出内容] 1. ubuntu-14.04.5-desktop-amd64.iso2. ubuntu-16.04.3-desktop-amd64.isoReferences Terminal -> 右键 Profiles -> Profile Preferences 1. ubuntu-14.04.5-desktop-amd64.iso 2. ubuntu-16.04.3-de…

理解JAVA命名和目录接口(JNDI)

理解JAVA命名和目录接口(JNDI) 考虑访问网站的场景,Web用户要求记住四字节的IP地址而不是有意义的名称。例如,假设Web用户用123.23.3.123而不是hotmail.com访问hotmail网站。在这种情形下,Web用户难以记住不同的IP地址来访问不同的网站。因此,要使其变得对Web用户简单方…

【开源】SpringBoot框架开发APK检测管理系统

目录 一、摘要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 软件举报表 四、系统展示五、核心代…

基于RBF神经网络的自适应控制器simulink建模与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1自适应控制器 4.2 RBF神经网络模型 5.完整程序 1.程序功能描述 在simulink中&#xff0c;使用S函数编写基于RBF神经网络的自适应控制器&#xff0c;然后实现基于RBF神经网络的自适应控制…

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-任务管理

目录 一、任务管理1.1、任务状态1.2、任务基本概念1.3、任务管理使用说明1.4、任务开发流程1.5、任务管理接口 坚持就有收获 一、任务管理 从系统角度看&#xff0c;任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源&#xff0c;并独立于其它…

【多模态】27、Vary | 通过扩充图像词汇来提升多模态模型在细粒度感知任务(OCR等)上的效果

文章目录 一、背景二、方法2.1 生成 new vision vocabulary2.1.1 new vocabulary network2.1.2 Data engine in the generating phrase2.1.3 输入的格式 2.2 扩大 vision vocabulary2.2.1 Vary-base 的结构2.2.2 Data engine2.2.3 对话格式 三、效果3.1 数据集3.2 图像细粒度感…