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

基于stm32通用串口bootloader经验分享

[复制链接]
攻城狮Melo 发布时间:2023-3-26 17:40
目前已经支持的mcu有: stm32f072cb, stm32f303cc, gd32f350cb, stm32f030c8, stm32f103rc. 前面三者均实测可用. 在flash每页1k的mcu上共占用8k flash, 其中eeprom占1页, 提供256字节eeprom空间; 在flash每页2k的mcu上共占用10k flash, 提供512字节eeprom空间.6 n. c3 f* y; _* Y, C+ ~3 ?
) C4 `! t; ^2 B; }- R4 \+ e- B7 H
串口波特率定为500kbps, 因为为了时钟配置简单起见, bootloader在8M HSI时钟运行.* A' a6 a7 W) L& y: S

( l( E. H; y2 x* p使用时只需要选择对应型号的Makefile, 并在usart.c里修改用到的usart外设和管脚即可.
! f, r+ s! e  u$ {. |: i2 b

  f3 _# c. o' S+ I" S上位机见根目录的iap.py, 用python3执行, 需要zlib和bincopy两个第三方库.
* j% \. [1 K  G' t
( x  E% p6 w: u2 xapp这边需要做的:0 G0 J+ P. C; o7 d% `! R, u
1.写入bootloader后在串口命令行执行## sysinfo, 取得app区的入口地址, 应该是0x08002000或0x08002800.& U) X* {* x$ |$ g0 B, ^
2.修改链接文件(.ld或.lds, 在不同开发环境下可能不同), 把flash区的起始地址改为上面的入口地址, length要根据页大小减去8k或10k.
, P! ~; w5 \; W8 g4 m3.Makefile或者其他类似指定了flash大小的场合,要减去8k或10k.
+ [9 k" j( a1 P) I  n: T4 R# T4.main.c在最前面加上两行, 其中VECT_TAB_OFFSET的值是0x2000或0x2800.
  1.     NVIC_SetVectorTable(NVIC_VectTab_FLASH, VECT_TAB_OFFSET);
    . |& D7 b  [! w( X% {" ^5 E
  2.     __enable_irq()
复制代码
- z; D( g3 k7 d, w$ }. |: F
如果是stm32f0系列呢?它们不提供重定向中断向量表的功能, 所以NVIC_SetVectorTable就没用了. 不过bootloader还是能用的,稍微麻烦一点, 需要在main.c最前面加上这几行, 把中断向量表复制到SRAM的起始位置, 然后把复位地址改为指向SRAM起始位置. APP_BASE的值是前面提到过的0x08002000或0x08002800. __enable_irq()则还是需要的. 此外, .ld/.lds文件里SRAM起始位置需要改为0x20000100, LENGTH要减去256.
- W9 @  g- `  a% Q( {- P
  1. memcpy((void*)(0x20000000), (void*)APP_BASE, 256);
    ) V6 m$ B$ b" N; I3 C: e& O
  2.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    ! Q& D, q; L; ^/ C1 w! {* b" N
  3.     SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);, m' N) X$ i6 N, X5 g& P
  4.     __enable_irq()
复制代码
7 Q; B- X' q0 Y
如果要在app里使用eeprom呢?只要在app里加上flash_eeprom.h和flash_eeprom.c两个文件, 并在使用前先初始化即可:' C5 q3 Q/ V  v$ K4 @! w! Y
  1.     FLASH_EEPROM_Config(APP_BASE - PAGE_SIZE, PAGE_SIZE);
复制代码
————————————————
# r, W6 x7 M* }: Q4 X* P7 O版权声明:被大佬糊弄的只会点灯的小菜鸡
, f" X3 t; d0 \8 O0 M如有侵权请联系删除
3 P4 G% h& W2 |+ y, `1 [5 i" H- a1 j( y& {$ x( o, H
8 {: k4 v) q- n) A& |5 s  W% J6 d

) v: [3 S( R" m: q  @" A
赞 收藏 评论0 发布时间:2023-3-26 17:40

举报

0个回答

所属标签

相似技术帖

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