请教使iap时,主程式要如何设定?

[复制链接]
 楼主| 古代人 发表于 2013-2-5 10:30 | 显示全部楼层 |阅读模式
目前在网路上看到2种作法,请问高手们哪种作法才是正确的

作法1:(主程式位置移到0x08003000)
1_修改main.c 中的 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
      修改成NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);

2_stm32f10x_nvic.h 中的 #defineNVIC_VectTab_FLASH ((u32)0x08000000)
      改为#define NVIC_VectTab_FLASH  ((u32)0x08003000)
3_ lnkarm_flash.xcl 中-DROMSTART=0x8000000改为 -DROMSTART=0x8003000           


作法2:(主程式位置移到0x08003000)
1_修改main.c 中的 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
      修改成NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);
2_stm32f10x_flash.icf中
     define symbol __ICFEDIT_intvec_start__ = 0x08003000;
     define symbol __ICFEDIT_region_ROM_start__= 0x08003000;

请问1_作法1、作法2哪个才是正确的
     2_lnkarm_flash.xcl找不到?
dijiudanpianji 发表于 2013-2-5 12:18 | 显示全部楼层
记得第九单片机论坛上有很详细的帖子
yyql008 发表于 2013-2-5 21:43 | 显示全部楼层
应该都可以吧....
你说的主程序即IAP改两个东西就行了.....
一是重新定义flash,因为IAP占用一部分flash,所以你要把IAP占用的去掉.
二是重定义中断向量表,因为IAP会用到中断,主程序也可能用到同个中断,还有falsh重定义了,中断向量表也常常要修改.
你写得两个例子都是做那两件事....,没有谁对谁错,哪个能用就用哪个...
比如IAR,我就只重定义了向量表,二重定义flash,是在工程配置里设置的,不需要改flash的宏定义
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部