當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]工程里面的頭文件2410Init.s包括了板子上電后的初始話,具體有幾個(gè)步驟:講述S3C2410啟動程序設(shè)計(jì)1.屏蔽所有中斷,關(guān)看門狗。2.根據(jù)工作頻率設(shè)置PLL寄存器3.初始化存儲控制相關(guān)寄存器4.初始化各模式下的棧指針5.設(shè)置

工程里面的頭文件2410Init.s包括了板子上電后的初始話,具體有幾個(gè)步驟:

講述S3C2410啟動程序設(shè)計(jì)

1.屏蔽所有中斷,關(guān)看門狗。

2.根據(jù)工作頻率設(shè)置PLL寄存器

3.初始化存儲控制相關(guān)寄存器

4.初始化各模式下的棧指針

5.設(shè)置缺省中斷處理函數(shù)

6.將數(shù)據(jù)段拷貝到RAM中,將零初始化數(shù)據(jù)段清零

7.跳轉(zhuǎn)到C語言Main入口函數(shù)中

要看懂這個(gè)頭文件是比較難的,我跟DVD視頻的教程看了兩遍,弄懂了一些,視頻上講的是ARM7S3C44B0的Init.s但我覺得和2410的差不多。我將這個(gè)程序注釋了一下??赡苡行┑胤讲皇呛苷_,只提供參考。

;=========================================
;NAME:2410INIT.S
;DESC:Cstartupcodes
;Configurememory,ISR,stacks
;InitializeC-variables
;HISTORY:
;2002.02.25:kwtark:ver0.0
;2002.03.20:purnnamu:AddsomefunctionsfortestingSTOP,POWER_OFFmode
;2002.04.10:SJS:subinterruptdisable0x3ff->0x7ff
;2002.11.29:Kong:DCDBANKSIZEResiger0x32->0xb2(ARMcoreburstenable)
;=========================================

INCLUDEoption.inc
INCLUDEmemcfg.inc
INCLUDE2410addr.inc

BIT_SELFREFRESHEQU(1<<22)

;下面是對arm處理器模式寄存器對應(yīng)值的常數(shù)定義,arm處理器中有一個(gè)CPSR程序狀態(tài)寄存器它的后五位決定目前的處理器模式
;pre-definedconstants
USERMODEEQU0x10
FIQMODEEQU0x11
IRQMODEEQU0x12
SVCMODEEQU0x13
ABORTMODEEQU0x17
UNDEFMODEEQU0x1b
MODEMASKEQU0x1f
NOINTEQU0xc0

;Thelocationofstacks
UserStackEQU(_STACK_BASEADDRESS-0x3800);0x33ff4800~
SVCStackEQU(_STACK_BASEADDRESS-0x2800);0x33ff5800~
UndefStackEQU(_STACK_BASEADDRESS-0x2400);0x33ff5c00~
AbortStackEQU(_STACK_BASEADDRESS-0x2000);0x33ff6000~
IRQStackEQU(_STACK_BASEADDRESS-0x1000);0x33ff7000~
FIQStackEQU(_STACK_BASEADDRESS-0x0);0x33ff8000~

