STM32MP1更新固件
STM32MP1更新固件方式
万事开头难,工欲善其事必先利其器,下面介绍2种给MP1更新固件的办法,一种是通过stm32提供的工具来烧录固件,另外一种是SD卡烧录固件方式。
使用STM32CubeProgrammer烧录固件
使用STM32CubeProgrammer这个软件来烧写系统是比较方便的,软件的安装教程可以查看各家参考文档,java依赖也需要安装。本文默认软件已经安装成功且可以正常使用。
烧录固件前开发板配置为USB启动(拨码开关为000),上电,otg接口的usb连接到电脑,然后打开STM32CubeProgrammer软件。
1.连接开发板
观察USB configuration下面的Port是否有usb出现(USB1),然后点击Connect连接开发板。
2.选择刷机配置文件
点击Open file打开选择的刷机配置文件,本文使用usb向emmc中烧录固件,故选择 E:\STM32资料\【正点原子】STM32MP157开发板(A盘)-基础资料\08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\flashlayout\atk_emmc-stm32mp157d-atk-qt.tsv文件
3.选择刷机镜像
点击界面上的Browse选择镜像所在的路径:本文是:E:\STM32资料\【正点原子】STM32MP157开发板(A盘)-基础资料\08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包
4.刷机
点击Download即可开始刷机,可以根据自己需要修改atk_emmc-stm32mp157d-atk-qt.tsv刷机配置文件,来选择刷某一单独镜像还是完整镜像。
使用SD卡烧录固件
a. 制作SD启动卡
Sd卡通过读卡器接入Ubuntu,sudo ./sdcard_update.sh /dev/sdb
b. 通过SD卡起来来烧录固件到emmc
从TF卡启动以后将要烧写到emmc的文件夹拷贝到开发板根文件系统下
./emmc_update.sh /dev/mmcblk2
通过先制作启动卡,然后从SD卡启动,将需要烧录的固件拷贝到根文件系统,再写入到emmc的分区中即可完成固件的烧录。下面看下sdcard_update.sh和emmc_update.sh两个脚本的关键内容:
sdcard_update.sh主要是通过dd命令将镜像烧录到sd卡对应山区然后对SD卡重分区
#将制作好的整个系统烧写到SD卡
dd if=./flashlayout_atk_sdcard-stm32mp157d-atk-qt.raw of=$device bs=1M conv=fdatasync status=progress
sync
sleep 1
echo "正在重定义分区大小..."
sgdisk -d 5 ${device}
sgdisk -a 1 -n 5:136226:0 -c 5:rootfs -t 5:8300 -u 5:e91c4e10-16e6-4c0e-bd0e-77becf4a3582 ${device}
sync
echo "SD卡启动系统烧录完成,请退出!"
emmc_update.sh脚本中类似,打开emmc的写权限以后使用dd命令烧录固件以后重新分区
echo "使能eMMC写flag"
echo 0 > /sys/class/block/mmcblk2boot0/force_ro
echo 0 > /sys/class/block/mmcblk2boot1/force_ro
echo "正在烧录tf-a,请稍候..."
execute "dd if=./tf-a/tf-a-stm32mp157d-atk-trusted.stm32 of=${device}boot0 conv=fsync"
execute "dd if=./tf-a/tf-a-stm32mp157d-atk-trusted.stm32 of=${device}boot1 conv=fsync"
echo "关闭eMMC写flag"
echo 1 > /sys/class/block/mmcblk2boot0/force_ro
echo 1 > /sys/class/block/mmcblk2boot1/force_ro
execute "mmc bootpart enable 1 1 ${device}"
echo "正在烧录bootfs和根文件系统,请稍候..."
execute "dd if=./atk_emmc-stm32mp157d-atk-qt.raw of=${device} bs=8M conv=sync status=progress"
echo "正在重定义分区大小..."
sgdisk -d 3 ${device}
sync
sgdisk -a 1 -n 3:136192:0 -c 3:rootfs -t 3:8300 -u 3:491f6117-415d-4f53-88c9-6e0de54deac6 ${device}
sync
echo "eMMC启动系统烧录完成!请拨码至010,从eMMC启动系统"
后续烧录固件都将采用SD烧录的方式。