电子产业一站式赋能平台

PCB联盟网

搜索
查看: 209|回复: 0
收起左侧

嵌入式软件OTA升级,有哪几种FLASH划分方式?

[复制链接]

568

主题

568

帖子

4221

积分

四级会员

Rank: 4

积分
4221
发表于 2025-1-9 17:50:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师% G) e. @2 C& i# E
关注我,一起变得更加优秀!9 B9 Z& r/ B9 K2 V
很多嵌入式硬件设备都集成了OTA功能,以便产品量产后可以通过远程OTA等方式下载的APP应用程序。
3 E: s$ `, d3 @+ S在使用带有OTA功能的固件之前,其实还需要提前下载BootLoader程序,才能进一步下载APP程序,今天就来说说通过OTA方式升级固件时,几种Flash(闪存)划分方式。# f/ ]' z' r- x6 n( O
独立型
* X2 C' L/ j; n1 }6 f  I所谓独立型就是专门划出一部分闪存(Flash)空间用来存储引导程序(BootLoader)。
) Z" E; ]$ D1 W( m0 P- {+ |3 I) E如下图:
  • BootLoader:引导程序
  • Firmware A:应用程序
  • Firmware B:下载备份程序
    # g+ G- Z5 G0 h, V2 K3 |
    5 R  ]3 p; s- x$ s. Z) V9 w$ H9 `

    log3h1usy2k64048968705.jpg

    log3h1usy2k64048968705.jpg

    3 ^: V# T4 B% ~( h( PFirmware A区用来固定执行应用程序,当引导程序(BootLoader)将接收到的新固件存入到Firmware B区,并校验成功后,Firmware A区中的应用程序将被擦除,然后Firmware B区的新固件将写入到Firmware A区中。
    $ O8 I3 n3 P% p6 G$ L! l0 _  t这种方式是比较常见的有一种,有Firmware B备份区,使其下载更加安全。, Q' f+ ^, d' [5 C) d$ r% _
    嵌入型
    7 i* a; z. x+ Y/ W5 }3 G+ U: g5 I* V! D嵌入型就是将引导程序(BootLoader)嵌入到应用程序中去。9 {  E) l3 r0 Z2 O: F

    ie3w4jbw2hv64048968805.jpg

    ie3w4jbw2hv64048968805.jpg
    0 ~* X2 ~! L0 w$ O
    当引导程序(BootLoader)将接收到的新固件存储到Firmware B区,在校验成功后,引导程序(BootLoader)将跳到Firmware B区去执行应用程序。
    , n, `# u7 t; U- v: Q0 b- f% Q/ w6 [外挂型
    ( r6 f6 n2 T7 v- Y外挂型就是外挂Flash或EEPROM用来存储新固件。0 F7 k4 b) [+ m. F, {- N( p9 Y
    当MCU内置Flash较小时,可以选择外挂存储芯片用来缓存新固件。引导程序(BootLoader)将新固件存储到外挂存储芯片中,当校验成功后,Firmware A中的应用程序将被擦除,并被写入外挂存储芯片中的新固件。- q4 d1 J9 U( A- A, q) t

    ezizfatwvzr64048968905.png

    ezizfatwvzr64048968905.png
    ' f: A9 f! ^  E' y3 j
      M& {0 P& e" F( `& G" u
    是不是根据需要,我们可以随意划分MCU的Flash空间呢?2 r) F8 v5 C1 T, y9 w
    当然不是,由于MCU的内置Flash是以块(Block)或者页(Page)为最小擦除单位,我们划分MCU内置Flash空间时必须考虑到实际MCU的块(Block)或者页(Page)的大小。' [0 w( g; d6 }: q  `9 `
    现在我们以TMPM3H6FWFG来举例说明“独立型”的Flash划分方式。从以下规格书中的信息可知,这颗MCU的内置Flash大小为128KB,最小的擦除页(Page)为4KB,最小的擦除块(Block)为32KB。# |: }& ^$ C, F- t4 n) |# [

    ynzlmx0wptl64048969005.png

    ynzlmx0wptl64048969005.png

    7 K8 V5 |# u. B  t 根据以上信息,我们可以对这颗MCU的内置Flash进行如下划分:
    0 u  Y# X$ o2 E2 d4 C8 A/ F! f

    cmbw33kswry64048969105.png

    cmbw33kswry64048969105.png
    ) W" P+ ?& {! U9 u' [, L$ X
    以上只是对固件升级(OTA)中MCU的Flash空间划分简单探讨一下,实际哪种方式更适合,还需要用户自己去评估: c) d$ g3 O4 |" Y: \4 N
    -- 文章来源于牛逼的工程师网友!  q; R% Y# M0 Z1 N
      v3 u+ @: G1 L% j; U
    -END-& `1 x" ^% h9 _- F- m
    往期推荐:点击图片即可跳转阅读
    ( h  p/ ]9 X7 Q8 z+ J" L                                                        + s6 T$ G- T9 a4 x6 k
                                                                   
    ' r) V8 E" P" W8 {* j                                                                       
    ' [0 v! v& V- a. y                                                                               
    , ]3 ]7 l6 H8 v

    iplzwngeazi64048969205.jpg

    iplzwngeazi64048969205.jpg
    * e: Z  F5 e8 @5 o, m3 V* Y0 }' ?
                                                                                    9 b. s; c  N# U" B; a5 h
                                                                                            2025年,抽屉里的嵌入式开发板,早就已经写满了岁月的痕迹!
    4 Y# s  r2 |) E                                                       
    & T7 X6 q( y& h7 G$ J. a                                                                  x7 q1 I# b) a( G. o
                                                                            7 g6 x8 I$ \+ U0 p
                                                                                    6 N2 ]' ?0 E1 Y3 ?. }# A

    2ixawlsyfg564048969305.jpg

    2ixawlsyfg564048969305.jpg

    ; n" r0 x3 r. s# u. C+ v3 j                                                                               
    $ V' K+ t; G! D% d2 L3 ?                                                                                        一些不太成熟的嵌入式系统设计观念!
    0 m3 Q* @' \$ ]+ ?6 Q0 A4 a  \2 a                                                                2 E5 ^+ o3 z9 u# t
                                                                           
    8 z0 o" Y( r/ t# X  E4 G                                                                               
    9 o1 G8 O8 o6 m4 g% ?

    ykcrxj5lvxw64048969406.jpg

    ykcrxj5lvxw64048969406.jpg
    ( D3 z: d# d* R5 q' h! w. q/ j9 j4 K
                                                                                   
    1 E' l! O  D! E                                                                                        当嵌入式软件出现bug的时候,可以按照这种思路进行排查!
    0 u7 L0 M# r( K  T5 n4 j! j                                                                               
    - i- U3 |& H  U$ C+ n8 }/ X                                                                       
    ; \) S' b, b/ y* f                                                                , J7 L1 w4 x% o; r
                                                            我是老温,一名热爱学习的嵌入式工程师5 h3 L) p0 C5 v" l
    关注我,一起变得更加优秀!, S" x$ C' [. p/ @0 A7 r

    1e3l21wbnum64048969506.jpg

    1e3l21wbnum64048969506.jpg
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表