;checkiftasm.exeisused.
;arm處理器有兩種工作狀態(tài)1.arm:32位這種工作狀態(tài)下執(zhí)行字對準(zhǔn)的arm指令2.Thumb:16位這種工作狀;態(tài)執(zhí)行半字對準(zhǔn)的Thumb指令
;因?yàn)樘幚砥鞣譃?6位32位兩種工作狀態(tài)程序的編譯器也是分16位和32兩種編譯方式所以下面的程序用;于根據(jù)處理器工作狀態(tài)確定編譯器編譯方式
;code16偽指令指示匯編編譯器后面的指令為16位的thumb指令
;code32偽指令指示匯編編譯器后面的指令為32位的arm指令
;這段是為了統(tǒng)一目前的處理器工作狀態(tài)和軟件編譯方式(16位編譯環(huán)境使用tasm.exe編譯
;Checkiftasm.exe(armasm-16...@ADS1.0)isused.
GBLLTHUMBCODE
[{CONFIG}=16;ifconfig==16這里表示你的目前處于領(lǐng)先地16位編譯方式
THUMBCODESETL{TRUE};設(shè)置THUMBCODE為true
CODE32;轉(zhuǎn)入32位編譯模式
|;else
THUMBCODESETL{FALSE};設(shè)置THUMBCODE為false
]

MACRO
MOV_PC_LR
[THUMBCODE
bxlr
|
movpc,lr
]
MEND

MACRO
MOVEQ_PC_LR
[THUMBCODE
bxeqlr
|
moveqpc,lr
]
MEND

;注意下面這段程序是個(gè)宏定義很多人對這段程序不理解我再次強(qiáng)調(diào)這是一個(gè)宏定義所以大家要注意了
;下面包含的HandlerXXXHANDLERHandleXXX將都被下面這段程序展開
;這段程序用于把中斷服務(wù)程序的首地址裝載到pc中,有人稱之為“加載程序”。
;本初始化程序定義了一個(gè)數(shù)據(jù)區(qū)(在文件最后),34個(gè)字空間,存放相應(yīng)中斷服務(wù)程序的首地址。每個(gè)字
;空間都有一個(gè)標(biāo)號,以Handle***命名。
;在向量中斷模式下使用“加載程序”來執(zhí)行中斷服務(wù)程序。
;這里就必須講一下向量中斷模式和非向量中斷模式的概念
;向量中斷模式是當(dāng)cpu讀取位于0x18處的IRQ中斷指令的時(shí)候,系統(tǒng)自動讀取對應(yīng)于該中斷源確定地址上的;
;指令取代0x18處的指令,通過跳轉(zhuǎn)指令系統(tǒng)就直接跳轉(zhuǎn)到對應(yīng)地址
;函數(shù)中節(jié)省了中斷處理時(shí)間提高了中斷處理速度標(biāo)例如ADC中斷的向量地址為0xC0,則在0xC0處放如下
;代碼:ldrPC,=HandlerADC當(dāng)ADC中斷產(chǎn)生的時(shí)候系統(tǒng)會
;自動跳轉(zhuǎn)到HandlerADC函數(shù)中
;非向量中斷模式處理方式是一種傳統(tǒng)的中斷處理方法,當(dāng)系統(tǒng)產(chǎn)生中斷的時(shí)候,系統(tǒng)將interrupt
;pending寄存器中對應(yīng)標(biāo)志位置位然后跳轉(zhuǎn)到位于0x18處的統(tǒng)一中斷
;函數(shù)中該函數(shù)通過讀取interruptpending寄存器中對應(yīng)標(biāo)志位來判斷中斷源并根據(jù)優(yōu)先級關(guān)系再跳到
;對應(yīng)中斷源的處理代碼中
MACRO
$HandlerLabelHANDLER$HandleLabel
;HandlerLabel為中斷服務(wù)入口地址
$HandlerLabel
subsp,sp,#4;Decrementsp(tostorejumpaddress)
;將要使用的r0寄存器入棧
stmfdsp!,{r0};pUSHtheworkregistertostack(lrdoes'tpushbecauseitreturntooriginaladdress)
ldrr0,=$HandleLabel;loadtheaddressofHandleXXXtor0
ldrr0,[r0];loadthecontents(serviceroutinestartaddress)ofHandleXXX
;將對應(yīng)的中斷函數(shù)首地址入棧
strr0,[sp,#4];storethecontents(ISR)ofHandleXXXtostack
;將中斷函數(shù)首地址出棧放入程序指針中系統(tǒng)將跳轉(zhuǎn)到對應(yīng)中斷處理函數(shù)
ldmfdsp!,{r0,pc};pOPtheworkregisterandpc(jumptoISR)
MEND

;一個(gè)arm由RO,RW,ZI三個(gè)斷組成其中RO為代碼段,RW是已經(jīng)初始化的全局變量,ZI是未初始化的全局變量
;(對于GNU工具對應(yīng)的概念是TEXT,DATA,BSS)bootloader
;bootloader要將RW段復(fù)制到ram中并將ZI段清零編譯器使用下列段來記錄各段的起始和結(jié)束地址
;|Image$$RO$$Base|;RO段起始地址
;|Image$$RO$$Limit|;RO段結(jié)束地址加1
;|Image$$RW$$Base|;RW段起始地址
;|Image$$RW$$Limit|;RW段結(jié)束地址加1
;|Image$$ZI$$Base|;ZI段起始地址
;|Image$$ZI$$Limit|;ZI段結(jié)束地址加1
;這些標(biāo)號的值是通過編譯器的設(shè)定來確定的如編譯軟件中對ro-base和rw-base的設(shè)定,例如ro-;base=0xc000000rw-base=0xc5f0000
IMPORT|Image$$RO$$Limit|;EndofROMcode(=startofROMdata)
IMPORT|Image$$RW$$Base|;BaseofRAMtoinitialise
IMPORT|Image$$ZI$$Base|;Baseandlimitofarea
IMPORT|Image$$ZI$$Limit|;tozeroinitialise



IMPORTMain;Themainentryofmonprogram

AREAInit,CODE,READONLY
;異常中斷矢量表(每個(gè)表項(xiàng)占4個(gè)字節(jié))下面是中斷向量表一旦系統(tǒng)運(yùn)行時(shí)有中斷發(fā)生即使移植了操作;系統(tǒng)如linux處理器已經(jīng)把控制權(quán)交給了操作系統(tǒng)一旦發(fā)生中斷處理器還是會跳轉(zhuǎn)到從0x0開始
;中斷向量表中某個(gè)中斷表項(xiàng)(依據(jù)中斷類型)開始執(zhí)行
;具體中斷向量布局請參考s3c44b0spec例如adc中斷向量為0x000000c0下面對應(yīng)表中第49項(xiàng)位置向量地址0x0+4*(49-1)=0x000000c0
ENTRY
;板子上電和復(fù)位后程序開始從位于0x0處開始執(zhí)行硬件剛剛上電復(fù)位后程序從這里開始執(zhí)行跳轉(zhuǎn)到標(biāo)?
;為ResetHandler處執(zhí)行
;1)Thecode,whichconvertstoBig-endian,shouldbeinlittleendiancode.
;2)ThefollowinglittleendiancodewillbecompiledinBig-Endianmode.
;Thecodebyteordershouldbechangedasthememorybuswidth.
;3)Thepseudoinstruction,DCDcan'tbeusedherebecausethelinkergenerateserror.
;總線寬度判?
;DCD用于分配一段字內(nèi)存單片,并用后面的偽指令初始化
;分配字節(jié)由expr個(gè)數(shù)決定
ASSERT:DEF:ENDIAN_CHANGE
[ENDIAN_CHANGE
ASSERT:DEF:ENTRY_BUS_WIDTH
][ENTRY_BUS_WIDTH=32
bChangeBigEndian;DCD0xea000007
]

