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

STM32G0 IAP

[复制链接]
攻城狮Melo 发布时间:2022-11-3 22:09
bootloader篇:
简要说明
这里没有什么特殊的要求,
一般含有:解析接收到的数据(可能是ymodem等等)、擦写app区域的flash,跳转等
一般会保存在0x0800 0000起始的一段地址中(上电后直接运行),
其中解析和擦写flash掠过

跳转代码如下:
  1. __disable_irq();
  2.       /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
  3.     if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
  4.     {
  5.       /* Jump to user application */
  6.       JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
  7.       JumpToApplication = (pFunction) JumpAddress;
  8.       /* Initialize user application's Stack Pointer */
  9.       __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
  10.       JumpToApplication();
  11.     }
复制代码

上文中APPLICATION_ADDRESS是APP的起始地址,跳转之前关闭总中断,防止跳转时出错
要注意,在APP里不要忘记打开总中断。

APP篇
以MDK为例

修改FLASH地址

20210108105923339.png

代码上修改中断向量表偏移
文件system_stm32g0xx.c中
  1. #define VECT_TAB_OFFSET  0x5000U /*!< Vector Table base offset field.
  2.                                    This value must be a multiple of 0x100. */
复制代码

此处改成实际偏移大小

还有就是BOOT篇中说的,要开启全局中断哦
  1. __enable_irq();
复制代码
————————————————
版权声明:Logan Li

收藏 评论1 发布时间:2022-11-3 22:09

举报

1个回答
Roomen 回答时间:2022-11-4 16:00:45
文章出处 STM32G0 IAP

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版