查看: 11082|回复: 11

基于freescaleMC9S08DZ60IC的中断向量重定向的问题

[复制链接]

该用户从未签到

6

主题

67

帖子

0

注册会员

Rank: 2

积分
149
最后登录
2020-10-22
发表于 2012-11-29 09:03:59 | 显示全部楼层 |阅读模式
Dear all,
问题点:
我现在在做基于MC9S08DZ60的CAN bootloader程序,因为bootloader占用的flash地址是从0xFA00-0xFFFF,所以我想把用户中断向量从默认的0xFFC0-0xFFFF重定向到0xF9C0-0xF9FF。
需找思路:
MC9S08DZ60 datasheet上面说只要给@0xFFBF第7位写0 and @0xFFBD设置0xFA00-0xFFFF保护,中断向量就会重定向到0xF9C0-0xF9FF,我在用户程序的main函数里面添加了这二个操作,但是生成的S19文件里面的中断向量地址还是0xFFC0开始的。
高手指点:
请高手指点下我的思路哪里出了问题?
thanks for your help。
 
 
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-29 09:34:26 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

你仔细看看手册吧,手册写的是让你把NVOPT寄存器的FNORED位来控制的。不是让你直接在0xFFBD这个地址写内容。
回复 支持 反对

使用道具 举报

该用户从未签到

131

主题

835

帖子

0

金牌会员

Rank: 6Rank: 6

积分
10021
最后登录
1970-1-1
发表于 2012-11-29 10:41:42 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

我觉得楼主很会问问题。值得肯定
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

67

帖子

0

注册会员

Rank: 2

积分
149
最后登录
2020-10-22
 楼主| 发表于 2012-11-29 11:25:36 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

Dear all,
感谢回复。
Dear 版主,
你仔细看看手册吧,手册写的是让你把NVOPT寄存器的FNORED位来控制的。不是让你直接在0xFFBD这个地址写内容。
你说的这个我试过了,可是和直接给地址里面写内容是一样的效果。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-29 14:46:26 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

//---------------------------------------------------------------------------
// NVOPT/NVPROT Initialization
//---------------------------------------------------------------------------
const byte NVOPT_INIT  @0x0000FFBF = 0x02;    // vector redirect, flash unsecure
const byte NVPROT_INIT @0x0000FFBD = 0xFA;    // 0xFC00-0xFFFF are protected

// redirect vector 0xFFC0-0xFFFD to 0xFBC0-0xFBFD
void (* volatile const _Usr_Vector[])()@0xFBC4= {
    VPP_ISR,        // Int.no.29 RTC               (at FBC4) (at FFC4)
    Dummy_ISR,        // Int.no.28 IIC               (at FBC6) (at FFC6)
    Dummy_ISR,        // Int.no.27 ACMP              (at FBC8) (at FFC8)
    Dummy_ISR,        // Int.no.26 ADC               (at FBCA) (at FFCA)
    Dummy_ISR,        // Int.no.25 KBI               (at FBCC) (at FFCC)
    Dummy_ISR,        // Int.no.24 SCI2 Transmit     (at FBCE) (at FFCE)
    Dummy_ISR,        // Int.no.23 SCI2 Receive      (at FBD0) (at FFD0)
    Dummy_ISR,        // Int.no.22 SCI2 Error        (at FBD2) (at FFD2)
    Dummy_ISR,        // Int.no.21 SCI1 Transmit     (at FBD4) (at FFD4)
    SCI_ReceiveISR,        // Int.no.20 SCI1 Receive      (at FBD6) (at FFD6)
    SCI_OverrunISR,        // Int.no.19 SCI1 error        (at FBD8) (at FFD8)
    Dummy_ISR,        // Int.no.18 TPM2 Overflow     (at FBDA) (at FFDA)
    Dummy_ISR,        // Int.no.17 TPM2 CH1          (at FBDC) (at FFDC)
    Dummy_ISR,        // Int.no.16 TPM2 CH0          (at FBDE) (at FFDE)
    Dummy_ISR,        // Int.no.15 TPM1 Overflow     (at FBE0) (at FFE0)
    Dummy_ISR,        // Int.no.14 TPM1 CH5          (at FBE2) (at FFE2)
    Dummy_ISR,        // Int.no.13 TPM1 CH4          (at FBE4) (at FFE4)
    Dummy_ISR,        // Int.no.12 TPM1 CH3          (at FBE6) (at FFE6)
    Dummy_ISR,        // Int.no.11 TPM1 CH2          (at FBE8) (at FFE8)
    Dummy_ISR,        // Int.no.10 TPM1 CH1          (at FBEA) (at FFEA)
    Dummy_ISR,        // Int.no.9  TPM1 CH0          (at FBEC) (at FFEC)
    Dummy_ISR,        // Int.no.8  Reserved          (at FBEE) (at FFEE)
    USB_ISR,                // Int.no.7  USB Statue        (at FBF0) (at FFF0)
    Dummy_ISR,        // Int.no.6  SPI2              (at FBF2) (at FFF2)
    Dummy_ISR,        // Int.no.5  SPI1              (at FBF4) (at FFF4)
    Dummy_ISR,        // Int.no.4  Loss of lock      (at FBF6) (at FFF6)
    Dummy_ISR,        // Int.no.3  LVI               (at FBF8) (at FFF8)
    IRQ_ISR,                // Int.no.2  IRQ               (at FBFA) (at FFFA)
    Dummy_ISR,        // Int.no.1  SWI               (at FBFC) (at FFFC)
};
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