[ENTRY_BUS_WIDTH=16
andeqr14,r7,r0,lsl#20;DCD0x0007ea00
]

[ENTRY_BUS_WIDTH=8
streqr0,][r0,-r10,ror#1];DCD0x070000ea
]
|
bResetHandler
]
bHandlerUndef;handlerforUndefinedmode
bHandlerSWI;handlerforSWIinterrupt
bHandlerPabort;handlerforPAbort
bHandlerDabort;handlerforDAbort
b.;reserved0x14
bHandlerIRQ;handlerforIRQinterrupt
bHandlerFIQ;handlerforFIQinterrupt

;@0x20
bEnterPWDN
;大小端判斷
ChangeBigEndian
;@0x24
[ENTRY_BUS_WIDTH=32
DCD0xee110f10;0xee110f10=>mrcp15,0,r0,c1,c0,0
DCD0xe3800080;0xe3800080=>orrr0,r0,#0x80;//Big-endian
DCD0xee010f10;0xee010f10=>mcrp15,0,r0,c1,c0,0
]
[ENTRY_BUS_WIDTH=16
DCD0x0f10ee11
DCD0x0080e380
DCD0x0f10ee01
]
[ENTRY_BUS_WIDTH=8
DCD0x100f11ee
DCD0x800080e3
DCD0x100f01ee
]
DCD0xffffffff;swinv0xffffffissimilarwithNOPandrunwellinbothendianmode.
DCD0xffffffff
DCD0xffffffff
DCD0xffffffff
DCD0xffffffff
bResetHandler

;進(jìn)入掉電模式功能
;1.SDRAM必須在自刷新模式.
;2.所有中斷必須屏蔽forSDRAM/DRAMself-refresh.
;3.LCD關(guān)閉forSDRAM/DRAMself-refresh.
;4.TheI-cache可能需要開啟.
;5.Thelocationofthefollowingcodemayhavenottobechanged.

