STM32 通用 Bootloader ,让 OTA 更加 Easy,伙伴们玩起来了吗?

发表在 Bootloader2019-3-31 10:18 [复制链接] 57 3360

本帖最后由 Summer_gift 于 2019-9-12 16:50 编辑 5 T; f6 r9 q- G! _% Q
' H8 y5 e1 K9 Z; D' @+ y- `
最新 RT-Thread 发布了一款 STM32 系列的通用 BootLoader,有兴趣的小伙伴可以用用,我试了下,挺方便的。( [- N" `/ g( P1 n) X* _
. H* z: ?% s6 u

RT-Thread 通用 Bootloader 有如下特点:

  • 以 bin 文件的形式提供,无需修改即可使用
  • 资源占用小,ROM 最小只需要 16KB,最大 32KB
  • 适用于多系列 STM32 芯片(目前支持 F1 、F4、L4 系列 )
  • 支持各种 SPI Flash 存储固件
  • 支持固件加解密功能
  • 支持多种固件压缩方式
  • 支持恢复出厂固件功能
  • 以上功能均可自由配置

    ( k7 G+ W4 E7 n' a5 }, V$ x

  E  j4 `, C" Q. N0 H发布文章看这里:
. V( T- s! Y5 ^9 d使用 STM32 通用 Bootloader ,让 OTA 更加 Easy, M  F/ s* A4 t9 v, [

( C. B2 j; [. k6 I: o官方文档中心看这里:
5 Y5 E0 ]8 X: MSTM32 通用 BootLoader 应用笔记& ?2 Q* |4 V" M3 B  L) s  s
通用Bootloader发布准备_docs_figures_http_ota_release.gif / C" R: s- m& X1 K" N( K

- H: y- e; s6 m! K0 `0 ^5 N小伙伴们在使用的过程中有任何问题,或者建议都可以告诉我哦。
: c7 J( W2 o$ {- x对该 bootloader 感兴趣的小伙伴可以加 qq 群: 340822587。8 K1 N+ ]0 ^3 T. E5 f0 w

4 v8 J& d$ y8 U& y. C/ |
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-4-5 11:10:29 | 显示全部楼层
玩了玩,感觉挺好用的。
使用道具 举报 回复
发表于 2019-4-6 18:20:53 | 显示全部楼层
期待的是STM32的全系列支持!" ^% M0 }' y% K/ ~2 d( y* N+ J- i
使用道具 举报 回复
发表于 2019-4-7 22:25:38 | 显示全部楼层
iwillbeback008 发表于 2019-4-6 18:20
( G* Z  U# q) E- B  B+ F0 X1 {* S期待的是STM32的全系列支持!

- Z) x) o0 g0 G/ B, x那你是需要用哪个系列呢?
使用道具 举报 回复
发表于 2019-4-7 22:25:44 | 显示全部楼层
iwillbeback008 发表于 2019-4-6 18:203 C( C, `4 N% e: z# `
期待的是STM32的全系列支持!

) X5 L# y4 e4 _9 P, W
使用道具 举报 回复
发表于 2019-4-7 22:34:54 | 显示全部楼层
flyboy 发表于 2019-4-5 11:10& Y9 C. X  X( \) N/ w
玩了玩,感觉挺好用的。

5 s" m/ E2 [: a0 v, J8 l
使用道具 举报 回复
发表于 2019-4-8 08:17:31 | 显示全部楼层
STM32F7/H7系列有计划支持吗?
! q9 v. @3 a4 d4 C
使用道具 举报 回复
发表于 2019-4-8 14:05:06 | 显示全部楼层
softwind 发表于 2019-4-8 08:17& B" J  [8 Y; a$ X
STM32F7/H7系列有计划支持吗?
$ N% i! g: ^/ i# g& V
如果有社区上有要求的话,可能会支持的。
使用道具 举报 回复
发表于 2019-4-8 16:43:34 | 显示全部楼层
本帖最后由 RT-WH 于 2019-4-8 16:45 编辑
2 X  H  [/ @$ U$ R% T( X% `! U  y4 \1 J8 g5 |( u  D/ J! q. H& s8 p4 d+ R
能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了
使用道具 举报 回复
发表于 2019-4-8 18:19:47 | 显示全部楼层
RT-WH 发表于 2019-4-8 16:43
8 R& g  ]2 h/ I! u能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了

7 ^+ B$ a% J4 d" b% o最后只下一次程序是什么意思?
* ~2 B7 D, @- Q2 ^2 v1 i" D4 }; O4 `) O8 t( d1 A7 z' b. b3 L' @
源码暂时是不开放的,直接使用即可。
使用道具 举报 回复
发表于 2019-4-10 13:51:09 | 显示全部楼层
Summer_gift 发表于 2019-4-7 22:25: R! T; l+ u2 {" d7 Q3 U
那你是需要用哪个系列呢?

  L( A! I7 U) S* V. h6 y我们目前在用的是STM32F207
使用道具 举报 回复
发表于 2019-4-10 14:16:16 | 显示全部楼层
iwillbeback008 发表于 2019-4-10 13:51' q  n# t9 L+ K$ S! z1 v
我们目前在用的是STM32F207

0 p  Z+ B3 R+ D% \1 M好吧
使用道具 举报 回复
发表于 2019-4-10 14:59:23 | 显示全部楼层
Summer_gift 发表于 2019-4-8 18:19! ~2 [" L* j! C4 Y
最后只下一次程序是什么意思?: G4 @6 v9 w( Z: l' N, t

% t' \% R% j* B' F# A源码暂时是不开放的,直接使用即可。

9 S/ W2 A% g  {: ^就是 程序发布生产的时候,工厂生产只需要烧录一次程序就好了,该程序集成了BootLoader 和APP
使用道具 举报 回复
发表于 2019-4-10 15:47:35 | 显示全部楼层
RT-WH 发表于 2019-4-8 16:43
) t9 F. S3 S; O, V能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了
% u5 W. W& f. V& `2 H6 \
这种一般是使用打包工具呢。
* @: [7 S: U& m" s; }' T$ i  `
0 P! F2 H8 p8 \5 g6 P有时还要打些资源文件进去,一起生成  all.bin 供产线批量生产。
使用道具 举报 回复
发表于 2019-4-11 19:08:49 | 显示全部楼层
env配置中IOT里没有OTA配置选项怎么办?) G# c! z+ Z- Z9 f+ ~0 A

) w6 O4 F* l% X; v! M# J已经尝试了pkgs --upgrade,还是没OTA
  ~- Q  p3 l6 e( ]: Z& C
5 p& k$ ^5 S8 N2 J: d9 `env 版本为V1.0.0
使用道具 举报 回复
发表于 2019-4-11 19:36:57 | 显示全部楼层
eric007 发表于 2019-4-11 19:08" @8 s0 s/ [+ B
env配置中IOT里没有OTA配置选项怎么办?5 [* p8 Y% g  O, N) L& n

) ?4 v( ?7 }8 Z* w* D% w  |已经尝试了pkgs --upgrade,还是没OTA

5 q- k3 c0 Q. p: R& penv 列表里面没有 ota 组件,但是有 ota 下载器。
使用道具 举报 回复
发表于 2019-4-11 23:55:45 | 显示全部楼层
楼主,问一下这个使用了文件系统不?片上flash 可以使用littlefs 文件系统不?
& f+ i2 J7 ^" ?, ]' h% u9 b
使用道具 举报 回复
发表于 2019-4-12 07:49:35 | 显示全部楼层
我就想用STM32F7系列的Bootload,请问啥时候推出捏
使用道具 举报 回复
发表于 2019-4-12 09:31:11 | 显示全部楼层
tcsun 发表于 2019-4-11 23:555 S& ~& M& [$ c0 @
楼主,问一下这个使用了文件系统不?片上flash 可以使用littlefs 文件系统不?
5 j' ~9 o' W  x, X ...

: K( v; B+ I$ `& `% |) U$ _这个没有用文件系统,如果用文件系统的话,可以开辟另外的分区。
使用道具 举报 回复
发表于 2019-4-12 09:33:38 | 显示全部楼层
老李的森林 发表于 2019-4-12 07:49. G4 m6 a1 f0 |; w
我就想用STM32F7系列的Bootload,请问啥时候推出捏

" G: k& N0 h0 O5 m! r0 x如果很多人需要的话,后面可能会逐渐支持更多系列
使用道具 举报 回复
发表于 2019-4-12 11:51:08 | 显示全部楼层
Summer_gift 发表于 2019-4-12 09:337 U7 `+ @, O6 f; D8 E( m# g' G
如果很多人需要的话,后面可能会逐渐支持更多系列
  _" S) j2 @9 d
特别感谢下昨天的深圳线下培训。所有的实验,老师全程耐心指导,每个细节都给讲得明明白白,回答问题也极为细心,希望今后能多来点培训
使用道具 举报 回复
发表于 2019-4-12 11:51:40 | 显示全部楼层
老李的森林 发表于 2019-4-12 11:51
0 X. A# I: m( x: _+ r特别感谢下昨天的深圳线下培训。所有的实验,老师全程耐心指导,每个细节都给讲得明明白白,回答问题也极 ...

3 o% \5 |) i% V6 w) l也希望F7系列的Bootload早日上线
使用道具 举报 回复
发表于 2019-4-12 16:32:06 | 显示全部楼层
老李的森林 发表于 2019-4-12 11:51+ W$ ~  p/ x  H4 a) z. o3 t1 b! V
也希望F7系列的Bootload早日上线
+ F, K- x! e) ^& T3 s
嗯嗯 继续加油!
使用道具 举报 回复
发表于 2019-4-15 11:15:16 | 显示全部楼层
看到STM32通用BootLoader很惊奇。想提个建议:恢复出厂固件的按键触发方式能不能弄的复杂点,比如说开机 短按按键,然后松开,然后立即再次按下保持10s之后,再执行恢复出厂固件,等等之类的操作逻辑,避免误触发。
使用道具 举报 回复
发表于 2019-4-15 13:42:53 | 显示全部楼层
碧水渊 发表于 2019-4-15 11:15
' W' I: S  ]3 g, {9 T6 n看到STM32通用BootLoader很惊奇。想提个建议:恢复出厂固件的按键触发方式能不能弄的复杂点,比如说开机 短 ...
. |0 |5 q0 k+ s7 i- O+ i
常见的设备很多就是开机前按下恢复按键,一定时间。# q, Z5 U: b/ Q& W9 z
这里的触发条件为同时按下两个按键保持十秒,这条件已经很不容易触发了吧?
使用道具 举报 回复
发表于 2019-4-16 14:39:36 | 显示全部楼层
我想用STM32L1系列的
使用道具 举报 回复
发表于 2019-4-18 15:37:31 | 显示全部楼层
Summer_gift 发表于 2019-4-15 13:42% B5 [) B6 ?  U+ [/ f/ ^
常见的设备很多就是开机前按下恢复按键,一定时间。) @! q, n  v1 J5 F
这里的触发条件为同时按下两个按键保持十秒,这条件 ...

8 g" R/ _) E# N0 Z- W- l' z我想他的意思是,用类似密码的方式
使用道具 举报 回复
发表于 2019-4-29 09:18:32 | 显示全部楼层
本帖最后由 独角戏 于 2019-4-29 09:23 编辑
' Z: ]5 q8 A, a+ R- U2 ?" T0 n5 i& s5 u) U4 z
fal_cfg.h文件里面有stm32_onchip_falsh_16k的外部定义声明,可是我没找到这个结构体变量在哪定义的
fal_partition.png
使用道具 举报 回复
发表于 2019-4-29 15:43:35 | 显示全部楼层
独角戏 发表于 2019-4-29 09:18
2 g) v& k* R9 f5 [fal_cfg.h文件里面有stm32_onchip_falsh_16k的外部定义声明,可是我没找到这个结构体变量在哪定义的 ...
4 P0 W$ b, b$ T0 _
在 flash 驱动的代码里呢
使用道具 举报 回复
发表于 2019-5-13 21:17:11 | 显示全部楼层
模块用的sim800c ,用Http_ota下载的时候,每次都是只能下载到百分之90就不能下载了2 z. N( b+ g6 Y4 K2 B) q7 G8 c
使用道具 举报 回复
发表于 2019-5-13 21:25:24 | 显示全部楼层
shao7936626 发表于 2019-5-13 21:17+ m0 Y3 e# V7 Y' }1 {) N$ {
模块用的sim800c ,用Http_ota下载的时候,每次都是只能下载到百分之90就不能下载了9 F0 c4 j0 e0 i& y& [
...
" B* L, h! `$ }" p; ?
一样,我的有时到99%,就超时了
使用道具 举报 回复
发表于 2019-5-13 21:42:10 | 显示全部楼层
zailiy 发表于 2019-5-13 21:25
4 u) O2 V% S- c0 |9 z; \一样,我的有时到99%,就超时了

6 L+ H3 h- z0 T7 Z, C后来解决了吗1 g- u% J3 A" K; |+ J9 E
使用道具 举报 回复
发表于 2019-5-17 21:34:13 | 显示全部楼层
shao7936626 发表于 2019-5-13 21:421 v% L2 G7 g2 p, j! f) c# d
后来解决了吗
8 c- @  u) ~' U
我用wget先下载到文件系统里保存,在写入fal 分区就可以。也没搞清什么问题。直接写入分区到90%多就接收超时。
使用道具 举报 回复
发表于 2019-5-18 12:06:14 来自手机 | 显示全部楼层
可惜没有源码,不能修改为汽车电子的bootloader。该bootloader不符合汽车电子要求,汽车电子产品要求ECU中不能常驻写flash的代码,这部分代码必须是下载时加载在RAM中执行,升级完成消失。
使用道具 举报 回复
发表于 2019-5-20 09:19:05 | 显示全部楼层
Spunky 发表于 2019-5-18 12:06
8 y; u# l: F0 X! K/ N& R可惜没有源码,不能修改为汽车电子的bootloader。该bootloader不符合汽车电子要求,汽车电子产品要求ECU中 ...
, m2 R8 |) g. s6 }. I
这些可能需要持续的改进了
使用道具 举报 回复
发表于 2019-6-12 10:45:48 | 显示全部楼层
你好,遇到一个问题用的 F407   atk  探索者的开发板,ymodem升级后,设备挂了,必须重新烧录BootLoader,才能正常,怀疑是自己固件下载地址配置错了,烧录到BootLoader的区域了,下面是图,但又找不出,能帮忙看下吗5 z1 C! f/ q- c
LQX(V[Z_K_Y[ER)WJ5I_6CS.png
62)D(([VWWPLKTE`DK28F@Y.png
使用道具 举报 回复
发表于 2019-6-12 16:23:21 | 显示全部楼层
15260983113 发表于 2019-6-12 10:459 i$ x% v9 V) G" L: i( W# q" L8 j
你好,遇到一个问题用的 F407   atk  探索者的开发板,ymodem升级后,设备挂了,必须重新烧录BootLoader,才 ...

# }  v" C! W- s5 M- r+ ^仔细确定一下你的分区配置,然后和 BOOTLOADER 的作对比。
使用道具 举报 回复
发表于 2019-6-24 22:40:18 | 显示全部楼层
我想问这个可以用在裸跑的系统上吗?不用rtt也能用吗?
使用道具 举报 回复
发表于 2019-6-25 09:28:53 | 显示全部楼层
boelin 发表于 2019-6-24 22:40$ m9 k0 a0 Q! A
我想问这个可以用在裸跑的系统上吗?不用rtt也能用吗?

' a! f! S( N5 T可以的,这只是一个 bootloader,不是用来专门启动 rtt 的。
使用道具 举报 回复
发表于 2019-7-15 09:23:43 | 显示全部楼层
rom大小限制能不能放到2048K呢,比如stm32f429iit6内部rom就是2m的
使用道具 举报 回复
发表于 2019-7-16 09:32:01 | 显示全部楼层
xanadu 发表于 2019-7-15 09:23
/ Z2 Q& r2 k' |  |' l( Z' G" Vrom大小限制能不能放到2048K呢,比如stm32f429iit6内部rom就是2m的
% L& h& L6 z) B! d! B; X
嗯,技术上是可以实现的,只是用 2M ROM 的情况很少,一般都会外接 SPI flash 来实现,所以没有做这个支持。如果有很多人需要的话,会尝试增加这个特性的。
7 F0 m4 |- G. [
( M* z7 y. Z( }5 b% g5 N/ Z谢谢反馈。
使用道具 举报 回复
发表于 2019-7-23 08:54:10 | 显示全部楼层
请问STM32L4系列会支持吗,就是潘多拉板那个?
使用道具 举报 回复
发表于 2019-7-23 09:08:45 | 显示全部楼层
aprilhome 发表于 2019-7-23 08:544 L) f5 q7 a0 c3 o1 [0 \8 o3 g3 `
请问STM32L4系列会支持吗,就是潘多拉板那个?

& u: I/ O2 d- G4 f/ j' w后续这个系列会逐渐支持的
使用道具 举报 回复
发表于 2019-8-24 10:28:28 | 显示全部楼层
我在制作 Bootloader 的时候,板子是103c8,flash是64K,RAM是20K,选择了串口后,生成boot,然后通过j-flash烧进去,串口不打印输出?
: y2 [: p& {" Y网页提示:RAM过小不能选择加密和压缩  ,RAM大于64K就不显示这个提示了,之后那个压缩选项就是灰色的了。选gzip或选择fastlz
使用道具 举报 回复
发表于 2019-8-24 10:34:33 | 显示全部楼层
13450353587 发表于 2019-8-24 10:28
) V  y' ]  ?; z, y我在制作 Bootloader 的时候,板子是103c8,flash是64K,RAM是20K,选择了串口后,生成boot,然后通过j-flas ...
$ r  |8 G+ W% [& A
103c8 的资源太小了,是支持不了的。最少也要 256 的 flash 吧,才有 OTA 的意义。
使用道具 举报 回复
发表于 2019-9-12 15:36:29 | 显示全部楼层
http_ota没用跑起来哦,我用的STM32F407VE【512K FLASH  192K SRAM】,4.0.2版本。at_device为最新的版本。现在越到了以下问题:
) ~7 o% E; d8 W! v1 r6 r
( T- z( G  z+ s* K1、http下载后存到内部FLASH每次下载到90%的时候就失败了,存到外部SPI FLASH(W25Q64)可以完整下载下来
  e. d9 [; W" [3 l0 j: U& u) r) ]7 V) v* i: W$ E* G
2、对比下载下来的文件,数据超过4K就对不上了0 R. Q5 g$ H7 q7 F- [" Z+ F9 j

" i: X  a: B' _. Y: h* L/ v/ \6 h7 L1 U
使用道具 举报 回复
发表于 2019-9-12 16:10:32 | 显示全部楼层
邓亨礼 发表于 2019-9-12 15:36% p# F( F/ y- E7 T
http_ota没用跑起来哦,我用的STM32F407VE【512K FLASH  192K SRAM】,4.0.2版本。at_device为最新的版本。 ...
7 ]3 J3 l9 u5 H% V  L
下载失败要检查一下下载器,也就是你做的 app,分区情况是否完全正确
使用道具 举报 回复
发表于 2019-9-13 15:06:13 | 显示全部楼层
Summer_gift 发表于 2019-9-12 16:10
. }% A. m- o- [% q+ [下载失败要检查一下下载器,也就是你做的 app,分区情况是否完全正确
  ^  h1 r  Q5 |7 z
这是我的分区表,程序大小184K,获取的固件大小242K,不用Bootloader,只下载固件,这样分配有问题吗?% A3 \4 n  G9 w$ V
#define FAL_PART_TABLE                                                                     \
2 K% K, }& |! O; s{                                                                                          \2 E/ @: F5 Q, d8 K
        {FAL_PART_MAGIC_WROD, "app",      "onchip_flash_16k",   0,           (200 * 1024), 0}, \; G" Z% k4 X7 j
        {FAL_PART_MAGIC_WROD, "download", "onchip_flash_128k", (130 * 1024), (250 * 1024), 0}, \
! f) l- c% p7 }, \" Y/ J2 C2 }}
; @' F9 V  c: S# a9 \- }$ e. p/ D( e" P; Z/ t; P/ t
调试发现,使用内部FLASH的时候,把fal_partition_erase和fal_partition_write屏蔽之后,固件是能正常下载完成的,但是只要把fal_partition_erase放开,fal_partition_write都还是屏蔽的没往FLASH写,每次就只能下载到90%就失败了。但是使用外部SPI FLASH的话是能正常下载完成的
# {7 `! R5 v2 H( b- I8 e# {& d/ M8 y$ v% B/ w5 L9 U
麻烦大佬能不能抽空测试下,看看写内部FLASH的能不能成功哦# @9 t# R" D4 u- j5 l. I
使用道具 举报 回复
发表于 2019-9-13 15:48:15 | 显示全部楼层
本帖最后由 Summer_gift 于 2019-9-13 15:55 编辑
1 M% l9 M3 Y" L+ s  _; o5 o
邓亨礼 发表于 2019-9-13 15:065 O. A! c+ E) D$ v1 S5 W$ X
这是我的分区表,程序大小184K,获取的固件大小242K,不用Bootloader,只下载固件,这样分配有问题吗?
6 s5 D7 B& S2 t& ~$ g7 T# ...

# j9 O5 W7 j6 W% S! F# g1 i4 t推荐你了解一下 F4 系列 flash 的擦写分块情况,你这这样分区的话,擦写 download 分区的时候,有可能把你 app 分区的后半段程序给擦没了。因为擦除的时候是有最小粒度的,照你这样分区,你的程序八成是自己擦掉了自己。" f& R- r1 E" c( g
另外 onchip 16k 命令总共只有 64k 大小的存储空间,为什么你能存下 184k 的用户 app?
. g" k1 [2 @. g# Y' f+ a2 L
使用道具 举报 回复
发表于 2019-9-13 17:35:58 | 显示全部楼层
我用的STM32F407VE FLASH分块是这样的哈:4 f+ f5 e% U8 O. `$ Z
#define FLASH_SIZE_GRANULARITY_16K   (4 * 16 * 1024)0 c% `4 u3 ?9 l* ]+ m5 y
#define FLASH_SIZE_GRANULARITY_64K   (64 * 1024)
' I' l8 M: K1 b9 l; P4 ?#define FLASH_SIZE_GRANULARITY_128K  (3 * 128 * 1024)3 L$ w, w: ]9 y
* M! M  ~; s6 j3 o1 S: W
我的app(184K)用的16K分区、64K分区和第一块128分区,总共256K;我的download分区起始地址(130*1024),F4擦出的时候按块擦出的,其实擦出的是第二块和第三块128K分区,在线调试的时候擦除的块号和扇区数量也是这样,没有擦到第一块128K分区的。这里的app分区有没有都可以的吧,主要是download分区,刚开始只有download分区也是同样的效果。
% U! l% E! f7 q5 K7 d) q+ T8 F* H8 r7 l1 C, e, \6 c# o0 z# U3 k
或是大佬觉得这样分区有问题,觉得应该怎么分呢?
% i  G& ?; }, M4 N' N
使用道具 举报 回复
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表