1.大概2月前后,参考第2部分的方法,生成sdcard镜像文件并烧录的步骤,生成了sdcard镜像文件并烧录到sd卡,然后我一直使用这个sd卡和生成sdcard镜像文件更新自己编译的tf-a, optee, uboot, kernel 镜像来进行测试。我一共使用了A, B, C三张sd卡。
前几天我重新又生成了一遍sdcard镜像文件并烧录,过程中把以前一直用的2月生成的sdcard镜像文件删除了,然后就发现问题了,使用新生成的sdcard镜像文件并烧录后,tf-a 和 optee串口有正常的输出,一到uboot就没有串口输出信息了,系统可以正常运行,心跳灯和LCD正常工作,触摸屏也可以正常操作。
过程中我使用新生成的sdcard镜像文件烧录了sd卡A和sd卡B,都是一样的现象,偶然间我发现同样的tf-a, optee, uboot, kernel镜像更新到sd卡C上uboot, kernel是可以正常串口输出和调试的。sd卡C是没有使用新生成的sdcard镜像文件烧录过的。
然后,因为没有2月生成的sdcard镜像文件了,我使用balenaEtcher的复制磁盘功能把sd卡C克隆到sd卡A和sd卡B,烧录同样的tf-a, optee, uboot, kernel镜像,uboot, kernel就可以正常串口输出和调试了。
接着我重新在虚拟机上安装ubuntu20.04和ubuntu22.04,然后参考第2部分的方法,生成sdcard镜像文件并烧录的步骤,生成了sdcard镜像文件并烧录到sd卡,我换了一台PC也试过了,重新下载了刚更新的新版
STM32MP1 OpenSTLinux入门套件,都是tf-a 和 optee串口有正常的输出,一到uboot就没有串口输出信息了,系统可以正常运行,心跳灯和LCD正常工作,触摸屏也可以正常操作。使用stm32cubeprogrammer烧录到SD卡后发现,依然是tf-a 和 optee串口有正常的输出,一到uboot就没有串口输出信息了,系统可以正常运行,心跳灯和LCD正常工作,触摸屏也可以正常操作。
请各位前辈,老师帮忙看一下,问题出在哪里,可不可以给一些排查的方向,谢谢!
我在en.sources-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz基础上修改的设备树文件见楼下附件。
2.生成sdcard镜像文件并烧录的步骤
下载好的STM32MP1 OpenSTLinux入门套件:en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21.tar.gz,上传到ununtu系统并解压。
进入文件夹"stm32mp1/scripts"里面有生成sdcard镜像的脚本文件,在文件夹"stm32mp1"打开终端,使用如下命令生成sdcard镜像文件:
./scripts/create_sdcard_from_flashlayout.sh ./flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp157a-dk1-optee.tsv
终端会打印相关的信息,同时会在"stm32mp1"文件夹下生成两个文件:
FlashLayout_sdcard_stm32mp157a-dk1-optee.rawFlashLayout_sdcard_stm32mp157a-dk1-optee.how_to_update.txt使用FileZilla工具将生成的”FlashLayout_sdcard_stm32mp157a-dk1-optee.raw“文件下载到Windows系统下,准备一张容量至少8GB的SD卡,使用balenaEtcher,将”FlashLayout_sdcard_stm32mp157a-dk1-optee.raw“烧录到SD卡;
FlashLayout_sdcard_stm32mp157a-dk1-optee.how_to_update.txt参考上面的文件,后面会使用类似如下的命令来进行分区内容的更新,需要注意每次操作完,需要安全安全移除SD卡:
- Populate par
tition fsbl1 (/dev/sdc1) sudo dd if=arm-trusted-firmware/tf-a-stm32mp157a-dk1-sdcard.stm32 of=/dev/sdc1 bs=1M conv=fdatasync status=progress- Populate partition fsbl2 (/dev/sdc2) sudo dd if=arm-trusted-firmware/tf-a-stm32mp157a-dk1-sdcard.stm32 of=/dev/sdc2 bs=1M conv=fdatasync status=progress- Populate partition metadata1 (/dev/sdc3) sudo dd if=arm-trusted-firmware/metadata.bin of=/dev/sdc3 bs=1M conv=fdatasync status=progress- Populate partition metadata2 (/dev/sdc4) sudo dd if=arm-trusted-firmware/metadata.bin of=/dev/sdc4 bs=1M conv=fdatasync status=progress- Populate partition fip-a (/dev/sdc5) sudo dd if=fip/fip-stm32mp157a-ev1-optee.bin of=/dev/sdc5 bs=1M conv=fdatasync status=progress- Populate partition fip-b (/dev/sdc6) sudo dd if=none of=/dev/sdc6 bs=1M conv=fdatasync status=progress- Populate partition u-boot-env (/dev/sdc7) sudo dd if=none of=/dev/sdc7 bs=1M conv=fdatasync status=progress- Populate partition bootfs (/dev/sdc8) sudo dd if=st-image-bootfs-openstlinux-weston-stm32mp1.ext4 of=/dev/sdc8 bs=1M conv=fdatasync status=progress- Populate partition vendorfs (/dev/sdc9) sudo dd if=st-image-vendorfs-openstlinux-weston-stm32mp1.ext4 of=/dev/sdc9 bs=1M conv=fdatasync status=progress- Populate partition rootfs (/dev/sdc10) sudo dd if=st-image-weston-openstlinux-weston-stm32mp1.ext4 of=/dev/sdc10 bs=1M conv=fdatasync status=progress- Populate partition userfs (/dev/sdc11) sudo dd if=st-image-userfs-openstlinux-weston-stm32mp1.ext4 of=/dev/sdc11 bs=1M conv=fdatasync status=progress