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

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

[复制链接]
radio2radio 发布时间:2020-7-18 11:27
也开始玩儿Bootloader,闲着也是闲着。
( c4 b8 K" y3 n$ V. e! p& V" X5 t7 L& P
2020-07-20:主角登场,源码已经上传github,同时也放在了下面。  
7 M. V! Y( `0 A8 T+ ^. u 2020-07-24:  大规模更新YAB。   
9 `) X" _6 G8 d& N6 m2020-12-26:  增加了F103, F407, L433, F723的样板工程,是内部Flash模拟U盘的。   
: `5 Z# ~$ Q3 N3 N  t; q* }

& c# A5 F. v4 a/ e/ ghttp://github.com/RadioOperator/Yet_Another_Bootloader
' K' W9 A+ B. Y; w( e* ]( [& I
! m7 P1 i. N! }. Q( ^应该不难移植到其他有正常MSC功能的IC上面,特别是STM32,许多库函数名字都一模一样(HAL)。
* d$ Y/ ~1 z/ J+ u' E( B; w% B; H  Z2 l
目标IC:STM32F103,STM32F407, STM32L433,STM32F723, STLINK-V3MINI板等。# p, I  z- D8 a) u6 t' H: J% l! ?
目标Bootloader:   USB MSC,PC拖拽下载,不需要上位机软件。
; J3 v( p& T  d) n  S: q! R9 {7 `" |/ @: O; R# c) O
YAB程序的大小,一般都小于16KB,直接用CubeMX开出来的,只依靠AC6的最小优化。: m6 w) D, P* p0 _+ r, k
其余的全部Flash,都可以由用户使用。例如128KB的F103,用户APP最大可以用112KB。2 s) ?; T  P6 R9 A

) N' Y. h; q/ mSTLINK-V3MINI用的YAB,有点特别和复杂。
  h5 s" O2 `" W. U5 y" T" |0 m这个我做到了可以和原厂的STLINK-V3的Bootloader共存,这样就实现了随便刷来刷去,不担心搞坏STLINK-V3了。% x' P% E* O0 [3 F! i' ?" M6 R5 q
因为STLINK-V3MINI的MSC模拟U盘是开在RAM里面的,最大192KB。Flash可以分出两块出来,可以安装两个不同的程序,实现两种功能。' c' d2 k  A0 N# m3 j

( A6 k( j5 t) U5 R详情在源码里面都有:
* g9 J! z& a3 {4 q' Q2 T, s. {- |( T! x
- E4 D2 P$ P+ q: e) T8 x
* r  f9 I! Q) h( x# ^
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
8 N. o* A/ ^; x( c. P4 [5 B6 H高手啊!请问怎么把block设定为4096大小,而不是默认的512,好像设置变了会死机 ...

6 x3 _( w) R. c9 E6 o' Z不太明白您的意思,为什么需要4K的block。 哪里死机了,是MSC不正常,还是下载的APP会死机。
) q1 A* L1 q2 W
$ y. [7 s! P. j; b* a! X. i7 c现在的程序中,预先格式化的是512一个Sector,和1-Cluster=1-Sector,FAT12的基本设置,就像一只192KB的软盘一样。1 I0 H0 c- L+ I+ x" ?4 c

1 n; Y2 }+ Z" T& I- _; ^我刚刚试过,在PC上,可以把这个MSC格式化成4K的,U盘功能正常。 下载APP程序就应该再调整计算方法。
goyhuan 回答时间:2020-7-22 11:09:39
radio2radio 发表于 2020-7-21 11:09; z& t* X* O$ i
不太明白您的意思,为什么需要4K的block。 哪里死机了,是MSC不正常,还是下载的APP会死机。
5 o- F1 d9 A, R
0 j% `! ~8 z8 S  `现在的程序 ...
1 }; U6 N( d: n
就是想把U盘映射到W25Q64 ,将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16
% f' j! }& P" D5 L6 T个扇区(Sector),每个扇区 4K 个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。
radio2radio 回答时间:2020-7-22 12:15:22
乐天乐 发表于 2020-7-22 11:09' M7 f( k8 W: s
就是想把U盘映射到W25Q64 ,将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 1 ...

/ p( R# H3 w/ _, [& E& Z; H* ~软件上面没有问题,当然最好是可以找到样板例程,否则就得自己写驱动代码。
% y- H4 Y, y, R7 ^5 R7 u3 `8 O1 [5 Z4 L) H: ]8 G' F( n- J8 n& k
有太多现成的,STM32的SPI口驱动SD卡实现U盘功能的程序,可以参考。 我没有详细看过,不知道是否可行。
radio2radio 回答时间:2020-7-19 09:48:33
坊间有各种bootloader,大部分都是需要上位机软件配合的,麻烦。5 _: o# n# `$ W+ K
我比较欣赏DAPLINK的MSC拖拽下载的那种。4 c& H/ L$ d- z
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! e4 [8 I) V' @5 b
楼主厉害了

+ s3 u* u: S$ G没有什么难度,我是搬砖的,把能用砖头放到合适的地方而已。- e' Z( n' a0 }7 V$ K7 s6 Y4 U
看过源码就可以知道,真正我自己键盘打出的代码不多。
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专用的了。
5 |  J/ a) {" B! c' b; K4 w0 o- p0 |
所以标题也修改了,新的源代码还是放在了一楼。
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 手机版