微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 在ARMSYS上进行uClinux内核移植的总结

在ARMSYS上进行uClinux内核移植的总结

时间:04-18 来源:互联网 点击:

pc,MyHandleDabort;HandlerDAbort

b。;HandlerReserved

ldrpc,MyHandleIRQ;HandlerIRQ

ldrpc,MyHandleFIQ;HandlerFIQ

MyHandleUndefDCDHandleUndef;reserveaword(32bit)

MyHandleSWIDCDHandleSWI

MyHandlePabortDCDHandlePabort

MyHandleDabortDCDHandleDabort

MyHandleIRQDCDHandleIRQ

MyHandleFIQDCDHandleFIQ

ExceptionHanlderEnd

建立二级矢量表:

;****************************************************

;*SetupIRQhandler*

;****************************************************

ldrr0,=(_IRQ_BASEADDRESS+0x100)

ldrr2,=_IRQ_BASEADDRESS

addr3,r0,#0x100

0

CMPr0,r3

STRCCr2,[r0],#4;cc:Carryclear;saveR2toR0address,R0=R0+4。

BCC%B0

ldrr1,=_IRQ_BASEADDRESS

ldrr0,=ExceptionHanlderBegin;ifthereisn't'subspc,lr,#4'at0x18,0x1c

ldrr3,=ExceptionHanlderEnd

0

CMPr0,r3;putthevectortableat_IRQ_BASEADDRESS(0xc000000)

LDRCCr2,[r0],#4

STRCCr2,[r1],#4

BCC%B0

ldrr1,=DIsrIRQ;puttheIRQjudgeprogramat_IRQ_BASEADDRESS+0x80(0xc000080)

ldrr0,=IsrIRQ;ifthereisn't'subspc,lr,#4'at0x18,0x1c

ldrr3,=IsrIRQEnd

0

CMPr0,r3

LDRCCr2,[r0],#4

STRCCr2,[r1],#4

BCC%B0

ldrr1,=MyHandleIRQ;MyHandleIRQpointtoDIsrIRQ

ldrr0,=ExceptionHanlderBegin

ldrr4,=_IRQ_BASEADDRESS;

subr0,r1,r0

addr0,r0,r4

ldrr1,=DIsrIRQ

strr1,[r0]

定义Handlexxx:

^(_IRQ_BASEADDRESS)

HandleReset#4

HandleUndef#4

HandleSWI#4

HandlePabort#4

HandleDabort#4

HandleReserved#4

HandleIRQ#4

HandleFIQ#4

^(_IRQ_BASEADDRESS+0x80)

DIsrIRQ#4

;IntVectorTable

^(_IRQ_BASEADDRESS+0x100)

HandleADC#4

HandleRTC#4

HandleUTXD1#4

HandleUTXD0#4

HandleSIO#4

HandleIIC#4

HandleURXD1#4

HandleURXD0#4

HandleTIMER5#4

HandleTIMER4#4

HandleTIMER3#4

HandleTIMER2#4

HandleTIMER1#4

HandleTIMER0#4

HandleUERR01#4

HandleWDT#4

HandleBDMA1#4

HandleBDMA0#4

HandleZDMA1#4

HandleZDMA0#4

HandleTICK#4

HandleEINT4567#4

HandleEINT3#4

HandleEINT2#4

HandleEINT1#4

HandleEINT0#4

将异常中断矢量重构到SDRAM,这样的好处就是可以在其它的功能程序内对中断处理程序的地址任意赋值。为此,我们在44b。h文件中定义:

/*ISR*/

#definepISR_RESET(*(unsigned*)(_IRQ_BASEADDRESS+0x0))

#definepISR_UNDEF(*(unsigned*)(_IRQ_BASEADDRESS+0x4))

#definepISR_SWI(*(unsigned*)(_IRQ_BASEADDRESS+0x8))

#definepISR_PABORT(*(unsigned*)(_IRQ_BASEADDRESS+0xc))

#definepISR_DABORT(*(unsigned*)(_IRQ_BASEADDRESS+0x10))

#definepISR_RESERVED(*(unsigned*)(_IRQ_BASEADDRESS+0x14))

#definepISR_IRQ(*(unsigned*)(_IRQ_BASEADDRESS+0x18))

#definepISR_FIQ(*(unsigned*)(_IRQ_BASEADDRESS+0x1c))

#definepISR_ADC(*(unsigned*)(_IRQ_BASEADDRESS+0x100))//0x20))

#definepISR_RTC(*(unsigned*)(_IRQ_BASEADDRESS+0x104))//0x24))

#definepISR_UTXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x108))//0x28))

#definepISR_UTXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x10c))//0x2c))

#definepISR_SIO(*(unsigned*)(_IRQ_BASEADDRESS+0x110))//0x30))

#definepISR_IIC(*(unsigned*)(_IRQ_BASEADDRESS+0x114))//0x34))

#definepISR_URXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x118))//0x38))

#definepISR_URXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x11c))//0x3c))

#definepISR_TIMER5(*(unsigned*)(_IRQ_BASEADDRESS+0x120))//0x40))

#definepISR_TIMER4(*(unsigned*)(_IRQ_BASEADDRESS+0x124))//0x44))

#definepISR_TIMER3(*(unsigned*)(_IRQ_BASEADDRESS+0x128))//0x48))

#definepISR_TIMER2(*(unsigned*)(_IRQ_BASEADDRESS+0x12c))//0x4c))

#definepISR_TIMER1(*(unsigned*)(_IRQ_BASEADDRESS+0x130))//0x50))

#definepISR_TIMER0(*(unsigned*)(_IRQ_BASEADDRESS+0x134))//0x54))

#definepISR_UERR01(*(unsigned*)(_IRQ_BASEADDRESS+0x138))//0x58))

#definepISR_WDT(*(unsigned*)(_IRQ_BASEADDRESS+0x13c))//0x5c))

#definepISR_BDMA1(*(unsigned*)(_IRQ_BASEADDRESS+0x140))//0x60))

#definepISR_BDMA0(*(unsigned*)(_IRQ_BASEADDRESS+0x144))//0x64))

#definepISR_ZDMA1(*(unsigned*)(_IRQ_BASEADDRESS+0x148))//0x68))

#definepISR_ZDMA0(*(unsigned*)(_IRQ_BASEADDRESS+0x14c))//0x6c))

#definepISR_TICK(*(unsigned*)(_IRQ_BASEADDRESS+0x150))//0x70))

#definepISR_EINT4567(*(un

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top