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”目录下的文件和文件夹

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

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回车”,执行文件拷贝

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

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

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

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

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

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

可知“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”目录下的文件和文件夹

见下图:

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

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

1)、打开第3个终端

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

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

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

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

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/”目录中;

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

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

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

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

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

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

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

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

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

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

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

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

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

4、烧录到EMMC

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

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

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

修改后,见下图:

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

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

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

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

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

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

8)、双击“STM32CubeProgrammer”图标

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

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”目录。

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

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

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

14)、点击“Download”

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

15)、点击“确定”

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

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

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

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

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

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

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

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”目录下的文件和文件夹

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

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 系统

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

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

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

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

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

你可能感兴趣的:(产品研发,linux,服务器,经验分享,STM32MP157,STM32,移植)