你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】二、STM32MP1更新固件

[复制链接]
STMCU小助手 发布时间:2022-9-21 14:41
STM32MP1更新固件方式
1 f  ^: Z8 d4 c万事开头难,工欲善其事必先利其器,下面介绍2种给MP1更新固件的办法,一种是通过stm32提供的工具来烧录固件,另外一种是SD卡烧录固件方式。" I+ H/ `$ C" R  c" F6 T6 e& D
5 `$ C" ?1 h/ Y$ |& b- `: Y
使用STM32CubeProgrammer烧录固件! W8 P3 z+ Q& I/ J3 f5 Q$ {  W# |' c
使用STM32CubeProgrammer这个软件来烧写系统是比较方便的,软件的安装教程可以查看各家参考文档,java依赖也需要安装。本文默认软件已经安装成功且可以正常使用。
7 v7 G4 h4 T5 k" P: `* C烧录固件前开发板配置为USB启动(拨码开关为000),上电,otg接口的usb连接到电脑,然后打开STM32CubeProgrammer软件。- m- |  e4 F& Z; u  \( }5 U6 v9 F
1.连接开发板" ], i' N6 L& ]7 p8 v$ s9 m( O: h
观察USB configuration下面的Port是否有usb出现(USB1),然后点击Connect连接开发板。& K2 I( }8 b% g' Z4 o' x

8 l* e2 ~& k  v; G3 ^" Y dba3a9727bfb4a718f4e9c0ef71557d2.png
3 ]3 T; ?' r, K0 t4 h. u7 ?: r0 _4 W# d6 A6 k" w* g2 R
2.选择刷机配置文件
  R! e3 G( g7 H$ Y4 G点击Open file打开选择的刷机配置文件,本文使用usb向emmc中烧录固件,故选择 E:\STM32资料\【正点原子】STM32MP157开发板(A盘)-基础资料\08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包\flashlayout\atk_emmc-stm32mp157d-atk-qt.tsv文件
+ W! L! l8 Q. X) D. k2 k6 x& Q3.选择刷机镜像
3 F* s4 w$ ]4 K8 `# ?: d" r点击界面上的Browse选择镜像所在的路径:本文是:E:\STM32资料\【正点原子】STM32MP157开发板(A盘)-基础资料\08、系统镜像\02、出厂系统镜像\01、STM32CubeProg烧录固件包
  x# I6 i* k, ~2 _$ \9 a; Y  F
, B7 _7 N9 `" H8 k  {* t' g: s% |' @ 4f7caa044e734641b4912408093afb40.png   M1 _  h/ G, h9 I7 F" I+ m, c
2 ]5 q9 G" i5 {- U- e# ]
4.刷机# [" I# U. Q* M3 x
点击Download即可开始刷机,可以根据自己需要修改atk_emmc-stm32mp157d-atk-qt.tsv刷机配置文件,来选择刷某一单独镜像还是完整镜像。
  f! d. R+ Q" |4 W6 ^4 `5 r4 O6 F
