stm32(三) STM32(STM32F217XX) 分段程序下载以及其运行原理

本文介绍了STM32F217XX的分段程序下载方法,将程序分为A段(包含主程序和IAP下载程序)和B段(用户程序)。A段通常存放在sector 0,B段存放在从sector 1开始的地址。在A段程序中,通过设置SCB->VTOR重新定位中断向量表,并调用B段的入口地址来启动用户程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     1.在STM32中经常出现IAP下载,我们通常采用的策略是把程序分成两段。
    (A段)运行其主程序并且判断是否需要进行IAP下载,以及IAP下载的程序。
    (B段)用户的程序。也可以说是通过IAP升级的程序。
    通常我们把这两段程序分别存储在FLASH的不同的地址空间。
    例如:STM32的flash的存储布局是:
    name              block bass address      size
    sector 0       0x08000000 - 0x08003fff     16k
    sector 1       0x08004000 - 0x08007fff     16k
    sector 2       0x08000000 - 0x08003fff     16k
    sector 3       0x08004000 - 0x08007fff     16k
    sector 4       0x08000000 - 0x08003fff     64k
    sector 5       0x08004000 - 0x08007fff     128k
    sector 6       0x08000000 - 0x08003fff     128k
    sector 7       0x08004000 - 0x08007fff     128k
    sector 8       0x08000000 - 0x08003fff     128k
    sector 9       0x08004000 - 0x08007fff     128k
    sector 10      0x08004000 - 0x08007fff     128k
    sector 11      0x08004000 - 0x08007fff     128k
   
    system memory  0x1fff0000 - 0x1fff77ff     30k
    OTP            0x1fff7800 - 0x1fff7a0f     528b
    Option bytes   0x1fffc000 - 0x1fffc00f     16b
  我的做法是把:
    sector 0 作为我的A段程序存储
    sector 1 以及以后的内容作为B段程序存储
   
  2.在A段程序中要注意的是:
    typedef void (*usercode)(void);//                            
    usercode EnterApp;                                           
    int main()                                                   
    {                                                            
     SCB->VTOR = 0x08004000;//重新定位中断向量表                        
     EnterApp = (usercode)(*(unsigned int *)(0x08004000 + 0x04));//0x08004000这里存放的是第堆栈的地址
     EnterApp();//在这里调用第二段程序                                                
    }                                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值