;voidEnterPWDN(intCLKCON);
EnterPWDN
movr2,r0;r2=rCLKCON
tstr0,#0x8;pOWER_OFFmode?
bneENTER_POWER_OFF

ENTER_STOP
ldrr0,=REFRESH
ldrr3,[r0];r3=rREFRESH
movr1,r3
orrr1,r1,#BIT_SELFREFRESH
strr1,[r0];EnableSDRAMself-refresh

movr1,#16;waituntilself-refreshisissued.maynotbeneeded.
0subsr1,r1,#1
bne%B0

ldrr0,=CLKCON;enterSTOPmode.
strr2,[r0]

movr1,#32
0subsr1,r1,#1;1)waituntiltheSTOPmodeisineffect.
bne%B0;2)OrwaithereuntiltheCPU&Peripheralswillbeturned-off
;EnteringPOWER_OFFmode,onlytheresetbywake-upisavailable.

ldrr0,=REFRESH;exitfromSDRAMselfrefreshmode.
strr3,[r0]

MOV_PC_LR

ENTER_POWER_OFF
;NOTE.
;1)rGSTATUS3shouldhavethereturnaddressafterwake-upfromPOWER_OFFmode.

ldrr0,=REFRESH
ldrr1,[r0];r1=rREFRESH
orrr1,r1,#BIT_SELFREFRESH
strr1,[r0];EnableSDRAMself-refresh

movr1,#16;Waituntilself-refreshisissued,whichmaynotbeneeded.
0subsr1,r1,#1
bne%B0

ldrr1,=MISCCR
ldrr0,[r1]
orrr0,r0,#(7<<17);MakesurethatSCLK0:SCLK->0,SCLK1:SCLK->0,SCKE='L'duringboot-up
strr0,[r1]

ldrr0,=CLKCON
strr2,[r0]

b.;CPUwilldiehere.


WAKEUP_POWER_OFF
;ReleaseSCLKnafterwake-upfromthePOWER_OFFmode.
ldrr1,=MISCCR
ldrr0,[r1]
bicr0,r0,#(7<<17);SCLK0:0->SCLK,SCLK1:0->SCLK,SCKE:l->H
strr0,[r1]

;Setmemorycontrolregisters
ldrr0,=SMRDATA
ldrr1,=BWSCON;BWSCONAddress
addr2,r0,#52;EndaddressofSMRDATA
0
ldrr3,[r0],#4
strr3,[r1],#4
cmpr2,r0
bne%B0

movr1,#256
0subsr1,r1,#1;1)waituntiltheSelfRefreshisreleased.
bne%B0

ldrr1,=GSTATUS3;GSTATUS3hasthestartaddressjustafterPOWER_OFFwake-up
ldrr0,[r1]
movpc,r0

LTORG
;下面是具體的中斷處理函數(shù)跳轉(zhuǎn)的宏,通過上面的$HandlerLabel的宏定義展開后跳轉(zhuǎn)到對應(yīng)的中斷處理;函數(shù)(對于向量中斷)
HandlerFIQHANDLERHandleFIQ
HandlerIRQHANDLERHandleIRQ
HandlerUndefHANDLERHandleUndef
HandlerSWIHANDLERHandleSWI
HandlerDabortHANDLERHandleDabort
HandlerPabortHANDLERHandlePabort

;下面這段程序是用來處理非向量中斷,具體判斷I_ISPR中各位是否置1置1表示目前此中斷等待響應(yīng)(每次只能有一位置1),從最高優(yōu)先級中斷位開始判斷,檢測到等待服務(wù)
;中斷就將pc置為中斷服務(wù)函數(shù)首地址
IsrIRQ
subsp,sp,#4;預(yù)留返回指針的存儲位置
stmfdsp!,{r8-r9}

