Linux第53步_移植ST公司的linux内核第5步_系统镜像打包并烧录到EMMC

本节主要学习系统镜像打包,然后将打包文件烧录到EMMC测试。

1、创建bootfs文件夹

1)、打开第1个终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录

输入“ls回车”,列出“atk-mp1”目录下的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“mkdir bootfs回车”,创建bootfs”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

2)、将“uImage”和“stm32mp157d-atk.dtb”拷贝到“bootfs”目录中

打开第2个终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录

输入“ls回车”,列出“atk-mp1”目录下的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd my_linux/回车”,切换到“my_linux”目录

输入“ls回车”,列出“my_linux”目录下的文件和文件夹

输入“cd linux-5.4.31/回车”,切换到“linux-5.4.31”目录

输入“cp arch/arm/boot/uImage /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝;

输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝

3)、回到打开的第1个终端

输入“cd bootfs/回车切换到“bootfs”目录

输入“ls回车”,列出“bootfs”目录下的文件和文件夹

输入“ls  -l回车”,列出“bootfs”目录下的文件和文件夹

可知“uImage”和“stm32mp157d-atk.dtb”合计为7.035M字节。

2、新建ext4格式磁盘

回到打开的第1个终端

输入“dd if=/dev/zero of=bootfs.ext4 bs=1M count=10回车

使用“dd命令”创建一个名为“bootfs.ext4”的磁盘;

of”指定磁盘名字为“bootfs.ext4”;

bs”指定磁盘输入/输出块大小为1MB;

count”指定磁盘的块数量为 10个

因此,“bootfs.ext4磁盘”只能存放不超过10MB的文件,如果要存放的文件总大小超过10MB,那么就要适当调整count参数的大小。

输入“mkfs.ext4 -L bootfs bootfs.ext4回车

使用“mkfs.ext4”将“bootfs.ext4磁盘”格式化为“ext4”格式。

输入“ls回车”,列出“bootfs”目录下的文件和文件夹

见下图:

3、在mnt目录下创建bootfs目录,用于挂载bootfs.ext4磁盘

1)、打开第3个终端

输入“cd /mnt回车”,切换到mnt目录

输入“sudo mkdir bootfs回车”,然后输入密码“123456回车”,就创建了“bootfs”目录

输入“ls回车”,列出“mnt”目录下的文件和文件夹

2)、回到打开的第1个终端

输入“sudo mount bootfs.ext4 /mnt/bootfs/回车”,

使用“mount命令”将“bootfs.ext4”磁盘挂载到“/mnt/bootfs”目录下;

输入密码“123456回车

输入“sudo cp uImage stm32mp157d-atk.dtb /mnt/bootfs/回车

“uImage”和“stm32mp157d-atk.dtb”拷贝到“/mnt/bootfs/”目录中;

3)、回到打开的第3个终端

输入“cd bootfs/回车”,切换到“bootfs”目录

输入“ls回车”,列出“bootfs”目录下的文件和文件夹

4)、输入“cd ..回车”,退回到“mnt”目录

输入“sudo umount /mnt/bootfs回车”,使用“umount”卸载掉“bootfs”

5)、回到打开的第1个终端

输入“ls回车”,列出“/linux/atk-mp1/linux/bootfs”目录下的文件和文件夹

至此,“uImage”和“stm32mp157d-atk.dtb”就打包到bootfs.ext4

6)、使用FileZilla将bootfs.ext4”下载到“windows”中。

4、烧录到EMMC

1)、将“bootfs.ext4”拷贝到“C:\Program Files\STMicroelectronics\images\my-tfa”目录中

2)、使用“Notepad++”修改“tf-a.tsv”

修改后,见下图:

3)、保存“tf-a.tsv”

4)、关闭虚拟机,防止开发板连接到虚拟机

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

6)、将USB导线连接电脑的USB3.0接口,另外一端连接开发板的USB OTG接口;

7)、将USB导线连接电脑的USB3.0接口,另外一端连接到开发板的USB TTL接口;

8)、双击“STM32CubeProgrammer”图标

9)、选择上图中的USB,然后点击“Connect”

10)、点击“刷新”,直到出现USB1,表示连接成功。

11)、点击“Open file”,找到

C:\Program Files\STMicroelectronics\images\my-tfa”目录下“tf-a.tsv”打开。

12)、点击“Browse”,打开

“C:\Program Files\STMicroelectronics\images\my-tfa”目录。

13)、点击“选择文件夹”

14)、点击“Download”

15)、点击“确定”

16)、将拨码开关设置为“010”

17)、按下开发板的“复位按钮”,重新启动开发板。

5、在串口查看EMMC是否烧录了“uImage”和“stm32mp157d-atk.dtb”

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

