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

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

本帖最后由 Summer_gift 于 2019-9-12 16:50 编辑 ' q% |5 p1 j, k5 w/ r! y; E9 Q

! E& X/ ]+ i- v& O" }& k最新 RT-Thread 发布了一款 STM32 系列的通用 BootLoader,有兴趣的小伙伴可以用用,我试了下,挺方便的。
8 s( m* o* q1 C. l; S1 o, d* a2 [& I" _% {- X# u4 W7 g

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

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

    ) J- D5 E% |) K7 k( h; q/ R

$ |  x# ]& Z6 L) a发布文章看这里:
1 D) G3 y/ k$ `, O# x/ B使用 STM32 通用 Bootloader ,让 OTA 更加 Easy
' S9 s! z  a9 g8 z+ D
: D; r' e8 M+ o: [& K: k0 Q) M5 h; ~) h
官方文档中心看这里:0 {! w6 U" }& O5 y% x( j
STM32 通用 BootLoader 应用笔记
" w  H" M' F8 ?3 V* B3 J
通用Bootloader发布准备_docs_figures_http_ota_release.gif
" P4 h; B! _. O4 s
  D5 W* j& V2 f9 t; g* T& H
小伙伴们在使用的过程中有任何问题,或者建议都可以告诉我哦。( |2 v% m0 t& B' R- i: L$ v6 K
对该 bootloader 感兴趣的小伙伴可以加 qq 群: 340822587。
7 |* ?: }; h) ]1 V& X! e
' @/ y: l; f  h) q! _% j
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-4-5 11:10:29 | 显示全部楼层
玩了玩,感觉挺好用的。
使用道具 举报 回复
发表于 2019-4-6 18:20:53 | 显示全部楼层
期待的是STM32的全系列支持!$ H6 J! E3 ]- c) h" \+ B3 J' G- a: X
使用道具 举报 回复
发表于 2019-4-7 22:25:38 | 显示全部楼层
iwillbeback008 发表于 2019-4-6 18:206 i$ _8 p3 I  B9 e' G, i
期待的是STM32的全系列支持!

! T: ~" l; ]/ N& m那你是需要用哪个系列呢?
使用道具 举报 回复
发表于 2019-4-7 22:25:44 | 显示全部楼层
iwillbeback008 发表于 2019-4-6 18:20
* a( N# @- r" R期待的是STM32的全系列支持!

: c! U2 e$ w5 H- G" }
使用道具 举报 回复
发表于 2019-4-7 22:34:54 | 显示全部楼层
flyboy 发表于 2019-4-5 11:10
6 i& d7 p& [. ]* z玩了玩,感觉挺好用的。
  l4 I, k) H6 F6 j3 X/ O% v
使用道具 举报 回复
发表于 2019-4-8 08:17:31 | 显示全部楼层
STM32F7/H7系列有计划支持吗?
0 Z3 i, @3 Z2 T
使用道具 举报 回复
发表于 2019-4-8 14:05:06 | 显示全部楼层
softwind 发表于 2019-4-8 08:17
: Q4 T# \$ z$ {' ~0 o9 {" I  GSTM32F7/H7系列有计划支持吗?
, E8 h9 I) o( M- {4 a0 ~
如果有社区上有要求的话,可能会支持的。
使用道具 举报 回复
发表于 2019-4-8 16:43:34 | 显示全部楼层
本帖最后由 RT-WH 于 2019-4-8 16:45 编辑 7 B) U8 Y% q. u; b
, I$ [# A. ^+ u, O8 @4 `
能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了
使用道具 举报 回复
发表于 2019-4-8 18:19:47 | 显示全部楼层
RT-WH 发表于 2019-4-8 16:43( e$ U8 U) A, n" N* [
能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了
0 t1 H+ e( d1 K$ d( i  Y: h
最后只下一次程序是什么意思?% w3 B4 i7 n( N4 P4 }) t# M  U
% A7 @" O0 |, o$ a
源码暂时是不开放的,直接使用即可。
使用道具 举报 回复
发表于 2019-4-10 13:51:09 | 显示全部楼层
Summer_gift 发表于 2019-4-7 22:258 @% \$ A) R: U0 J6 Q
那你是需要用哪个系列呢?

; G* U8 A4 Y. b& G我们目前在用的是STM32F207
使用道具 举报 回复
发表于 2019-4-10 14:16:16 | 显示全部楼层
iwillbeback008 发表于 2019-4-10 13:51
+ Q4 e! a' E$ \, o1 T& w我们目前在用的是STM32F207

