IAP & ICP

来源:互联网 发布:恶灵附身2优化这么样 编辑:程序博客网 时间:2024/06/14 16:37

STM32 的中断向量表的设置主要是用在IAP 程序中,如果是普通的 flash 中只有一个程序,一般不需要设置这个。顾名思义,这个表存放的是中断服务函数的入口地址,当发生中断时,CPU来这个表中查询,以此获取中断函数的入口地址。

STM32编程方式:
①在线编程(ICP,In-Circuit Programming):
通过JTAG/SWD协议或者系统加载程序(Bootloader)下载用户应用程序到微控制器中。
② 在程序中编程(IAP,In Application Programming):
通过任何一种通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下载程序或者应用数据到存储器中。也就是说,STM32允许用户在应用程序中重新烧写闪存存储器中的内容。然而,IAP需要至少有一部分程序已经使用ICP方式烧到闪存存储器中(Bootloader)。
在不需要操作硬件平台的情况下实现升级(远程)。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

如上图:STM32复位后,还是从0X08000004地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到IAP的main函数。在执行完IAP以后(即将新的APP代码写入STM32的FLASH,灰底部分。新程序的复位中断向量起始地址为0X08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的main函数,如图标号②和③所示。在main函数执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址       0X08000004中断向量表处,而不是新程序的       中断向量表程序再根据我们设置的中断向量表偏移量,跳      转到对应中断源新的中断服务程序中。在执行完中断服务程序后,程序返回main函数继续运行。

这里写图片描述

这里写图片描述

0 0
原创粉丝点击