<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440啟動(dòng)代碼分析(二)

          TQ2440啟動(dòng)代碼分析(二)

          作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

          ;;;;;;;;;;;;; When EINT0 is pressed, Clear SDRAM

          本文引用地址:http://www.ex-cimer.com/article/201611/321667.htm

          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

          ; check if EIN0 button is pressed

          ;這一段檢測(cè)EINT0是否被按下,假如EINT0被按下,則清空SDRAM

          ldr r0,=GPFCON

          ldr r1,=0x0

          str r1,[r0]

          ldr r0,=GPFUP

          ldr r1,=0xff

          str r1,[r0]

          ;配置GPF

          ldr r1,=GPFDAT

          ldr r0,[r1]

          bic r0,r0,#(0x1e<<1) ; bit clear

          tst r0,#0x1

          bne %F1

          ; Clear SDRAM Start

          ldr r0,=GPFCON

          ldr r1,=0x55aa

          str r1,[r0]

          ; ldr r0,=GPFUP

          ; ldr r1,=0xff

          ; str r1,[r0]

          ldr r0,=GPFDAT

          ldr r1,=0x0

          str r1,[r0] ;LED=****

          mov r1,#0

          mov r2,#0

          mov r3,#0

          mov r4,#0

          mov r5,#0

          mov r6,#0

          mov r7,#0

          mov r8,#0

          ldr r9,=0x4000000 ;64MB

          ldr r0,=0x30000000

          0

          stmia r0!,{r1-r8}

          subs r9,r9,#32

          bne %B0

          ;以上這段清空SDRAM

          ;Clear SDRAM End

          1

          ;Initialize stacks

          bl InitStacks

          ;檢測(cè)引腳OM[1:0],如果OM[1:0]!=0,選擇從NOR Flash啟動(dòng),如果OM[1:0]==0,則表示從nand flash啟動(dòng)

          ;===========================================================

          ldr r0, =BWSCON

          ldr r0, [r0]

          ands r0, r0, #6 ;OM[1:0] != 0, NOR FLash boot

          bne copy_proc_beg ;do not read nand flash

          adr r0, ResetEntry ;OM[1:0] == 0, NAND FLash boot

          cmp r0, #0 ;if use Multi-ice,

          bne copy_proc_beg ;do not read nand flash for boot

          ;nop

          ;===========================================================

          nand_boot_beg

          [ {TRUE}

          bl RdNF2SDRAM

          ]

          ;nand flash啟動(dòng),拷貝程序到steppingstone區(qū)域

          ldr pc, =copy_proc_beg

          ;===========================================================

          copy_proc_beg;

          adr r0, ResetEntry

          ldr r2, BaseOfROM

          cmp r0, r2

          ldreq r0, TopOfROM

          beq InitRam

          ldr r3, TopOfROM

          0

          ldmia r0!, {r4-r7}

          stmia r2!, {r4-r7}

          cmp r2, r3

          bcc %B0

          sub r2, r2, r3

          sub r0, r0, r2

          InitRam

          ldr r2, BaseOfBSS

          ldr r3, BaseOfZero

          0

          cmp r2, r3

          ldrcc r1, [r0], #4

          strcc r1, [r2], #4

          bcc %B0

          mov r0, #0

          ldr r3, EndOfBSS

          1

          cmp r2, r3

          strcc r0, [r2], #4

          bcc %B1

          ldr pc, =%F2 ;goto compiler address

          2

          ; [ CLKDIV_VAL>1 ; means Fclk:Hclk is not 1:1.

          ; bl MMU_SetAsyncBusMode

          ; |

          ; bl MMU_SetFastBusMode ; default value.

          ; ]

          ;===========================================================

          ; Setup IRQ handler

          ldr r0,=HandleIRQ ;This routine is needed

          ldr r1,=IsrIRQ ;if there is not subs pc,lr,#4 at 0x18, 0x1c

          str r1,[r0]

          [ :LNOT:THUMBCODE

          bl Main ;Do not use main() because ......

          b .

          ]

          [ THUMBCODE ;for start-up code for Thumb mode

          orr lr,pc,#1

          bx lr

          CODE16

          bl Main ;Do not use main() because ......

          b .

          CODE32

          ]

          ;堆棧初始化的順序決定系統(tǒng)最后運(yùn)行在哪種處理器模式,最后初始化哪種模式的堆棧,系

          ;統(tǒng)就運(yùn)行在哪種模式。

          ;function initializing stacks

          InitStacks

          ;Do not use DRAM,such as stmfd,ldmfd......

          ;SVCstack is initialized before

          ;Under toolkit ver 2.5, msr cpsr,r1 can be used instead of msr cpsr_cxsf,r1

          mrs r0,cpsr

          bic r0,r0,#MODEMASK

          orr r1,r0,#UNDEFMODE|NOINT

          msr cpsr_cxsf,r1 ;UndefMode

          ldr sp,=UndefStack ; UndefStack=0x33FF_5C00


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: TQ2440啟動(dòng)代

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();