ldrr9,=INTOFFSET
ldrr9,[r9];載入I_ISR
ldrr8,=HandleEINT0
addr8,r8,r9,lsl#2
ldrr8,[r8]
strr8,[sp,#8]
ldmfdsp!,{r8-r9,pc}

;=======
;ENTRY
;=======
;扳子上電和復(fù)位后程序開始從位于0x0執(zhí)行bResetHandler程序從跳轉(zhuǎn)到這里執(zhí)行
;板子上電復(fù)位后執(zhí)行幾個(gè)步驟這里通過標(biāo)號在注釋中加1,2,3....標(biāo)示標(biāo)號表示執(zhí)行順序
;1.禁止看門狗屏蔽所有中斷
ResetHandler
ldrr0,=WTCON;watchdogdisable
ldrr1,=0x0
strr1,[r0]

ldrr0,=INTMSK
ldrr1,=0xffffffff;allinterruptdisable
strr1,[r0]

ldrr0,=INTSUBMSK
ldrr1,=0x7ff;allsubinterruptdisable,2002/04/10
strr1,[r0]

[{FALSE}
;rGPFDAT=(rGPFDAT&~(0xf<<4))|((~data&0xf)<<4);
;Led_Display
ldrr0,=GPFCON
ldrr1,=0x5500
strr1,][r0]
ldrr0,=GPFDAT
ldrr1,=0x10
strr1,[r0]
]
;2.根據(jù)工作頻率設(shè)置pll
;這里介紹一下計(jì)算公式
;Fpllo=(m*Fin)/(p*2^s)
;m=MDIV+8,p=PDIV+2,s=SDIV
;Fpllo必須大于20Mhz小于66Mhz
;Fpllo*2^s必須小于170Mhz
;如下面的PLLCON設(shè)定中的M_DIVP_DIVS_DIV是取自option.h中
;#elif(MCLK==40000000)
;#definePLL_M(0x48)
;#definePLL_P(0x3)
;#definePLL_S(0x2)
;所以m=MDIV+8=80,p=PDIV+2=5,s=SDIV=2
;硬件使用晶振為10Mhz,即Fin=10Mhz
;Fpllo=80*10/5*2^2=40Mhz
;ToreducePLLlocktime,adjusttheLOCKTIMEregister.
ldrr0,=LOCKTIME
ldrr1,=0xffffff
strr1,[r0]

[PLL_ON_START
;ConfigureMPLL
ldrr0,=MPLLCON
ldrr1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV);Fin=12MHz,Fout=50MHz
strr1,][r0]
]

;Checkifthebootiscausedbythewake-upfromPOWER_OFFmode.
ldrr1,=GSTATUS2
ldrr0,[r1]
tstr0,#0x2
;Incaseofthewake-upfromPOWER_OFFmode,gotoPOWER_OFF_WAKEUPhandler.
bneWAKEUP_POWER_OFF

EXPORTStartPointAfterPowerOffWakeUp
StartPointAfterPowerOffWakeUp
;3.置存儲相關(guān)寄存器的程序
;這是設(shè)置SDRAM,flashROM存儲器連接和工作時(shí)序的程序,片選定義的程序
;SMRDATAmap在下面的程序中定義
;SMRDATA中涉及的值請參考memcfg.s程序
;具體寄存器各位含義請參考s3c44b0spec
;Setmemorycontrolregisters
ldrr0,=SMRDATA
ldrr1,=BWSCON;BWSCONAddress
addr2,r0,#52;EndaddressofSMRDATA
0
ldrr3,[r0],#4
strr3,[r1],#4
cmpr2,r0
bne%B0

;Initializestacks
blInitStacks
;5.設(shè)置缺省中斷處理函數(shù)
;SetupIRQhandler
ldrr0,=HandleIRQ;Thisroutineisneeded
ldrr1,=IsrIRQ;ifthereisn't'subspc,lr,#4'at0x18,0x1c
strr1,[r0]

;CopyandpasteRWdata/zeroinitializeddata
ldrr0,=|Image$$RO$$Limit|;GetpointertoROMdata
ldrr1,=|Image$$RW$$Base|;andRAMcopy
ldrr3,=|Image$$ZI$$Base|
;6.將數(shù)據(jù)段拷貝到ram中將零初始化數(shù)據(jù)段清零跳入C語言的main函數(shù)執(zhí)行到這步結(jié)束bootloader初步引導(dǎo)結(jié)束
;Zeroinitbase=>topofinitialiseddata
cmpr0,r1;Checkthattheyaredifferent
beq%F2
1
cmpr1,r3;Copyinitdata
ldrccr2,[r0],#4;-->LDRCCr2,[r0]+ADDr0,r0,#4
strccr2,[r1],#4;-->STRCCr2,[r1]+ADDr1,r1,#4
bcc%B1;r12
ldrr1,=|Image$$ZI$$Limit|;Topofzeroinitsegment
movr2,#0
3
cmpr3,r1;Zeroinit
strccr2,[r3],#4
bcc%B3