发现“uImage”和“stm32mp157d-atk.dtb”

2)、通过设置环境变量bootcmd的值,从EMMC启动linux系统

出现“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 系统

3)、烧录EMMC后,重新设置从网络启动linux系统

更新“tftpboot”目录中的“uImage”和“stm32mp157d-atk.dtb”

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录

输入“ls回车”,列出“atk-mp1”目录下的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd my_linux/回车”,切换到“my_linux”目录

输入“ls回车”,列出“my_linux”目录下的文件和文件夹

输入“cd linux-5.4.31/回车”,切换到“linux-5.4.31”目录

输入“ls回车”,列出“linux-5.4.31”目录下的文件和文件夹

4)、输入“cp arch/arm/boot/uImage /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝;

输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝

出现“STM32MP>”时,输入setenv bootcmd 'tftp c2000000 uImage;tftp c4000000 stm32mp157d-atk.dtb;bootm c2000000 - c4000000',设置从网络启动linux系统

出现“STM32MP>”时,输入: saveenv,保存bootcmd的值

出现“STM32MP>”时,输入: boot,启动 Linux 系统

下面还要解决:“VFS: Unable to mount root fs on unknown-block(0,0) ]

提示内核崩溃,VFS(虚拟文件系统)不能挂载根文件系统,因为根文件系统目录不存在。

如果“根文件系统”构建好了,就意味着我们已经拥有一个完整的、可以运行的最小系统,这就是linux系统移植的最后一步。

学习linux很无聊,不是安装,就是修改,不停地移植。还要有用过实时操作系统的应用功底,此外,并是意志坚定。马拉松式的慢跑,肯定有很多人坚持不下来,这就是它很难学的原因吧。

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

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

相关文章

Go语言中的加密艺术:深入解析crypto/subtle库

Go语言中的加密艺术:深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

localStorage、sessionStorage、cookie区别

localStorage: localStorage 的生命周期是永久的,关闭页面或浏览器之后 localStorage 中的数据也不会消失。localStorage 除非主动删除数据,否则数据永远不会消失 sessionStorage: sessionStorage 的生命周期是仅在当前会话下有效。sessionStorage 引入…

C语言第二十四弹---指针(八)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 指针 1、数组和指针笔试题解析 1.1、字符数组 1.1.1、代码1: 1.1.2、代码2: 1.1.3、代码3: 1.1.4、代码4: 1…

C++的进阶泛型编程学习(1):函数模板的基本概念和机制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、模板1.1 模板的概念1.1.1 形象的解释:模板就是通用的模具,目的是提高通用性1.1.1 模板的特点:1.1.2 综述模板的作用 1.2…

OpenGL-ES 学习(1)---- AlphaBlend

AlphaBlend OpenGL-ES 混合本质上是将 2 个片元的颜色进行调和(一般是求和操作),产生一个新的颜色 OpenGL ES 混合发生在片元通过各项测试之后,准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值,不再是新&#xf…

Codeforces Round 920 (Div. 3)

D. Very Different Array(贪心双指针/前缀和) 思路:绝对值就是线段-->让线段最长(肯定是越在最短端找最右端的 越最右端找最左端的)-->判断怎么连哪段最长(采用双指针的策略去判断) (左红…

Swift Combine 通过用户输入更新声明式 UI 从入门到精通十五

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

uniapp前端手机获取安全区域css值 防止按键不能被点击

引入 再编写小程序和移动端的时候可能会出现这种情况,页面中的按键刚好才手机中按不到的位置 如下 这是苹果手机的home按键 如果刚好我们的按钮再这个位置,用户是点击不到的 我们就需要一个办法,能够自动的让我们的按键移动到安全可点击的区域 解决 我们可以使用…

第四篇:SQL语法-DDL-数据定义语言

大年初一限定篇😀 (祝广大IT学习者、工作者0 error 0 warning!) DDL英文全称是Data Definition Language(数据定义语言),用来定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象 …

PHP毕业设计图片分享网站76t17

图片分享网站主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,…

oppo手机QQ上传文件所在位置

一、打开手机“文件管理”APP 点击“点击查看”,按钮,会进入到新的根目录。 寻找下面的目录进入

《区块链公链数据分析简易速速上手小册》第5章:高级数据分析技术(2024 最新版)

文章目录 5.1 跨链交易分析5.1.1 基础知识5.1.2 重点案例:分析以太坊到 BSC 的跨链交易理论步骤和工具准备Python 代码示例构思步骤1: 设置环境和获取合约信息步骤2: 分析以太坊上的锁定交易步骤3: 跟踪BSC上的铸币交易 结论 5.1.3 拓展案例 1:使用 Pyth…