分享

三星S3C2440 ARM-920T 中断向量宏义

 败败0619 2012-07-06

三星S3C2440 ARM-920T 中断向量宏义

网上找了很多都没发现2440的中断向量,飞凌群的技术员只会叫我查那2440的芯片手册,我查死都查不到(搜索中文片的“中断向量”和英文版的“vector”,根本没这东西),后来在国嵌的代码中找到的。


 


注:CowBoy 直接从 国嵌 的代码中提取出来的


// Exception vector
#define pISR_RESET  (*(unsigned *)(_ISR_STARTADDRESS+0x0))
#define pISR_UNDEF  (*(unsigned *)(_ISR_STARTADDRESS+0x4))
#define pISR_SWI  (*(unsigned *)(_ISR_STARTADDRESS+0x8))
#define pISR_PABORT  (*(unsigned *)(_ISR_STARTADDRESS+0xc))
#define pISR_DABORT  (*(unsigned *)(_ISR_STARTADDRESS+0x10))
#define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14))
#define pISR_IRQ  (*(unsigned *)(_ISR_STARTADDRESS+0x18))
#define pISR_FIQ  (*(unsigned *)(_ISR_STARTADDRESS+0x1c))
// Interrupt vector
#define pISR_EINT0  (*(unsigned *)(_ISR_STARTADDRESS+0x20))
#define pISR_EINT1  (*(unsigned *)(_ISR_STARTADDRESS+0x24))
#define pISR_EINT2  (*(unsigned *)(_ISR_STARTADDRESS+0x28))
#define pISR_EINT3  (*(unsigned *)(_ISR_STARTADDRESS+0x2c))
#define pISR_EINT4_7 (*(unsigned *)(_ISR_STARTADDRESS+0x30))
#define pISR_EINT8_23 (*(unsigned *)(_ISR_STARTADDRESS+0x34))
#define pISR_CAM  (*(unsigned *)(_ISR_STARTADDRESS+0x38))  // Added for 2440.
#define pISR_BAT_FLT (*(unsigned *)(_ISR_STARTADDRESS+0x3c))
#define pISR_TICK  (*(unsigned *)(_ISR_STARTADDRESS+0x40))
#define pISR_WDT_AC97  (*(unsigned *)(_ISR_STARTADDRESS+0x44))   //Changed to pISR_WDT_AC97 for 2440A
#define pISR_TIMER0   (*(unsigned *)(_ISR_STARTADDRESS+0x48))
#define pISR_TIMER1   (*(unsigned *)(_ISR_STARTADDRESS+0x4c))
#define pISR_TIMER2  (*(unsigned *)(_ISR_STARTADDRESS+0x50))
#define pISR_TIMER3  (*(unsigned *)(_ISR_STARTADDRESS+0x54))
#define pISR_TIMER4  (*(unsigned *)(_ISR_STARTADDRESS+0x58))
#define pISR_UART2  (*(unsigned *)(_ISR_STARTADDRESS+0x5c))
#define pISR_LCD  (*(unsigned *)(_ISR_STARTADDRESS+0x60))
#define pISR_DMA0  (*(unsigned *)(_ISR_STARTADDRESS+0x64))
#define pISR_DMA1  (*(unsigned *)(_ISR_STARTADDRESS+0x68))
#define pISR_DMA2  (*(unsigned *)(_ISR_STARTADDRESS+0x6c))
#define pISR_DMA3  (*(unsigned *)(_ISR_STARTADDRESS+0x70))
#define pISR_SDI  (*(unsigned *)(_ISR_STARTADDRESS+0x74))
#define pISR_SPI0  (*(unsigned *)(_ISR_STARTADDRESS+0x78))
#define pISR_UART1  (*(unsigned *)(_ISR_STARTADDRESS+0x7c))
#define pISR_NFCON  (*(unsigned *)(_ISR_STARTADDRESS+0x80))  // Added for 2440.
#define pISR_USBD  (*(unsigned *)(_ISR_STARTADDRESS+0x84))
#define pISR_USBH  (*(unsigned *)(_ISR_STARTADDRESS+0x88))
#define pISR_IIC  (*(unsigned *)(_ISR_STARTADDRESS+0x8c))
#define pISR_UART0  (*(unsigned *)(_ISR_STARTADDRESS+0x90))
#define pISR_SPI1  (*(unsigned *)(_ISR_STARTADDRESS+0x94))
#define pISR_RTC  (*(unsigned *)(_ISR_STARTADDRESS+0x98))
#define pISR_ADC  (*(unsigned *)(_ISR_STARTADDRESS+0x9c))


 


 


特别地对于 飞凌的FL2440开发板 有如下,不同的开发板可能只是下面的绝对地址不同,而对于FL2440,因为 MyApp 分区已定下,所以好像那个绝对地址就是下面那个的了。


 


绝对地址:_ISR_STARTADDRESS    0x33FFFF00


中断类型                                              偏移地址


复位                                                     0
未定义指令                                          0x04
软件中断                                              0x08
中止(预取指令)                                0x0c
中止(数据)                                       0x10
保留                                                     0x14
IRQ                                  0x18
FIQ                                                      0x1c


EINT0(外部中断0)                           0x20
EINT1(外部中断1)                           0x24
EINT2(外部中断2)                           0x28
EINT3(外部中断3)                           0x2c
EINT4_7(外部中断4~7)                   0x30
EINT8_23(外部中断8~23)               0x34
NOTUSED6(未使用)                        0x38
BAT_FLT(电池出错中断)                 0x3c
TICK(TICK中断)                               0x40
WDT(看门狗定时器中断)                 0x44
TIMER0(定时器0中断)                     0x48
TIMER1(定时器1中断)                     0x4c
TIMER2(定时器2中断)                     0x50
TIMER3(定时器3中断)                     0x54
TIMER4(定时器4中断)                     0x58
UART2(串口2中断)                          0x5c
LCD(LCD中断)                                0x60
DMA0(DMA0中断)                           0x64
DMA1(DMA1中断)                           0x68
DMA2(DMA2中断)                           0x6c
DMA3(DMA3中断)                           0x70
SDI(SDI中断)                                   0x74
SPIO(SPIO中断)                              0x78
UART1(UART1中断)                       0x7c
NOTUSED24(未使用)                     0x80
USBD(USBD中断)                           0x84
USBH(USBH中断)                           0x88
IIC(IIC中断)                                     0x8c
UART0(UART0中断)                       0x90
SPI1(SPI1中断)                               0x94
RTC(RTC中断)                               0x98
ADC(ADC中断)                               0x9c


 


设置中断服务子程序时格式如下(以外部中断0为例)


 


//宏定义


#define uint unsigned int


#define _ISR_STARTADDRESS    0x33FFFF00
#define pISR_EINT0           (*(unsigned *)(_ISR_STARTADDRESS+0x20))


 


//中断子程序


static void __irq Eint0_ISR(void)
{
 ClearPending(BIT_EINT0);//进入中断后要手动清除相应的中断标志!!
 //………… 


}


 


int main(void)


{


 pISR_EINT0 = (uint)Eint0_ISR;//一定要将相应的中断服务子程序连起来!!


//…………


}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多