Linux|Linux系统移植篇2:STM32MP1微处理器之系统镜像烧写( 四 )



这里以trusted镜像为例选择flashlayout_fs-mp1a-weston_FlashLayout_sdcard_stm32mp157a-fsmp1a-trusted.raw镜像进行烧录 。

点击“打开”按钮后 。 在“Favorites”选项卡中选中刚刚添加的镜像 。

点击“Restore”按钮后会弹出对话框询问是否要继续操作 , 我们选择“是”

可以在界面的左下方看到当前的进度 。

烧录完成后就可以将拨码开关拨至【101】来启动系统 。

通过ums方式映射分区当我们编译了自己的一些镜像后 , 需要将其下载到开发板中运行的时候 , 可以使用此方式将开发板上的分区通过USB使用ums工具映射到虚拟机中的ubuntu系统中 。 这里以更新bootloader和boot分区为例来介绍ums的使用方法 。
首先需要使用xshell连接上调试串口 , 在系统的启动过程中会出现1秒的倒计时 , 在倒计时结束之前按下键盘任意键即可将程序停留在bootloader的控制终端 。

进入bootloader控制台

使用ums更新bootloader在控制台使用ums 0 mmc 0命令可以将开发板上的sdcard分区映射到PC上 , 然后再由PC将设备连接到虚拟机当中的ubuntu系统 。

  • 更新sdcard:
Board $> ums 0 mmc 0
  • 更新emmc:
Board $> ums 0 mmc 1

在输入命令之后虚拟机会提示检测到新的USB设备 , 在如上界面中选择连接到虚拟机后 , 在ubuntu系统中使用ls /dev/sd*命令可以看到多出了一些设备分区 。

其中/dev/sdc设备就是开发板映射到系统中的 , 可以看到共有7个分区 。 使用ls -l /dev/disk/by-partlabel命令可以查看分区映射关系 。 需要注意的是烧录的镜像不同 , 分区数量也有所变化 。

可以使用dd命令将编译好的uboot镜像或者是光盘资料的【华清远见-FS-MP1A开发资料\\06-系统镜像\\fs-mp1a-weston-openstlinux】下的uboot镜像下载到开发板 。
  • 烧录optee镜像
sudo dd if= tf-a-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc1 conv=fdatasync
sudo dd if= tf-a-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc2 conv=fdatasync
sudo dd if= u-boot-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc3 conv=fdatasync
sudo dd if=tee-header_v2-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc4 bs=1M conv=fdatasync
sudo dd if=tee-pageable_v2-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc5 bs=1M conv=fdatasync
sudo dd if=tee-pager_v2-stm32mp157a-fsmp1a-optee.stm32 of=/dev/sdc6 bs=1M conv=fdatasync
  • 烧录trusted镜像
sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdc1 conv=fdatasync
sudo dd if=tf-a-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdc2 conv=fdatasync
sudo dd if=u-boot-stm32mp157a-fsmp1a-trusted.stm32 of=/dev/sdc3 conv=fdatasync
注意:tf-a-stm32mp157a-fsmp1a-trusted.stm32镜像是由tf-a源码生成
使用ums更新bootfs在更新bootloader分区的时候我们通过dd命令将镜像烧录的开发板中 , 而bootfs分区是一个ext4格式的分区 , 可以通过mount挂载的方式将文件系统挂载到ubuntu后直接对里面的内容进行修改 。
与更新bootloader方式一样可以使用ls -l /dev/disk/by-partlabel命令可以查看分区映射关系 。 找到bootfs所指向的设备节点 。

可以看到这里对应的设备节点是sdc4分区 。
使用sudo mount /dev/sdc4 /mnt\t将其挂载到/mnt目录下

挂载成功之后切换到/mnt目录下查看

可以看到该分区中存放了linux内核及设备树 , extlinux的配置 , 开机logo等文件 。 我们可以通过替换相应的文件即可更新启动镜像 。
例如我们可以将自行编译生成的uImage替换到当前目录下 。

使用sudo umont /mnt 解除挂载后重启开发板即可 。