67

帖子

0

注册会员

Rank: 2

积分
149
最后登录
2020-10-22
 楼主| 发表于 2012-11-29 16:03:33 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

Dear 版主,
感谢回复,我按照你的做法,尝试了一下,S19文件的值中断是到了0xFBC0地址处了,但是进不了中断。程序如下:
const byte NVOPT_INIT @0x0000FFBF = 0x02; // vector redirect, flash unsecure
const byte NVPROT_INIT @0x0000FFBD = 0xFA; // 0xFC00-0xFFFF are protected
extern  interrupt void Dummy_ISR(void);
extern  interrupt void CAN_RX(void);
// redirect vector 0xFFC0-0xFFFD to 0xFBC0-0xFBFD
void (* volatile const _Usr_Vector[])()@0xFBC0= {
Dummy_ISR,    // Int.no.31 RTC (at FBC4) (at FFC4)
Dummy_ISR,  // Int.no.30 RTC (at FBC4) (at FFC4)
Dummy_ISR, // Int.no.29 RTC (at FBC4) (at FFC4)
CAN_RX, // Int.no.28 IIC (at FBC6) (at FFC6)
Dummy_ISR, // Int.no.27 ACMP (at FBC8) (at FFC8)
Dummy_ISR, // Int.no.26 ADC (at FBCA) (at FFCA)
Dummy_ISR, // Int.no.25 KBI (at FBCC) (at FFCC)
Dummy_ISR, // Int.no.24 SCI2 Transmit (at FBCE) (at FFCE)
Dummy_ISR, // Int.no.23 SCI2 Receive (at FBD0) (at FFD0)
Dummy_ISR, // Int.no.22 SCI2 Error (at FBD2) (at FFD2)
Dummy_ISR, // Int.no.21 SCI1 Transmit (at FBD4) (at FFD4)
Dummy_ISR, // Int.no.20 SCI1 Receive (at FBD6) (at FFD6)
Dummy_ISR, // Int.no.19 SCI1 error (at FBD8) (at FFD8)
Dummy_ISR, // Int.no.18 TPM2 Overflow (at FBDA) (at FFDA)
Dummy_ISR, // Int.no.17 TPM2 CH1 (at FBDC) (at FFDC)
Dummy_ISR, // Int.no.16 TPM2 CH0 (at FBDE) (at FFDE)
Dummy_ISR, // Int.no.15 TPM1 Overflow (at FBE0) (at FFE0)
Dummy_ISR, // Int.no.14 TPM1 CH5 (at FBE2) (at FFE2)
Dummy_ISR, // Int.no.13 TPM1 CH4 (at FBE4) (at FFE4)
Dummy_ISR, // Int.no.12 TPM1 CH3 (at FBE6) (at FFE6)
Dummy_ISR, // Int.no.11 TPM1 CH2 (at FBE8) (at FFE8)
Dummy_ISR, // Int.no.10 TPM1 CH1 (at FBEA) (at FFEA)
Dummy_ISR, // Int.no.9 TPM1 CH0 (at FBEC) (at FFEC)
Dummy_ISR, // Int.no.8 Reserved (at FBEE) (at FFEE)
Dummy_ISR, // Int.no.7 USB Statue (at FBF0) (at FFF0)
Dummy_ISR, // Int.no.6 SPI2 (at FBF2) (at FFF2)
Dummy_ISR, // Int.no.5 SPI1 (at FBF4) (at FFF4)
Dummy_ISR, // Int.no.4 Loss of lock (at FBF6) (at FFF6)
Dummy_ISR, // Int.no.3 LVI (at FBF8) (at FFF8)
Dummy_ISR, // Int.no.2 IRQ (at FBFA) (at FFFA)
Dummy_ISR, // Int.no.1 SWI (at FBFC) (at FFFC)
};
interrupt void Dummy_ISR(void)
{
}
interrupt  void CAN_RX(void)
{
内容省去  
}
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-29 17:07:23 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

我这个是例子,你对照一下DZ60的CAN的中断向量应该是第几个。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

67

帖子

0

注册会员

Rank: 2

积分
149
最后登录
2020-10-22
 楼主| 发表于 2012-11-29 19:58:39 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

Dear 版主,
我是按照CAN接收中断的顺序28写的,flash保护区域我设置的是0XFA00-0XFFFF,所以我把CAN接收映射到0XF9C6(第28个中断)。
可是还是进不了中断。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

67

帖子

0

注册会员

Rank: 2

积分
149
最后登录
2020-10-22
 楼主| 发表于 2012-11-30 09:20:58 | 显示全部楼层

RE:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

Dear 版主,
问题已经解决,谢谢你和热心人的帮助。
祝福你们生活愉快!
Steven 2012.11.30
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

14

帖子

0

新手上路

Rank: 1

积分
37
最后登录
1970-1-1
发表于 2014-4-28 11:51:23 | 显示全部楼层

回复:基于freescaleMC9S08DZ60IC的中断向量重定向的问题

我也按照版主的方法,把TPM2的中断放置在序号为14,flash保护区域我设置的是0XF400-0XFFFF,不仅进不了中断,而且S19文件的中断仍然是从0xFFC0开始的。不知什么原因啊,求帮助,万分感谢!
我的QQ 764199119
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-3 01:02 , Processed in 0.100907 second(s), 27 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表