飞思卡尔MCU自定义中断向量的相关问题 bootloader程序过程中的问题

*******************************************************************************
中断服务代码前必须要声明
#pragma  CODE_SEG __NEAR_SEG NON_BANKED

这样编译器产生的指针(向量)为16bit长。如果不加"NON_BANKED"声明,缺省代码指针为24bit长(为代码段分页考虑),这样向量表的一个单元就不能容纳。
 
 
 
*******************************************************************************
自定义中断向量的情况说明

#pragma CODE_SEG NON_BANKED
// 声明外部中断函数
extern void  Timer0_C0(void);   
extern void  _Startup(void); //Startup routine */

#pragma CODE_SEG NON_BANKED
/* Interrupt section for this module. Placement will be in NON_BANKED area. */
__interrupt void UnimplementedISR(void)  //定义在NON_BANKED区
{
   asm BGND; // 空的中断函数
}
typedef void (*near tIsrFunc)(void); //定义了函数指针类型

//定义一个函数指针数组中断表,从0xFF80地址开始装载各个中断函数的首地址
const tIsrFunc _vect[] @0xFF80 =    /* Interrupt table */
{
    UnimplementedISR,                 /* vector 63 */
    UnimplementedISR,                 /* vector 62 */
    UnimplementedISR,                 /* vector 61 */
    UnimplementedISR,                 /* vector 60 */
    UnimplementedISR,                 /* vector 59 */
    UnimplementedISR,                 /* vector 58 */
    UnimplementedISR,                 /* vector 57 */
    UnimplementedISR,                 /* vector 56 */
    UnimplementedISR,                 /* vector 55 */
    UnimplementedISR,                 /* vector 54 */
    UnimplementedISR,                 /* vector 53 */
    UnimplementedISR,                 /* vector 52 */
    UnimplementedISR,                 /* vector 51 */
    UnimplementedISR,                 /* vector 50 */
    UnimplementedISR,                 /* vector 49 */
    UnimplementedISR,                 /* vector 48 */
    UnimplementedISR,                 /* vector 47 */
    UnimplementedISR,                 /* vector 46 */
    UnimplementedISR,                 /* vector 45 */
    UnimplementedISR,                 /* vector 44 */
    UnimplementedISR,                 /* vector 43 */
    UnimplementedISR,                 /* vector 42 */
    UnimplementedISR,                 /* vector 41 */
    UnimplementedISR,                 /* vector 40 */
    UnimplementedISR,                 /* vector 39 */
    UnimplementedISR,                 /* vector 38 */
    UnimplementedISR,                 /* vector 37 */
    UnimplementedISR,                 /* vector 36 */
    UnimplementedISR,                 /* vector 35 */
    UnimplementedISR,                 /* vector 34 */
    UnimplementedISR,                 /* vector 33 */
    UnimplementedISR,                 /* vector 32 */
    UnimplementedISR,                 /* vector 31 */
    UnimplementedISR,                 /* vector 30 */
    UnimplementedISR,                 /* vector 29 */
    UnimplementedISR,                 /* vector 28 */
    UnimplementedISR,                 /* vector 27 */
    UnimplementedISR,                 /* vector 26 */
    UnimplementedISR,                 /* vector 25 */
    UnimplementedISR,                 /* vector 24 */
    UnimplementedISR,                 /* vector 23 */
    UnimplementedISR,                 /* vector 22 */
    UnimplementedISR,                 /* vector 21 */
    UnimplementedISR,                 /* vector 20 */
    UnimplementedISR,                 /* vector 19 */
    UnimplementedISR,                 /* vector 18 */
    UnimplementedISR,                 /* vector 17 */
    UnimplementedISR,                 /* vector 16 */
    UnimplementedISR,                 /* vector 15 */
    UnimplementedISR,                 /* vector 14 */
    UnimplementedISR,                 /* vector 13 */
    UnimplementedISR,                 /* vector 12 */
    UnimplementedISR,                 /* vector 11 */
    UnimplementedISR,                 /* vector 10 */
    UnimplementedISR,                 /* vector 09 */
    Timer0_C0,                  /* vector 08 */
    UnimplementedISR,                 /* vector 07 */
    UnimplementedISR,                 /* vector 06 */
    UnimplementedISR,                 /* vector 05 */
    UnimplementedISR,                 /* vector 04 */
    UnimplementedISR,                 /* vector 03 */
    UnimplementedISR,                 /* vector 02 */
    UnimplementedISR,                 /* vector 01 */
    _Startup                           /* Reset vector */
};
在编译的时候,假如出现以下的错误提示
ERROR: Vector allocated at absolute address 0xFFFE overlaps with sections placed in segment xxxx
则说明_Startup()函数的绝对地址约束存在二义性。
可以直接打开对应工程文件的PRM文件,将最后的 “VECTOR 0 _Startup ”注释掉。
因为这句话的意思就是值,将_Startup 函数放在 0号中断向量的地方。
而上面我们自己定义的_vect[]表,的最后一个也是_Startup()函数,并且制定了绝对地址。如此一来就和VECTOR 0 _Startup 产生了冲突!
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值