使用SD卡烧录固件% b2 ~  e* T$ V/ k- S& h
a. 制作SD启动卡5 ?5 F* K! k+ C- L* Q# J
Sd卡通过读卡器接入Ubuntu,sudo ./sdcard_update.sh /dev/sdb
% a# O8 x  `) T7 n/ }7 g4 `( mb. 通过SD卡起来来烧录固件到emmc
! d$ i2 h0 u/ q7 p3 U5 x从TF卡启动以后将要烧写到emmc的文件夹拷贝到开发板根文件系统下
' S& ~0 P0 n2 K2 a! P8 e, s./emmc_update.sh /dev/mmcblk2) R# G' l; k! s- U$ |, z
8 Q+ c% g2 o& S" G0 v
通过先制作启动卡,然后从SD卡启动,将需要烧录的固件拷贝到根文件系统,再写入到emmc的分区中即可完成固件的烧录。下面看下sdcard_update.sh和emmc_update.sh两个脚本的关键内容:. E% \/ c% h/ }+ [$ y3 c! Q
sdcard_update.sh主要是通过dd命令将镜像烧录到sd卡对应山区然后对SD卡重分区$ j+ u. r# Y8 ^2 D. H
( q2 g. \+ \6 b0 O, |" e/ K
  1. #将制作好的整个系统烧写到SD卡
    7 c5 Q1 h* E/ O: C& I# ~" u
  2. dd if=./flashlayout_atk_sdcard-stm32mp157d-atk-qt.raw of=$device bs=1M conv=fdatasync status=progress
    1 ?, S- j4 W$ L% B6 R
  3. sync* w; x7 ~' y! o# O" \& P

  4. 1 y# f- D* h% A
  5. sleep 1  [: {7 B9 E  O3 |7 L4 w6 E
  6. * g0 k5 N& v$ K/ W
  7. echo "正在重定义分区大小..."
    8 m; C# g: u$ f
  8. sgdisk -d 5 ${device}  C: I2 O" q& G5 K5 L- X
  9. sgdisk -a 1 -n 5:136226:0 -c 5:rootfs -t 5:8300 -u 5:e91c4e10-16e6-4c0e-bd0e-77becf4a3582 ${device}
    * L7 O( `4 q! Y+ w
  10. sync; n3 I1 J+ ^9 ~
  11. echo "SD卡启动系统烧录完成,请退出!"5 j& F& C4 s$ Z( c8 u" ?% H" f. S
复制代码
4 D, m6 x# W( w3 V1 P5 h8 m; n  l
emmc_update.sh脚本中类似,打开emmc的写权限以后使用dd命令烧录固件以后重新分区
6 J9 D5 H0 I+ r* Z! d' f- |
: O; |9 ?! w* ~" t
  1. echo "使能eMMC写flag"3 U0 R6 ]- {  F" u; ^% O! G
  2. echo 0 > /sys/class/block/mmcblk2boot0/force_ro1 u0 v$ A8 b- c9 j; x- l" l& Z% `
  3. echo 0 > /sys/class/block/mmcblk2boot1/force_ro" n5 j3 z5 m) F$ B4 f
  4. # W% C7 }7 ]5 d3 u$ h
  5. echo "正在烧录tf-a,请稍候..."; N6 ?0 ^- v! |1 ]& p
  6. execute "dd if=./tf-a/tf-a-stm32mp157d-atk-trusted.stm32 of=${device}boot0 conv=fsync"
    # o$ t2 t- K; s8 b% o  k
  7. execute "dd if=./tf-a/tf-a-stm32mp157d-atk-trusted.stm32 of=${device}boot1 conv=fsync"
    , o" I; q. Q, s0 K) b9 k
  8. & t) b/ o# T: [) }: t+ }
  9. echo "关闭eMMC写flag"
    9 `5 ]' f" `6 X2 j! ^) u
  10. echo 1 > /sys/class/block/mmcblk2boot0/force_ro, W5 K) Z7 u) A$ s# o/ Q
  11. echo 1 > /sys/class/block/mmcblk2boot1/force_ro
    : V/ u& _1 L2 K! f9 A9 Q" W8 y& g  v; \5 o
  12. execute "mmc bootpart enable 1 1 ${device}"5 X( C) J! \/ s! A  S. g6 R  P! |5 W

  13. " I8 P# {* Q1 W( d, y) ~8 i9 r2 X
  14. echo "正在烧录bootfs和根文件系统,请稍候..."2 y  ^7 m- g5 i  C5 I$ J9 R
  15. execute "dd if=./atk_emmc-stm32mp157d-atk-qt.raw of=${device} bs=8M conv=sync status=progress"8 P& \# ^% V7 B0 g; Z, |2 h

  16. : b& V. m' f; ]7 V/ N2 v5 L
  17. echo "正在重定义分区大小..."
    6 @$ }# |. u0 u) K: @! w$ D
  18. sgdisk -d 3 ${device}2 Q1 V5 C5 M0 r. k* `
  19. sync- O9 ^+ d" `& C0 Q- p/ E7 m4 @  Q7 m
  20. sgdisk -a 1 -n 3:136192:0 -c 3:rootfs -t 3:8300 -u 3:491f6117-415d-4f53-88c9-6e0de54deac6 ${device}3 F# k% [) z& m, g- @  B/ \0 p
  21. sync4 u9 F" J% L' P* ?/ X" W7 J
  22. 3 F, S: c4 t" A- w1 B* f7 [9 S
  23. echo "eMMC启动系统烧录完成!请拨码至010,从eMMC启动系统"
复制代码
8 j4 X/ P; a/ l/ U" V9 D
后续烧录固件都将采用SD烧录的方式。
% @! x. z( X( ?7 p7 E9 T  r5 |————————————————
% K; Z) m3 t$ C% \3 r9 M2 \, k版权声明:TNT_TT0 |  k! C5 Y! L6 I0 v( n7 G. j
* r) t: g6 a, S9 e9 I* |8 M4 S

* H) h- v' @) d7 X) a
赞 收藏 评论0 发布时间:2022-9-21 14:41

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版