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

【源码】STM32的另类Bootloader(YAB),F103/F4/L4/F7,STLINK-V3MINI  

[复制链接]
radio2radio 发布时间:2020-7-18 11:27
也开始玩儿Bootloader,闲着也是闲着。
, P0 A! v/ c* z( b/ M8 i0 |; ]
+ d1 J, X. o4 B/ m) Z 2020-07-20:主角登场,源码已经上传github,同时也放在了下面。  . B3 ?1 C0 a& Y) g+ C2 ?' [
2020-07-24:  大规模更新YAB。   
3 j9 f+ x% j1 m% C$ G2 H2020-12-26:  增加了F103, F407, L433, F723的样板工程,是内部Flash模拟U盘的。   
  W* E$ u' \8 Q" ~. |3 ]

1 n% S% w+ _  M+ U2 Chttp://github.com/RadioOperator/Yet_Another_Bootloader. v) W; i% e0 M1 N7 e0 @

' ~9 e" Q! Z9 O( @$ N- p$ h9 k8 t应该不难移植到其他有正常MSC功能的IC上面,特别是STM32,许多库函数名字都一模一样(HAL)。
  c) L( q' D  h/ V/ R1 T4 j# H& V$ ]1 U5 r' l
目标IC:STM32F103,STM32F407, STM32L433,STM32F723, STLINK-V3MINI板等。( z  i) r) I3 o2 e
目标Bootloader:   USB MSC,PC拖拽下载,不需要上位机软件。6 d7 W9 c+ n0 B8 k0 [. M% I9 |

" }. K7 i( Z/ D+ CYAB程序的大小,一般都小于16KB,直接用CubeMX开出来的,只依靠AC6的最小优化。
! @* a% N6 Q/ U+ p' S8 k" L其余的全部Flash,都可以由用户使用。例如128KB的F103,用户APP最大可以用112KB。
" I1 g" ?& g: Y: J  {. e+ A$ e6 Q8 G  e$ P. g
STLINK-V3MINI用的YAB,有点特别和复杂。
9 q5 ]( B$ ~# U9 o- Y" k这个我做到了可以和原厂的STLINK-V3的Bootloader共存,这样就实现了随便刷来刷去,不担心搞坏STLINK-V3了。
- ~2 _- y# R2 K- g% Q因为STLINK-V3MINI的MSC模拟U盘是开在RAM里面的,最大192KB。Flash可以分出两块出来,可以安装两个不同的程序,实现两种功能。6 z  k% f& V, u5 i* D. a& l. M8 r
  T) P. _, x5 v# i* m
详情在源码里面都有:, P% I1 n, H0 H5 G$ x2 v
) l4 Q* c4 B" J( h& j$ r8 y$ \

; ]* G# V8 u& c. B% Q8 f2 p) L5 U" \
STLINKv3_YAB.jpg

Yet_Another_Bootloader-master20201226.zip

下载

7.23 MB, 下载次数: 144

赞 1 收藏 10 评论21 发布时间:2020-7-18 11:27

举报

21个回答
radio2radio 回答时间:2020-7-21 11:09:24
乐天乐 发表于 2020-7-21 08:32
1 I7 L- f  y3 h! d3 m+ d4 B. A高手啊!请问怎么把block设定为4096大小,而不是默认的512,好像设置变了会死机 ...
7 \- z0 [8 A0 P; e" p2 J
不太明白您的意思,为什么需要4K的block。 哪里死机了,是MSC不正常,还是下载的APP会死机。- j. ^* @+ O" d8 F* `' e

# J& f3 n+ q# l1 {3 o' g9 c4 W现在的程序中,预先格式化的是512一个Sector,和1-Cluster=1-Sector,FAT12的基本设置,就像一只192KB的软盘一样。
3 D% Q/ C) O; l4 y! @  H8 Z7 o* X/ b
我刚刚试过,在PC上,可以把这个MSC格式化成4K的,U盘功能正常。 下载APP程序就应该再调整计算方法。
goyhuan 回答时间:2020-7-22 11:09:39
radio2radio 发表于 2020-7-21 11:09" I5 A- x  [" Q- c
不太明白您的意思,为什么需要4K的block。 哪里死机了,是MSC不正常,还是下载的APP会死机。
" j7 L2 q% K5 R
0 c, Z' j+ @2 b; f# F现在的程序 ...
1 t0 \3 p* ?, u% F! ?4 M7 |
就是想把U盘映射到W25Q64 ,将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16
" ]. E' a7 x$ b, U) h: W个扇区(Sector),每个扇区 4K 个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。
radio2radio 回答时间:2020-7-22 12:15:22
乐天乐 发表于 2020-7-22 11:098 @6 P% Z: h. y
就是想把U盘映射到W25Q64 ,将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 1 ...
% }& W4 n. H! z. U: N" h  |+ E
软件上面没有问题,当然最好是可以找到样板例程,否则就得自己写驱动代码。3 n; l4 [" y6 J' |" ^- ?8 d; P) H

( k" z- M" l4 v0 W有太多现成的,STM32的SPI口驱动SD卡实现U盘功能的程序,可以参考。 我没有详细看过,不知道是否可行。
radio2radio 回答时间:2020-7-19 09:48:33
坊间有各种bootloader,大部分都是需要上位机软件配合的,麻烦。. {- ^# k9 ?+ l8 d3 g4 Z
我比较欣赏DAPLINK的MSC拖拽下载的那种。( R8 y1 z3 V8 S8 w
radio2radio 回答时间:2020-7-20 22:15:50
源码:一楼有更新,添加了样板工程的源码,闪灯的。
goyhuan 回答时间:2020-7-21 08:32:17
高手啊!请问怎么把block设定为4096大小,而不是默认的512,好像设置变了会死机
yklstudent 回答时间:2020-7-21 08:47:50
主要受限USB+程序大小,感觉还是串口通用性太强
weiwei4 回答时间:2020-7-22 10:06:10
楼主厉害了
radio2radio 回答时间:2020-7-22 12:25:06
weiwei4 发表于 2020-7-22 10:06
+ V  j) U3 i% r6 N, |- o  V楼主厉害了

1 y! T; Q/ e- B; \0 `, q: X, O9 @" g没有什么难度,我是搬砖的,把能用砖头放到合适的地方而已。+ e/ B1 |: o( K) a1 d2 |6 S
看过源码就可以知道,真正我自己键盘打出的代码不多。
radio2radio 回答时间:2020-7-24 18:25:59
今天大规模更新,STLINK-V3MINI用的YAB,可以直接用USB刷进去!!!连焊接SWD的线都免了。
Kevin_G 回答时间:2020-9-28 10:43:47
大赞
radio2radio 回答时间:2020-12-8 19:31:14
今天,又有更新,增加了F103,F407,F723等“USB模拟U盘”的代码,不再是STLINK-V3MINI专用的了。
2 t$ s8 P7 |+ h
, K& j/ P/ m. Z所以标题也修改了,新的源代码还是放在了一楼。
STMWoodData 回答时间:2020-12-9 09:04:36
提示: 作者被禁止或删除 内容自动屏蔽
赤蛛 回答时间:2020-12-12 10:50:54
我用STM32F407测试,Bootloader大小是17K,刚好超一个sector了。现在用了2个sector。
12下一页

所属标签

相似技术帖

官网相关资源

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