【STM32】IAP

本文深入解析STM32的IAP(在应用编程),探讨ICP、中断向量表、中断向量表偏移量等概念。介绍了程序内存布局,包括Code、RO-data、RW-data、ZI-data段,以及ROM和RAM的使用。通过实例分析,阐述了如何利用JLink-flash工具理解程序内存操作。

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

首先先明白几个概念
IAP:In applicating Programing,在应用编程
ICP:In-Circuit Programming,在线编程
我自己理解的话,ICP就是平时用仿真器直接下载程序的方式。应用程序直接从FLASH的0x0800 0000开始执行,只需要应用程序一个代码。
IAP则需要两个代码(应该是两类代码),BootloaderAPP程序。Bootloader作用是先接受到(通过各种通信方式)需要更新的APP文件,然后写入到指定位置(FLASH或者SRAM,SRAM好像不用写入,这个不太懂,)。

所以需要对代码执行过程进行学习,再了解几个概念。
起始地址:FLASH或者SRAM物理起始地址,FLASH为0x8000 000,SRAM为0x2000 0000。
中断向量表:各种中断响应程序。应该就是发生中断时(异常事件)判断是哪种中断,并进入对应中断服务程序。中断向量表起始地址(0x8000 0004)复位中断向量,复位中断服务程序执行完成后会跳转到main()函数。在ICP中只有一个程序,也就只有一个中断服务向量表。而在加入Bootloader后即存在两个代码,对应FLASH中的不同位置上,有两个中断向量表。
中断向量表偏移量:在加入Bootloader后,同一个FLASH中存在两个中断向量表,但在APP中发生中断时,PC指针扔强制跳转到0X0800 0004中断向量处,而不是新程序的中断向量表。要想执行APP程序中的中断服务程序就需要对中断向量表进行偏移。
ICP正常运行代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值