[:lNOT:THUMBCODE
blMain;Don'tusemain()because......
b.
]

[THUMBCODE;forstart-upcodeforThumbmode
orrlr,pc,#1
bxlr
CODE16
blMain;Don'tusemain()because......
b.
CODE32
]


;functioninitializingstacks
InitStacks
;Don'tuseDRAM,suchasstmfd,ldmfd......
;SVCstackisinitializedbefore
;Undertoolkitver2.5,'msrcpsr,r1'canbeusedinsteadof'msrcpsr_cxsf,r1'
mrsr0,cpsr
bicr0,r0,#MODEMASK;位清零指令,清r0,再附給ro
orrr1,r0,#UNDEFMODE|NOINT
msrcpsr_cxsf,r1;UndefMode
ldrsp,=UndefStack

orrr1,r0,#ABORTMODE|NOINT
msrcpsr_cxsf,r1;AbortMode
ldrsp,=AbortStack

orrr1,r0,#IRQMODE|NOINT
msrcpsr_cxsf,r1;IRQMode
ldrsp,=IRQStack

orrr1,r0,#FIQMODE|NOINT
msrcpsr_cxsf,r1;FIQMode
ldrsp,=FIQStack

bicr0,r0,#MODEMASK|NOINT
orrr1,r0,#SVCMODE
msrcpsr_cxsf,r1;SVCMode
ldrsp,=SVCStack

;USERmodehasnotbeinitialized.

movpc,lr
;TheLRregisterwon'tbevalidifthecurrentmodeisnotSVCmode.

;這是上面提到的對存儲寄存器初始化的數(shù)據(jù)map
LTORG

SMRDATADATA
;Memoryconfigurationshouldbeoptimizedforbestperformance
;Thefollowingparameterisnotoptimized.
;Memoryaccesscycleparameterstrategy
;1)ThememorysettingsissafeparametersevenatHCLK='75Mhz'.
;2)SDRAMrefreshperiodisforHCLK='75Mhz'.

DCD(0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
DCD((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC));GCS0
DCD((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC));GCS1
DCD((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC));GCS2
DCD((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC));GCS3
DCD((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));GCS4
DCD((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC));GCS5
DCD((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN));GCS6
DCD((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN));GCS7
;DCD((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT);Tchrnotusedbit
DCD((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+REFCNT);設(shè)置刷新周期

;DCD0x32;SCLKpowersavingmode,ARMcoreburstdisable,BANKSIZE128M/128M
DCD0xb2;SCLKpowersavingmode,ARMcoreburstenable,BANKSIZE128M/128M-11/29/2002

DCD0x30;MRSR6CL='3clk'
DCD0x30;MRSR7
;DCD0x20;MRSR6CL='2clk'
;DCD0x20;MRSR7

ALIGN


AREARamData,DATA,READWRITE
;這里將中斷異常向量建立在sdram中
^_ISR_STARTADDRESS
HandleReset#4
HandleUndef#4
HandleSWI#4
HandlePabort#4
HandleDabort#4
HandleReserved#4
HandleIRQ#4
HandleFIQ#4

;Don'tusethelabel'IntVectorTable',
;ThevalueofIntVectorTableisdifferentwiththeaddressyouthinkitmaybe.
;IntVectorTable
HandleEINT0#4
HandleEINT1#4
HandleEINT2#4
HandleEINT3#4
HandleEINT4_7#4
HandleEINT8_23#4
HandleRSV6#4
HandleBATFLT#4
HandleTICK#4
HandleWDT#4
HandleTIMER0#4
HandleTIMER1#4
HandleTIMER2#4
HandleTIMER3#4
HandleTIMER4#4
HandleUART2#4
HandleLCD#4
HandleDMA0#4
HandleDMA1#4
HandleDMA2#4
HandleDMA3#4
HandleMMC#4
HandleSPI0#4
HandleUART1#4
HandleRSV24#4
HandleUSBD#4
HandleUSBH#4
HandleIIC#4
HandleUART0#4
HandleSPI1#4
HandleRTC#4
HandleADC#4

END

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