在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            TQ2440啟動代碼分析(一)

            作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
            看了好幾天的啟動代碼了,終于把大部分的東西都看懂了,在此整理下自己對TQ2440開發(fā)板啟動代碼的理解(參考了網(wǎng)上找的一些資料),并貼出來供大家看一下,希望對大家有幫助,如果有什么錯了的地方,也請大家不吝賜教。

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

            本文引用地址:http://www.biyoush.com/article/201611/321668.htm

            ; NAME: 2440INIT.S

            ; DESC: C start up codes

            ; Configure memory, ISR ,stacks

            ; Initialize C-variables

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

            啟動代碼主要是在主程序運行之前初始化系統(tǒng)硬件及軟件的運行環(huán)境,它的主要功能包括以下的幾個方面:

            1、建立中斷向量表

            2、初始化系統(tǒng)堆棧

            3、應(yīng)用程序執(zhí)行環(huán)境初始化

            4 跳轉(zhuǎn)至主函數(shù)

            接下來對各個部分進行分析

            ;GET 是包含頭文件的意思,相當(dāng)于C語言中的include,是將一個源文件包含到當(dāng)前源文件中,并將被包含的文件在其當(dāng)前位置進行匯編處理

            GET option.inc ;option.inc文件包含了開發(fā)板的配置信息—堆棧、時鐘等

            GET memcfg.inc ;存儲控制文件

            GET 2440addr.inc ;寄存器地址地址定義

            BIT_SELFREFRESH EQU (1<<22) ;SDRAM自刷新標(biāo)志位

            ;預(yù)定義的工作模式

            ;ARM 有7 種模式,用戶模式,快速中斷模式,中斷模式,管理模式,中止模式,未定

            ;義模式和系統(tǒng)模式。系統(tǒng)堆棧的初始化主要是給各個處理器模式分配堆??臻g。堆棧是為

            ;中斷或程序跳轉(zhuǎn)服務(wù)的,當(dāng)發(fā)生中斷或程序跳轉(zhuǎn)時,需要將當(dāng)前處理器的狀態(tài)及一些參數(shù)

            ;保持在堆棧中,當(dāng)中斷處理完畢以后或程序執(zhí)行完后返回時,再將堆棧保存的現(xiàn)場數(shù)據(jù)進

            ;行恢復(fù),以保證原來的程序正確運行

            ;Pre-defined constants

            USERMODE EQU 0x10 ;用戶模式

            FIQMODE EQU 0x11 ;快速中斷模式

            IRQMODE EQU 0x12 ;中斷模式

            SVCMODE EQU 0x13 ;管理模式

            ABORTMODE EQU 0x17 ;中止模式

            UNDEFMODE EQU 0x1b ;未定義模式

            MODEMASK EQU 0x1f ;模式掩碼

            NOINT EQU 0xc0 ;無中斷模式

            ;The location of stacks

            ;定義各種模式下使用的堆棧起始地址,_STACK_BASEADDRESS是由option.inc定義的

            UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~

            SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~

            UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~

            AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~

            IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;0x33ff7000 ~

            FIQStack EQU (_STACK_BASEADDRESS-0x0) ;0x33ff8000 ~

            ;Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.

            ; 判斷是否THUMB指令

            ; [ 代表IF,| 指的是ELSE,] 相當(dāng)于ENDIF

            GBLL THUMBCODE ;定義一個局部變量THUMBCODE

            [ {CONFIG} = 16 ;如果是16位代碼,則將THUMBCODE設(shè)為真

            THUMBCODE SETL {TRUE} ;

            CODE32 ;否則是ARM指令

            |

            THUMBCODE SETL {FALSE}

            ]

            ; 宏定義,用于子程序的返回

            MACRO

            MOV_PC_LR

            [ THUMBCODE ;如果目標(biāo)地址是THUMB的指令,則跳到THUMB地址

            bx lr ;在ARM模式中,要用BX指令跳轉(zhuǎn)到THUMB指令,并轉(zhuǎn)換模式

            |

            mov pc,lr ;如果目標(biāo)地址是ARM指令,則直接把函數(shù)返回地址給PC

            ]

            MEND

            MACRO

            MOVEQ_PC_LR ;帶條件的函數(shù)返回,與MOV_PC_LR類似

            [ THUMBCODE

            bxeq lr

            |

            moveq pc,lr

            ]

            MEND

            PS:下面這一段是網(wǎng)上找的,我覺得它已經(jīng)介紹的非常好了,所以就直接拿過來用來,呵呵

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

            ;下面這個宏是用于第一次查表過程的實現(xiàn)中斷向量的重定向,你會發(fā)現(xiàn)

            ;在_ISR_STARTADDRESS=0x33FF_FF00里定義的第一級中斷向量表

            ;是采用型如Handle***的方式的. 而在程序的ENTRY處(程序開始處)采用的是

            ;b Handler***的方式.

            ;在這里Handler***就是通過HANDLER這個宏和Handle***進立聯(lián)系的.

            ;這種方式的優(yōu)點就是正真定義的向量數(shù)據(jù)在內(nèi)存空間里,而不是在ENTRY處

            ;的ROM(FLASH)空間里, 這樣,我們就可以在程序里靈活的改動向量的數(shù)據(jù)了.

            ;其中HANDLER是一個宏,用于查找中斷處理程序的入口地址。這些地址存放在

            ;由HandleXXX指向的表項中,該表定位在RAM高端,基地址為_ISR_STARTADDRESS。

            ;假如_ISR_STARTADDRESS為 0x800000000,當(dāng)IRQ中斷時,根據(jù)b HandlerFIQ,先跳轉(zhuǎn)

            ;再根據(jù)^ _ISR_STARTADDRESS基地址+HandleIRQ 的偏移地址(4*6)得到的中斷地址

            ;0x80000000+0x00000024=0x80000024


            上一頁 1 2 3 下一頁

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

            評論


            技術(shù)專區(qū)

            關(guān)閉