也开始玩儿Bootloader,闲着也是闲着。% ]- `( Z7 Q+ u$ C" A' L* e l 2020-07-20:主角登场,源码已经上传github,同时也放在了下面。 % K5 x( c( x( ?" z, m( p! j2 | 2020-07-24: 大规模更新YAB。 2020-12-26: 增加了F103, F407, L433, F723的样板工程,是内部Flash模拟U盘的。 d1 a: R( `2 f# l# s* e http://github.com/RadioOperator/Yet_Another_Bootloader! w G% T/ Q. z5 S* S: y% j9 w 5 i' a5 i% H" R1 c1 l1 N; \/ i 应该不难移植到其他有正常MSC功能的IC上面,特别是STM32,许多库函数名字都一模一样(HAL)。& q- l. o X N- c s" @: r 目标IC:STM32F103,STM32F407, STM32L433,STM32F723, STLINK-V3MINI板等。8 I, @1 N$ `' V" r; m& @ 目标Bootloader: USB MSC,PC拖拽下载,不需要上位机软件。 YAB程序的大小,一般都小于16KB,直接用CubeMX开出来的,只依靠AC6的最小优化。 其余的全部Flash,都可以由用户使用。例如128KB的F103,用户APP最大可以用112KB。5 u+ I) K( C5 }9 d, | STLINK-V3MINI用的YAB,有点特别和复杂。. D' D- T2 J5 M( k- b/ d 这个我做到了可以和原厂的STLINK-V3的Bootloader共存,这样就实现了随便刷来刷去,不担心搞坏STLINK-V3了。) A# n' @: l+ P" h- H 因为STLINK-V3MINI的MSC模拟U盘是开在RAM里面的,最大192KB。Flash可以分出两块出来,可以安装两个不同的程序,实现两种功能。 详情在源码里面都有: 2 A; H& Y% C1 ?7 I2 T; S) j. n ( C5 J8 [- ^! x9 U ]/ d' u7 E |
Yet_Another_Bootloader-master20201226.zip
下载7.23 MB, 下载次数: 130
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断
不太明白您的意思,为什么需要4K的block。 哪里死机了,是MSC不正常,还是下载的APP会死机。
& H* {& b. b9 w+ }; j) r- p, u
现在的程序中,预先格式化的是512一个Sector,和1-Cluster=1-Sector,FAT12的基本设置,就像一只192KB的软盘一样。0 S7 q7 A9 ~. y9 Y- w/ ?. ?
! J' F3 M+ q' p4 z. t% O6 i4 u
我刚刚试过,在PC上,可以把这个MSC格式化成4K的,U盘功能正常。 下载APP程序就应该再调整计算方法。
就是想把U盘映射到W25Q64 ,将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16
个扇区(Sector),每个扇区 4K 个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。
软件上面没有问题,当然最好是可以找到样板例程,否则就得自己写驱动代码。# _$ I2 H3 @! u% [( B, t' T
- S' z+ l, _0 \) j: g
有太多现成的,STM32的SPI口驱动SD卡实现U盘功能的程序,可以参考。 我没有详细看过,不知道是否可行。
我比较欣赏DAPLINK的MSC拖拽下载的那种。
没有什么难度,我是搬砖的,把能用砖头放到合适的地方而已。
看过源码就可以知道,真正我自己键盘打出的代码不多。
8 M! j# o9 ^: S! }1 P. s0 k& c
所以标题也修改了,新的源代码还是放在了一楼。