当前位置: 首页 > article >正文

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.kler.cn/a/231288.html

相关文章:

  • 【gRPC-gateway】初探grpc网关,插件安装,默认实现,go案例
  • AJAX案例——图片上传个人信息操作
  • volatile
  • QT串口通信,实现单个温湿度传感器数据的采集
  • python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
  • ResNet 残差网络
  • 分享一下 uniapp 打包安卓apk
  • 【React】如何使antd禁用状态的表单输入组件响应点击事件?
  • Spring GateWay
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItem组件
  • 阿里云ECS服务器Linux安装Mysql8
  • Vue中的 v-if 与 v-show 的区别
  • [项目管理] 如何使用git客户端管理gitee的私有仓库
  • 四:C语言-选择结构
  • 【大模型上下文长度扩展】MedGPT:解决遗忘 + 永久记忆 + 无限上下文
  • Rust 本地文档的使用:rustup doc
  • 【C#】.net core 6.0 设置根目录下某个文件夹可访问,访问创建的图片等资源
  • Appium使用初体验之参数配置,简单能够运行起来
  • rust给py写拓展如此简单
  • SQLite database实现加密
  • sklearn模型指标和特征贡献度查看
  • docker之程序镜像的制作
  • 有趣的CSS - 旋转的太极图
  • JVM-运行时数据区程序计数器
  • Flink实战六_直播礼物统计
  • 如何利用chatgpt提升工作效率