2410才用下init, 程序大于4K时应该不能从nand启动起来了吧?

[复制链接]
2433|2
 楼主| playlinus 发表于 2008-10-6 16:45 | 显示全部楼层 |阅读模式
ni, NAND, ST, se, AC
;=========================================<br />;&nbsp;NAME:&nbsp;2410INIT.S<br />;&nbsp;DESC:&nbsp;C&nbsp;start&nbsp;up&nbsp;codes<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Configure&nbsp;memory,&nbsp;ISR&nbsp;,stacks<br />;&nbsp;&nbsp;&nbsp;&nbsp;Initialize&nbsp;C-variables<br />;&nbsp;HISTORY:<br />;&nbsp;2002.02.25:kwtark:&nbsp;ver&nbsp;0.0<br />;&nbsp;2002.03.20:purnnamu:&nbsp;Add&nbsp;some&nbsp;functions&nbsp;for&nbsp;testing&nbsp;STOP,POWER_OFF&nbsp;mode<br />;=========================================<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GET&nbsp;option.inc<br />&nbsp;&nbsp;&nbsp;&nbsp;GET&nbsp;memcfg.inc<br />&nbsp;&nbsp;&nbsp;&nbsp;GET&nbsp;2410addr.inc<br /><br />BIT_SELFREFRESH&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt22)<br /><br />;Pre-defined&nbsp;constants<br />USERMODE&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />FIQMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x11<br />IRQMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x12<br />SVCMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x13<br />ABORTMODE&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x17<br />UNDEFMODE&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1b<br />MODEMASK&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1f<br />NOINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xc0<br /><br />;The&nbsp;location&nbsp;of&nbsp;stacks<br />UserStack&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x3800)&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff4800&nbsp;~&nbsp;<br />SVCStack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x2800)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff5800&nbsp;~<br />UndefStack&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x2400)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff5c00&nbsp;~<br />AbortStack&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x2000)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff6000&nbsp;~<br />IRQStack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x1000)&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff7000&nbsp;~<br />FIQStack&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;(_STACK_BASEADDRESS-0x0)&nbsp;&nbsp;&nbsp;&nbsp;;0x33ff8000&nbsp;~&nbsp;<br /><br />;Check&nbsp;if&nbsp;tasm.exe(armasm&nbsp;-16&nbsp;...@ADS&nbsp;1.0)&nbsp;is&nbsp;used.<br />&nbsp;&nbsp;&nbsp;&nbsp;GBLL&nbsp;&nbsp;&nbsp;&nbsp;THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;{CONFIG}&nbsp;=&nbsp;16&nbsp;<br />THUMBCODE&nbsp;SETL&nbsp;&nbsp;{TRUE}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<br />THUMBCODE&nbsp;SETL&nbsp;&nbsp;{FALSE}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MACRO<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV_PC_LR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;lr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;pc,lr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;MEND<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MACRO<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVEQ_PC_LR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bxeq&nbsp;lr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveq&nbsp;pc,lr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;MEND<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MACRO<br />$HandlerLabel&nbsp;HANDLER&nbsp;$HandleLabel<br /><br />$HandlerLabel<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;decrement&nbsp;sp(to&nbsp;store&nbsp;jump&nbsp;address)<br />&nbsp;&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r0}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;PUSH&nbsp;the&nbsp;work&nbsp;register&nbsp;to&nbsp;stack(lr&nbsp;does't&nbsp;push&nbsp;because&nbsp;it&nbsp;return&nbsp;to&nbsp;original&nbsp;address)<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=$HandleLabel;load&nbsp;the&nbsp;address&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;load&nbsp;the&nbsp;contents(service&nbsp;routine&nbsp;start&nbsp;address)&nbsp;of&nbsp;HandleXXX<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[sp,#4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;store&nbsp;the&nbsp;contents(ISR)&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;stack<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;sp!,{r0,pc}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;POP&nbsp;the&nbsp;work&nbsp;register&nbsp;and&nbsp;pc(jump&nbsp;to&nbsp;ISR)<br />&nbsp;&nbsp;&nbsp;&nbsp;MEND<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;|Image$$RO$$Limit|&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;|Image$$RW$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;|Image$$ZI$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;|Image$$ZI$$Limit|&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;The&nbsp;main&nbsp;entry&nbsp;of&nbsp;mon&nbsp;program&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Init,CODE,READONLY<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ENTRY&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;1)The&nbsp;code,&nbsp;which&nbsp;converts&nbsp;to&nbsp;Big-endian,&nbsp;should&nbsp;be&nbsp;in&nbsp;little&nbsp;endian&nbsp;code.<br />&nbsp;&nbsp;&nbsp;&nbsp;;2)The&nbsp;following&nbsp;little&nbsp;endian&nbsp;code&nbsp;will&nbsp;be&nbsp;compiled&nbsp;in&nbsp;Big-Endian&nbsp;mode.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;The&nbsp;code&nbsp;byte&nbsp;order&nbsp;should&nbsp;be&nbsp;changed&nbsp;as&nbsp;the&nbsp;memory&nbsp;bus&nbsp;width.<br />&nbsp;&nbsp;&nbsp;&nbsp;;3)The&nbsp;pseudo&nbsp;instruction,DCD&nbsp;can't&nbsp;be&nbsp;used&nbsp;here&nbsp;because&nbsp;the&nbsp;linker&nbsp;generates&nbsp;error.<br />&nbsp;&nbsp;&nbsp;&nbsp;ASSERT&nbsp;&nbsp;&nbsp;&nbsp;:DEF:ENDIAN_CHANGE<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENDIAN_CHANGE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERT&nbsp;&nbsp;:DEF:ENTRY_BUS_WIDTH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;][&nbsp;ENTRY_BUS_WIDTH=32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;ChangeBigEndian&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;DCD&nbsp;0xea000007&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENTRY_BUS_WIDTH=16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;andeq&nbsp;&nbsp;&nbsp;&nbsp;r14,r7,r0,lsl&nbsp;#20&nbsp;&nbsp;&nbsp;;DCD&nbsp;0x0007ea00<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENTRY_BUS_WIDTH=8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;streq&nbsp;&nbsp;&nbsp;&nbsp;r0,][r0,-r10,ror&nbsp;#1]&nbsp;;DCD&nbsp;0x070000ea<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;ResetHandler&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerUndef&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;Undefined&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerSWI&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;SWI&nbsp;interrupt<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerPabort&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;PAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerDabort&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;DAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;reserved<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerIRQ&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;IRQ&nbsp;interrupt&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;HandlerFIQ&nbsp;&nbsp;&nbsp;&nbsp;;handler&nbsp;for&nbsp;FIQ&nbsp;interrupt<br /><br />;@0x20<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;EnterPWDN<br />ChangeBigEndian<br />;@0x24<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENTRY_BUS_WIDTH=32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0xee110f10&nbsp;&nbsp;&nbsp;&nbsp;;0xee110f10&nbsp;=&gt&nbsp;mrc&nbsp;p15,0,r0,c1,c0,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0xe3800080&nbsp;&nbsp;&nbsp;&nbsp;;0xe3800080&nbsp;=&gt&nbsp;orr&nbsp;r0,r0,#0x80;&nbsp;&nbsp;//Big-endian<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0xee010f10&nbsp;&nbsp;&nbsp;&nbsp;;0xee010f10&nbsp;=&gt&nbsp;mcr&nbsp;p15,0,r0,c1,c0,0<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENTRY_BUS_WIDTH=16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x0f10ee11<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x0080e380&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x0f10ee01&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;ENTRY_BUS_WIDTH=8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x100f11ee&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x800080e3&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x100f01ee&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0xffffffff&nbsp;&nbsp;;swinv&nbsp;0xffffff&nbsp;is&nbsp;similar&nbsp;with&nbsp;NOP&nbsp;and&nbsp;run&nbsp;well&nbsp;in&nbsp;both&nbsp;endian&nbsp;mode.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0xffffffff<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0xffffffff<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0xffffffff<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0xffffffff<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;ResetHandler<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;Function&nbsp;for&nbsp;entering&nbsp;power&nbsp;down&nbsp;mode<br />;&nbsp;1.&nbsp;SDRAM&nbsp;should&nbsp;be&nbsp;in&nbsp;self-refresh&nbsp;mode.<br />;&nbsp;2.&nbsp;All&nbsp;interrupt&nbsp;should&nbsp;be&nbsp;maksked&nbsp;for&nbsp;SDRAM/DRAM&nbsp;self-refresh.<br />;&nbsp;3.&nbsp;LCD&nbsp;controller&nbsp;should&nbsp;be&nbsp;disabled&nbsp;for&nbsp;SDRAM/DRAM&nbsp;self-refresh.<br />;&nbsp;4.&nbsp;The&nbsp;I-cache&nbsp;may&nbsp;have&nbsp;to&nbsp;be&nbsp;turned&nbsp;on.&nbsp;<br />;&nbsp;5.&nbsp;The&nbsp;location&nbsp;of&nbsp;the&nbsp;following&nbsp;code&nbsp;may&nbsp;have&nbsp;not&nbsp;to&nbsp;be&nbsp;changed.<br /><br />;void&nbsp;EnterPWDN(int&nbsp;CLKCON);&nbsp;<br />EnterPWDN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r2,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;r2=rCLKCON<br />&nbsp;&nbsp;&nbsp;&nbsp;tst&nbsp;r0,#0x8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;POWER_OFF&nbsp;mode?<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;ENTER_POWER_OFF<br /><br />ENTER_STOP&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=REFRESH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r3,[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;r3=rREFRESH&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,&nbsp;r3<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;r1,&nbsp;r1,&nbsp;#BIT_SELFREFRESH<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r1,&nbsp;[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Enable&nbsp;SDRAM&nbsp;self-refresh<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;wait&nbsp;until&nbsp;self-refresh&nbsp;is&nbsp;issued.&nbsp;may&nbsp;not&nbsp;be&nbsp;needed.<br />0&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;r1,r1,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;%B0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=CLKCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;enter&nbsp;STOP&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r2,[r0]&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#32<br />0&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;r1,r1,#1&nbsp;&nbsp;&nbsp;&nbsp;;1)&nbsp;wait&nbsp;until&nbsp;the&nbsp;STOP&nbsp;mode&nbsp;is&nbsp;in&nbsp;effect.<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;%B0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;2)&nbsp;Or&nbsp;wait&nbsp;here&nbsp;until&nbsp;the&nbsp;CPU&Peripherals&nbsp;will&nbsp;be&nbsp;turned-off<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;Entering&nbsp;POWER_OFF&nbsp;mode,&nbsp;only&nbsp;the&nbsp;reset&nbsp;by&nbsp;wake-up&nbsp;is&nbsp;available.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=REFRESH&nbsp;;exit&nbsp;from&nbsp;SDRAM&nbsp;self&nbsp;refresh&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r3,[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV_PC_LR<br /><br />ENTER_POWER_OFF&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;NOTE.<br />&nbsp;&nbsp;&nbsp;&nbsp;;1)&nbsp;rGSTATUS3&nbsp;should&nbsp;have&nbsp;the&nbsp;return&nbsp;address&nbsp;after&nbsp;wake-up&nbsp;from&nbsp;POWER_OFF&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=REFRESH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r1,[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;r1=rREFRESH&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;r1,&nbsp;r1,&nbsp;#BIT_SELFREFRESH<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r1,&nbsp;[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Enable&nbsp;SDRAM&nbsp;self-refresh<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Wait&nbsp;until&nbsp;self-refresh&nbsp;is&nbsp;issued,which&nbsp;may&nbsp;not&nbsp;be&nbsp;needed.<br />0&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;r1,r1,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;%B0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=MISCCR<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,[r1]<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#(7&lt&lt17)&nbsp;&nbsp;;Make&nbsp;sure&nbsp;that&nbsp;SCLK0:SCLK-&gt0,&nbsp;SCLK1:SCLK-&gt0,&nbsp;SCKE=L&nbsp;during&nbsp;boot-up&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r0,[r1]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,=CLKCON<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;r2,[r0]&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;CPU&nbsp;will&nbsp;die&nbsp;here.<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />WAKEUP_POWER_OFF<br />&nbsp;&nbsp;&nbsp;&nbsp;;Release&nbsp;SCLKn&nbsp;after&nbsp;wake-up&nbsp;from&nbsp;the&nbsp;POWER_OFF&nbsp;mode.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=MISCCR<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,[r1]<br />&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#(7&lt&lt17)&nbsp;&nbsp;;SCLK0:0-&gtSCLK,&nbsp;SCLK1:0-&gtSCLK,&nbsp;SCKE:L-&gtH<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r0,[r1]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;Set&nbsp;memory&nbsp;control&nbsp;registers<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=SMRDATA<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=BWSCON&nbsp;&nbsp;&nbsp;&nbsp;;BWSCON&nbsp;Address<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;r0,&nbsp;#52&nbsp;&nbsp;&nbsp;&nbsp;;End&nbsp;address&nbsp;of&nbsp;SMRDATA<br />0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[r0],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[r1],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;%B0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#256<br />0&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;r1,r1,#1&nbsp;&nbsp;&nbsp;&nbsp;;1)&nbsp;wait&nbsp;until&nbsp;the&nbsp;SelfRefresh&nbsp;is&nbsp;released.<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;%B0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r1,=GSTATUS3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;GSTATUS3&nbsp;has&nbsp;the&nbsp;start&nbsp;address&nbsp;just&nbsp;after&nbsp;POWER_OFF&nbsp;wake-up<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;r0,[r1]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;pc,r0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LTORG&nbsp;&nbsp;&nbsp;<br />HandlerFIQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleFIQ<br />HandlerIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleIRQ<br />HandlerUndef&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleUndef<br />HandlerSWI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleSWI<br />HandlerDabort&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleDabort<br />HandlerPabort&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandlePabort<br /><br />IsrIRQ&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;reserved&nbsp;for&nbsp;PC<br />&nbsp;&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r8-r9}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r9,=INTOFFSET<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r9,[r9]<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r8,=HandleEINT0<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;r8,r8,r9,lsl&nbsp;#2<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r8,[r8]<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r8,[sp,#8]<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r8-r9,pc}<br /><br />;=======<br />;&nbsp;ENTRY&nbsp;&nbsp;<br />;=======<br />ResetHandler<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=WTCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;watch&nbsp;dog&nbsp;disable&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=INTMSK<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0xffffffff&nbsp;&nbsp;;all&nbsp;interrupt&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=INTSUBMSK<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x3ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;all&nbsp;sub&nbsp;interrupt&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;{FALSE}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;rGPFDAT&nbsp;=&nbsp;(rGPFDAT&nbsp;&&nbsp;~(0xf&lt&lt4))&nbsp;|&nbsp;((~data&nbsp;&&nbsp;0xf)&lt&lt4);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Led_Display<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=GPFCON<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x5500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,][r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=GPFDAT<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x10<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;To&nbsp;reduce&nbsp;PLL&nbsp;lock&nbsp;time,&nbsp;adjust&nbsp;the&nbsp;LOCKTIME&nbsp;register.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=LOCKTIME<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0xffffff<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;PLL_ON_START<br />&nbsp;&nbsp;&nbsp;&nbsp;;Configure&nbsp;MPLL<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=MPLLCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=((M_MDIV&lt&lt12)+(M_PDIV&lt&lt4)+M_SDIV)&nbsp;&nbsp;;Fin=12MHz,Fout=50MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,][r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;Check&nbsp;if&nbsp;the&nbsp;boot&nbsp;is&nbsp;caused&nbsp;by&nbsp;the&nbsp;wake-up&nbsp;from&nbsp;POWER_OFF&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=GSTATUS2<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,[r1]<br />&nbsp;&nbsp;&nbsp;&nbsp;tst&nbsp;&nbsp;&nbsp;&nbsp;r0,#0x2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;In&nbsp;case&nbsp;of&nbsp;the&nbsp;wake-up&nbsp;from&nbsp;POWER_OFF&nbsp;mode,&nbsp;go&nbsp;to&nbsp;POWER_OFF_WAKEUP&nbsp;handler.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;WAKEUP_POWER_OFF<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;StartPointAfterPowerOffWakeUp<br />StartPointAfterPowerOffWakeUp<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;Set&nbsp;memory&nbsp;control&nbsp;registers<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=SMRDATA<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=BWSCON&nbsp;&nbsp;&nbsp;&nbsp;;BWSCON&nbsp;Address<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;r0,&nbsp;#52&nbsp;&nbsp;&nbsp;&nbsp;;End&nbsp;address&nbsp;of&nbsp;SMRDATA<br />0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[r0],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;[r1],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;%B0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Initialize&nbsp;stacks<br />&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;InitStacks<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Setup&nbsp;IRQ&nbsp;handler<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=HandleIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;This&nbsp;routine&nbsp;is&nbsp;needed<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=IsrIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;if&nbsp;there&nbsp;isn't&nbsp;'subs&nbsp;pc,lr,#4'&nbsp;at&nbsp;0x18,&nbsp;0x1c<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;Copy&nbsp;and&nbsp;paste&nbsp;RW&nbsp;data/zero&nbsp;initialized&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=|Image$$RO$$Limit|&nbsp;;&nbsp;Get&nbsp;pointer&nbsp;to&nbsp;ROM&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$RW$$Base|&nbsp;&nbsp;;&nbsp;and&nbsp;RAM&nbsp;copy<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;=|Image$$ZI$$Base|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;Zero&nbsp;init&nbsp;base&nbsp;=&gt&nbsp;top&nbsp;of&nbsp;initialised&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Check&nbsp;that&nbsp;they&nbsp;are&nbsp;different<br />&nbsp;&nbsp;&nbsp;&nbsp;beq&nbsp;&nbsp;&nbsp;&nbsp;%F2<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Copy&nbsp;init&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;ldrcc&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;[r0],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;--&gt&nbsp;LDRCC&nbsp;r2,&nbsp;[r0]&nbsp;+&nbsp;ADD&nbsp;r0,&nbsp;r0,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;strcc&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;[r1],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;--&gt&nbsp;STRCC&nbsp;r2,&nbsp;[r1]&nbsp;+&nbsp;ADD&nbsp;r1,&nbsp;r1,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;bcc&nbsp;&nbsp;&nbsp;&nbsp;%B1<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$ZI$$Limit|&nbsp;;&nbsp;Top&nbsp;of&nbsp;zero&nbsp;init&nbsp;segment<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;#0<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Zero&nbsp;init<br />&nbsp;&nbsp;&nbsp;&nbsp;strcc&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;[r3],&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;bcc&nbsp;&nbsp;&nbsp;&nbsp;%B3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;:LNOT:THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Don't&nbsp;use&nbsp;main()&nbsp;because&nbsp;......<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;THUMBCODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;for&nbsp;start-up&nbsp;code&nbsp;for&nbsp;Thumb&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;lr,pc,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;&nbsp;&nbsp;&nbsp;lr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CODE16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Don't&nbsp;use&nbsp;main()&nbsp;because&nbsp;......<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br /><br />;function&nbsp;initializing&nbsp;stacks<br />InitStacks<br />&nbsp;&nbsp;&nbsp;&nbsp;;Don't&nbsp;use&nbsp;DRAM,such&nbsp;as&nbsp;stmfd,ldmfd......<br />&nbsp;&nbsp;&nbsp;&nbsp;;SVCstack&nbsp;is&nbsp;initialized&nbsp;before<br />&nbsp;&nbsp;&nbsp;&nbsp;;Under&nbsp;toolkit&nbsp;ver&nbsp;2.5,&nbsp;'msr&nbsp;cpsr,r1'&nbsp;can&nbsp;be&nbsp;used&nbsp;instead&nbsp;of&nbsp;'msr&nbsp;cpsr_cxsf,r1'<br />&nbsp;&nbsp;&nbsp;&nbsp;mrs&nbsp;&nbsp;&nbsp;&nbsp;r0,cpsr<br />&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODEMASK<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#UNDEFMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;UndefMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;sp,=UndefStack<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#ABORTMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;AbortMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;sp,=AbortStack<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#IRQMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;IRQMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;sp,=IRQStack<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#FIQMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;FIQMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;sp,=FIQStack<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODEMASK|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#SVCMODE<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;SVCMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;sp,=SVCStack<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;USER&nbsp;mode&nbsp;has&nbsp;not&nbsp;be&nbsp;initialized.<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;pc,lr&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;The&nbsp;LR&nbsp;register&nbsp;won't&nbsp;be&nbsp;valid&nbsp;if&nbsp;the&nbsp;current&nbsp;mode&nbsp;is&nbsp;not&nbsp;SVC&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LTORG<br /><br />SMRDATA&nbsp;DATA<br />;&nbsp;Memory&nbsp;configuration&nbsp;should&nbsp;be&nbsp;optimized&nbsp;for&nbsp;best&nbsp;performance&nbsp;<br />;&nbsp;The&nbsp;following&nbsp;parameter&nbsp;is&nbsp;not&nbsp;optimized.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;Memory&nbsp;access&nbsp;cycle&nbsp;parameter&nbsp;strategy<br />;&nbsp;1)&nbsp;The&nbsp;memory&nbsp;settings&nbsp;is&nbsp;&nbsp;safe&nbsp;parameters&nbsp;even&nbsp;at&nbsp;HCLK=75Mhz.<br />;&nbsp;2)&nbsp;SDRAM&nbsp;refresh&nbsp;period&nbsp;is&nbsp;for&nbsp;HCLK=75Mhz.&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;(0+(B1_BWSCON&lt&lt4)+(B2_BWSCON&lt&lt8)+(B3_BWSCON&lt&lt12)+(B4_BWSCON&lt&lt16)+(B5_BWSCON&lt&lt20)+(B6_BWSCON&lt&lt24)+(B7_BWSCON&lt&lt28))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B0_Tacs&lt&lt13)+(B0_Tcos&lt&lt11)+(B0_Tacc&lt&lt8)+(B0_Tcoh&lt&lt6)+(B0_Tah&lt&lt4)+(B0_Tacp&lt&lt2)+(B0_PMC))&nbsp;&nbsp;&nbsp;;GCS0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B1_Tacs&lt&lt13)+(B1_Tcos&lt&lt11)+(B1_Tacc&lt&lt8)+(B1_Tcoh&lt&lt6)+(B1_Tah&lt&lt4)+(B1_Tacp&lt&lt2)+(B1_PMC))&nbsp;&nbsp;&nbsp;;GCS1&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B2_Tacs&lt&lt13)+(B2_Tcos&lt&lt11)+(B2_Tacc&lt&lt8)+(B2_Tcoh&lt&lt6)+(B2_Tah&lt&lt4)+(B2_Tacp&lt&lt2)+(B2_PMC))&nbsp;&nbsp;&nbsp;;GCS2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B3_Tacs&lt&lt13)+(B3_Tcos&lt&lt11)+(B3_Tacc&lt&lt8)+(B3_Tcoh&lt&lt6)+(B3_Tah&lt&lt4)+(B3_Tacp&lt&lt2)+(B3_PMC))&nbsp;&nbsp;&nbsp;;GCS3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B4_Tacs&lt&lt13)+(B4_Tcos&lt&lt11)+(B4_Tacc&lt&lt8)+(B4_Tcoh&lt&lt6)+(B4_Tah&lt&lt4)+(B4_Tacp&lt&lt2)+(B4_PMC))&nbsp;&nbsp;&nbsp;;GCS4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B5_Tacs&lt&lt13)+(B5_Tcos&lt&lt11)+(B5_Tacc&lt&lt8)+(B5_Tcoh&lt&lt6)+(B5_Tah&lt&lt4)+(B5_Tacp&lt&lt2)+(B5_PMC))&nbsp;&nbsp;&nbsp;;GCS5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B6_MT&lt&lt15)+(B6_Trcd&lt&lt2)+(B6_SCAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B7_MT&lt&lt15)+(B7_Trcd&lt&lt2)+(B7_SCAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((REFEN&lt&lt23)+(TREFMD&lt&lt22)+(Trp&lt&lt20)+(Trc&lt&lt18)+(Tchr&lt&lt16)+REFCNT)&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;SCLK&nbsp;power&nbsp;saving&nbsp;mode,&nbsp;BANKSIZE&nbsp;128M/128M<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR6&nbsp;CL=3clk<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR7<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR6&nbsp;CL=2clk<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR7<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ALIGN<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;RamData,&nbsp;DATA,&nbsp;READWRITE<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;&nbsp;&nbsp;_ISR_STARTADDRESS<br />HandleReset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUndef&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleSWI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandlePabort&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleDabort&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleReserved&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleFIQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br /><br />;Don't&nbsp;use&nbsp;the&nbsp;label&nbsp;'IntVectorTable',<br />;The&nbsp;value&nbsp;of&nbsp;IntVectorTable&nbsp;is&nbsp;different&nbsp;with&nbsp;the&nbsp;address&nbsp;you&nbsp;think&nbsp;it&nbsp;may&nbsp;be.<br />;IntVectorTable<br />HandleEINT0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleEINT1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleEINT2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleEINT3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleEINT4_7&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleEINT8_23&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleRSV6&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleBATFLT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTICK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleWDT&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTIMER0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTIMER1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTIMER2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTIMER3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleTIMER4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUART2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleLCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleDMA0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleDMA1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleDMA2&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleDMA3&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleMMC&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleSPI0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUART1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleRSV24&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUSBD&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUSBH&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleIIC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleUART0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleSPI1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleRTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br />HandleADC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;4<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br />
twentyone 发表于 2008-10-8 00:01 | 显示全部楼层

RE

从NAND&nbsp;FLASH启动,2410提供了STEPPING&nbsp;STONE,只支持4K代码的拷贝。这只是一种启动方式,你需要灵活应用,以满足你的程序的需要。
 楼主| playlinus 发表于 2008-10-8 09:47 | 显示全部楼层

我是问以上的init实现不了大于4K程序的nand启动吧 ?

是不是需要额外的搬运nand内容到SDRAM的函数才可以实现&nbsp;?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

518

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部