' q+ j7 r4 f# }( W% G' Q好吧
使用道具 举报 回复
发表于 2019-4-10 14:59:23 | 显示全部楼层
Summer_gift 发表于 2019-4-8 18:19
; W; K) Z! o) G$ c) }& z7 }最后只下一次程序是什么意思?1 @8 x; X* T& [) F

2 I5 O. \) p7 m" v: I2 c/ R# g7 e源码暂时是不开放的,直接使用即可。

& ^7 m4 N& z+ v( u( e; b0 @1 o就是 程序发布生产的时候,工厂生产只需要烧录一次程序就好了,该程序集成了BootLoader 和APP
使用道具 举报 回复
发表于 2019-4-10 15:47:35 | 显示全部楼层
RT-WH 发表于 2019-4-8 16:43* i4 P: M: T: p! P0 W% W
能开放代码吗?我想直接集到app工程里  最后只要下一次程序就好了
, E6 V( |2 ~+ d- {1 ^
这种一般是使用打包工具呢。
& K% n3 a0 _, g* Y' R" j7 ^3 C( Q+ B! T
有时还要打些资源文件进去,一起生成  all.bin 供产线批量生产。
使用道具 举报 回复
发表于 2019-4-11 19:08:49 | 显示全部楼层
env配置中IOT里没有OTA配置选项怎么办?8 U- C" [, c5 x. r

6 G9 ~5 J# A2 K) m4 [- q已经尝试了pkgs --upgrade,还是没OTA
+ K9 f7 N4 n! }  p
* k/ m9 A. d  tenv 版本为V1.0.0
使用道具 举报 回复
发表于 2019-4-11 19:36:57 | 显示全部楼层
eric007 发表于 2019-4-11 19:08
. j2 T- g4 n7 q+ q! K4 c7 f" \( senv配置中IOT里没有OTA配置选项怎么办?9 y2 o  h% x/ F; y3 W+ C

( r6 L* v0 }' H; j. p' H7 ]1 W已经尝试了pkgs --upgrade,还是没OTA

$ @( d6 {; f5 r6 Kenv 列表里面没有 ota 组件,但是有 ota 下载器。
使用道具 举报 回复
发表于 2019-4-11 23:55:45 | 显示全部楼层
楼主,问一下这个使用了文件系统不?片上flash 可以使用littlefs 文件系统不?9 D. I1 g. R7 g! S6 Q# ^6 @
使用道具 举报 回复
发表于 2019-4-12 07:49:35 | 显示全部楼层
我就想用STM32F7系列的Bootload,请问啥时候推出捏
使用道具 举报 回复
发表于 2019-4-12 09:31:11 | 显示全部楼层
tcsun 发表于 2019-4-11 23:554 }1 u9 x; d9 M7 D: }( F; A' T
楼主,问一下这个使用了文件系统不?片上flash 可以使用littlefs 文件系统不?
1 s: \! [2 b7 g% ~3 e: d/ { ...

: M! K4 T0 S2 U" x9 ]9 b+ W这个没有用文件系统,如果用文件系统的话,可以开辟另外的分区。
使用道具 举报 回复
发表于 2019-4-12 09:33:38 | 显示全部楼层
老李的森林 发表于 2019-4-12 07:49* w/ P0 l0 D* G% E2 n; b
我就想用STM32F7系列的Bootload,请问啥时候推出捏
( m# a, I+ z# [
如果很多人需要的话,后面可能会逐渐支持更多系列
使用道具 举报 回复
发表于 2019-4-12 11:51:08 | 显示全部楼层
Summer_gift 发表于 2019-4-12 09:33, [0 r$ g) y; r3 l- _
如果很多人需要的话,后面可能会逐渐支持更多系列
! K' X8 n, R$ _8 T! L; I
特别感谢下昨天的深圳线下培训。所有的实验,老师全程耐心指导,每个细节都给讲得明明白白,回答问题也极为细心,希望今后能多来点培训
使用道具 举报 回复
发表于 2019-4-12 11:51:40 | 显示全部楼层
老李的森林 发表于 2019-4-12 11:517 P1 Q/ e1 q; O
特别感谢下昨天的深圳线下培训。所有的实验,老师全程耐心指导,每个细节都给讲得明明白白,回答问题也极 ...

7 f( c! [' p1 k也希望F7系列的Bootload早日上线
使用道具 举报 回复
发表于 2019-4-12 16:32:06 | 显示全部楼层
老李的森林 发表于 2019-4-12 11:51
0 I; t" D) n# q- u; q% d1 E7 q0 B也希望F7系列的Bootload早日上线
2 l; n6 a+ k) Z, d; _
嗯嗯 继续加油!
使用道具 举报 回复
发表于 2019-4-15 11:15:16 | 显示全部楼层
看到STM32通用BootLoader很惊奇。想提个建议:恢复出厂固件的按键触发方式能不能弄的复杂点,比如说开机 短按按键,然后松开,然后立即再次按下保持10s之后,再执行恢复出厂固件,等等之类的操作逻辑,避免误触发。
使用道具 举报 回复
发表于 2019-4-15 13:42:53 | 显示全部楼层
碧水渊 发表于 2019-4-15 11:15
5 y- G9 `5 m/ c: `; p看到STM32通用BootLoader很惊奇。想提个建议:恢复出厂固件的按键触发方式能不能弄的复杂点,比如说开机 短 ...
6 U$ ~. s" K2 i2 _+ ^. \. z: s8 H+ v' b
常见的设备很多就是开机前按下恢复按键,一定时间。
$ i  t9 L* F% ~6 w# e- d$ w这里的触发条件为同时按下两个按键保持十秒,这条件已经很不容易触发了吧?
使用道具 举报 回复
发表于 2019-4-16 14:39:36 | 显示全部楼层
我想用STM32L1系列的
使用道具 举报 回复
发表于 2019-4-18 15:37:31 | 显示全部楼层
Summer_gift 发表于 2019-4-15 13:42
. S/ F: g2 m" R. p, B$ m2 @  b常见的设备很多就是开机前按下恢复按键,一定时间。
. @5 D: }2 f& e1 n4 |. j/ z: j( ]: L这里的触发条件为同时按下两个按键保持十秒,这条件 ...

+ C9 P  a' p$ h- Z3 A我想他的意思是,用类似密码的方式
使用道具 举报 回复
发表于 2019-4-29 09:18:32 | 显示全部楼层
本帖最后由 独角戏 于 2019-4-29 09:23 编辑
  x9 K3 g. d8 _: O+ Y1 p9 e: t* a( J2 r4 L
fal_cfg.h文件里面有stm32_onchip_falsh_16k的外部定义声明,可是我没找到这个结构体变量在哪定义的
fal_partition.png
使用道具 举报 回复
发表于 2019-4-29 15:43:35 | 显示全部楼层
独角戏 发表于 2019-4-29 09:18; \* J$ N) Y' |0 N; D$ x; L. I
fal_cfg.h文件里面有stm32_onchip_falsh_16k的外部定义声明,可是我没找到这个结构体变量在哪定义的 ...

$ j/ }' a! _- N7 H4 ?在 flash 驱动的代码里呢
使用道具 举报 回复
发表于 2019-5-13 21:17:11 | 显示全部楼层
模块用的sim800c ,用Http_ota下载的时候,每次都是只能下载到百分之90就不能下载了
* g5 b/ S$ B- x9 t
使用道具 举报 回复
发表于 2019-5-13 21:25:24 | 显示全部楼层
shao7936626 发表于 2019-5-13 21:17- K8 I  j. p& v5 P6 E2 Z
模块用的sim800c ,用Http_ota下载的时候,每次都是只能下载到百分之90就不能下载了1 I8 v7 _% T  \( Q" E5 I
...

6 @' I9 e1 D' a一样,我的有时到99%,就超时了
使用道具 举报 回复
发表于 2019-5-13 21:42:10 | 显示全部楼层
zailiy 发表于 2019-5-13 21:25  M* v, s+ R6 _4 i; r4 X3 F, V
一样,我的有时到99%,就超时了

6 _! z: b6 q8 B# x  q/ t1 Z- k后来解决了吗
1 j9 N3 O" u* \5 U
使用道具 举报 回复
发表于 2019-5-17 21:34:13 | 显示全部楼层
shao7936626 发表于 2019-5-13 21:428 r5 R- j; ^# s( ^, T* ^1 c3 K
后来解决了吗

+ E% X2 i' Q; A# h' _  Y我用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; c4 A' b8 q# W6 u# M* E# l
可惜没有源码,不能修改为汽车电子的bootloader。该bootloader不符合汽车电子要求,汽车电子产品要求ECU中 ...
9 ^7 M/ A* k$ ]3 |9 N
这些可能需要持续的改进了
使用道具 举报 回复
发表于 2019-6-12 10:45:48 | 显示全部楼层
你好,遇到一个问题用的 F407   atk  探索者的开发板,ymodem升级后,设备挂了,必须重新烧录BootLoader,才能正常,怀疑是自己固件下载地址配置错了,烧录到BootLoader的区域了,下面是图,但又找不出,能帮忙看下吗. q9 ^+ l+ W8 m2 V! R/ F" u9 J: {' O4 @
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:45
8 r  c5 c5 u& F) Z' N9 D你好,遇到一个问题用的 F407   atk  探索者的开发板,ymodem升级后,设备挂了,必须重新烧录BootLoader,才 ...

  k+ _8 L8 Z$ |) H+ g仔细确定一下你的分区配置,然后和 BOOTLOADER 的作对比。
使用道具 举报 回复
发表于 2019-6-24 22:40:18 | 显示全部楼层
我想问这个可以用在裸跑的系统上吗?不用rtt也能用吗?
使用道具 举报 回复
发表于 2019-6-25 09:28:53 | 显示全部楼层
boelin 发表于 2019-6-24 22:40' L( s* n8 p+ S# }5 S1 |
我想问这个可以用在裸跑的系统上吗?不用rtt也能用吗?

; I2 Z& e" C" X. ~- M- }) e可以的,这只是一个 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. {/ n4 ?  Y9 m% N0 Z; D/ ^
rom大小限制能不能放到2048K呢,比如stm32f429iit6内部rom就是2m的
) E! b4 ~8 ^" s5 O, |
嗯,技术上是可以实现的,只是用 2M ROM 的情况很少,一般都会外接 SPI flash 来实现,所以没有做这个支持。如果有很多人需要的话,会尝试增加这个特性的。* R; u3 y! N7 p2 v$ T' k8 q

1 j+ Z  s5 W% O; j/ C1 T8 H3 Q6 q谢谢反馈。
使用道具 举报 回复
发表于 2019-7-23 08:54:10 | 显示全部楼层
请问STM32L4系列会支持吗,就是潘多拉板那个?
使用道具 举报 回复
发表于 2019-7-23 09:08:45 | 显示全部楼层
aprilhome 发表于 2019-7-23 08:541 J5 Q$ a" f5 D& T3 G/ S
请问STM32L4系列会支持吗,就是潘多拉板那个?

* B+ b9 U- `3 u0 N" c2 n9 F, Q后续这个系列会逐渐支持的
使用道具 举报 回复
发表于 2019-8-24 10:28:28 | 显示全部楼层
我在制作 Bootloader 的时候,板子是103c8,flash是64K,RAM是20K,选择了串口后,生成boot,然后通过j-flash烧进去,串口不打印输出?
  c5 |( T9 Q' n- k$ z7 ]- |' r网页提示:RAM过小不能选择加密和压缩  ,RAM大于64K就不显示这个提示了,之后那个压缩选项就是灰色的了。选gzip或选择fastlz
使用道具 举报 回复
发表于 2019-8-24 10:34:33 | 显示全部楼层
13450353587 发表于 2019-8-24 10:28
! o' H' m' d3 ?' ^8 k我在制作 Bootloader 的时候,板子是103c8,flash是64K,RAM是20K,选择了串口后,生成boot,然后通过j-flas ...
, v4 {# K: O7 D6 Y
103c8 的资源太小了,是支持不了的。最少也要 256 的 flash 吧,才有 OTA 的意义。
使用道具 举报 回复
发表于 2019-9-12 15:36:29 | 显示全部楼层
http_ota没用跑起来哦,我用的STM32F407VE【512K FLASH  192K SRAM】,4.0.2版本。at_device为最新的版本。现在越到了以下问题:
- @0 ^) A# r& l0 s# Z
! i% T$ ^1 g: w2 S1、http下载后存到内部FLASH每次下载到90%的时候就失败了,存到外部SPI FLASH(W25Q64)可以完整下载下来
; T" M- ~: L. S- o% ~" y7 Z, a& g0 y4 G) A: l
2、对比下载下来的文件,数据超过4K就对不上了8 \+ j! I" }0 D) H
5 n1 ?. Q( T5 F. Q
使用道具 举报 回复
发表于 2019-9-12 16:10:32 | 显示全部楼层
邓亨礼 发表于 2019-9-12 15:36; @, A! @& H- u5 B
http_ota没用跑起来哦,我用的STM32F407VE【512K FLASH  192K SRAM】,4.0.2版本。at_device为最新的版本。 ...
& b+ D0 e& I# e5 G9 T
下载失败要检查一下下载器,也就是你做的 app,分区情况是否完全正确
使用道具 举报 回复
发表于 2019-9-13 15:06:13 | 显示全部楼层
Summer_gift 发表于 2019-9-12 16:10! [& H5 I! b6 F/ N! U/ n. E) e
下载失败要检查一下下载器,也就是你做的 app,分区情况是否完全正确

/ M  a& U* j. m4 h这是我的分区表,程序大小184K,获取的固件大小242K,不用Bootloader,只下载固件,这样分配有问题吗?9 R3 C( L5 A6 k1 O' ~! g9 J
#define FAL_PART_TABLE                                                                     \% t7 I0 y: O, _) ~$ |1 I
{                                                                                          \
# q0 s  W& }* ~+ h        {FAL_PART_MAGIC_WROD, "app",      "onchip_flash_16k",   0,           (200 * 1024), 0}, \# G" h5 B/ n) d% t0 f
        {FAL_PART_MAGIC_WROD, "download", "onchip_flash_128k", (130 * 1024), (250 * 1024), 0}, \
4 ?  j8 R' l2 `( J6 G1 a2 R}
4 A1 w1 c+ R% V1 b2 m/ d6 I7 _# T" A2 j- m" L, ?7 _4 e
调试发现,使用内部FLASH的时候,把fal_partition_erase和fal_partition_write屏蔽之后,固件是能正常下载完成的,但是只要把fal_partition_erase放开,fal_partition_write都还是屏蔽的没往FLASH写,每次就只能下载到90%就失败了。但是使用外部SPI FLASH的话是能正常下载完成的, w6 ?+ M3 `9 `+ X. {" d
- }4 u7 a% K/ S+ M, b
麻烦大佬能不能抽空测试下,看看写内部FLASH的能不能成功哦
* q8 w. Z3 z; q0 q
使用道具 举报 回复
发表于 2019-9-13 15:48:15 | 显示全部楼层
本帖最后由 Summer_gift 于 2019-9-13 15:55 编辑
7 x, n6 [! l! ?8 @% x' D/ q
邓亨礼 发表于 2019-9-13 15:06' M+ d  `1 ]( x6 s
这是我的分区表,程序大小184K,获取的固件大小242K,不用Bootloader,只下载固件,这样分配有问题吗?
! T1 M1 z6 F+ O3 F# ...

4 Z& z$ z; B  {, P2 T5 m" `推荐你了解一下 F4 系列 flash 的擦写分块情况,你这这样分区的话,擦写 download 分区的时候,有可能把你 app 分区的后半段程序给擦没了。因为擦除的时候是有最小粒度的,照你这样分区,你的程序八成是自己擦掉了自己。
- s3 J+ P, ^) w# s; {9 P另外 onchip 16k 命令总共只有 64k 大小的存储空间,为什么你能存下 184k 的用户 app?! a8 R/ Y, C0 ?% n! F( x
使用道具 举报 回复
发表于 2019-9-13 17:35:58 | 显示全部楼层
我用的STM32F407VE FLASH分块是这样的哈:& c0 U6 }0 j; w# x
#define FLASH_SIZE_GRANULARITY_16K   (4 * 16 * 1024); y  ?8 p8 h# n) I; \6 J
#define FLASH_SIZE_GRANULARITY_64K   (64 * 1024)1 S! e  C) W- ]8 f
#define FLASH_SIZE_GRANULARITY_128K  (3 * 128 * 1024)# c0 T2 E0 t8 ?6 }

7 m8 v6 v( t5 h我的app(184K)用的16K分区、64K分区和第一块128分区,总共256K;我的download分区起始地址(130*1024),F4擦出的时候按块擦出的,其实擦出的是第二块和第三块128K分区,在线调试的时候擦除的块号和扇区数量也是这样,没有擦到第一块128K分区的。这里的app分区有没有都可以的吧,主要是download分区,刚开始只有download分区也是同样的效果。: [+ y! V1 z+ j) k* x3 J" Y/ T  N" o

) X  d& v4 d; r) W( u" x, a4 y或是大佬觉得这样分区有问题,觉得应该怎么分呢?
2 Z/ G/ k- b( h/ }
使用道具 举报 回复
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 33 主题
  2. 3972 帖子
  3. 3972 积分

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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