在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM嵌入式系統(tǒng)初始化過(guò)程

            ARM嵌入式系統(tǒng)初始化過(guò)程

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            基于ARM內(nèi)核微處理器的系統(tǒng)一般為復(fù)雜的片上系統(tǒng),這種復(fù)雜系統(tǒng)的多數(shù)硬件模塊都是可配 置的,需要軟件設(shè)置為特定的工作狀態(tài),因此在用戶的應(yīng)用程序之前,需要有一些專門(mén)的代碼完成對(duì)系統(tǒng)的初始化。由于這類代碼直接面對(duì)ARM處理器內(nèi)核和硬件 控制器,一般都使用匯編語(yǔ)言完成。初始化代碼完成的操作與具有的硬件平臺(tái)相關(guān),但一般包括一下的內(nèi)容:
            --初始化異常向量表(中斷向量表)
            --初始化存儲(chǔ)器系統(tǒng)
            --初始化堆棧
            --初始化有特殊要求的端口和設(shè)備
            --初始化應(yīng)用程序的運(yùn)行環(huán)境
            --調(diào)用主應(yīng)用程序
            1、初始化異常向量表(中斷向量表)
            ARM微處理器結(jié)構(gòu)要求中斷向量表必須放置在從0x00地址開(kāi)始的連續(xù)8×4字節(jié)的空間內(nèi),每當(dāng)一個(gè)中斷(異常)發(fā)生以后,ARM微處理器便強(qiáng)制把PC置 為對(duì)應(yīng)的中斷向量。由于每個(gè)中斷只占用向量表中一個(gè)字(4個(gè)字節(jié))的存儲(chǔ)空間,只能放一條ARM指令,所以通常為跳轉(zhuǎn)指令,使程序從向量表跳轉(zhuǎn)到存儲(chǔ)器的 其他位置,執(zhí)行真正的中斷處理。
            具體代碼實(shí)現(xiàn)如下:
            AREA Init,CODE,READONLY
            ENTRY
            B Reset_Handler ;異常復(fù)位
            B Undef_Handler ;未定義指令異常
            B SWI_Handler ;軟件中斷
            B PreAbort_Handler ;指令預(yù)取中止
            B DataAbord_Handler ;數(shù)據(jù)中止
            B . ;系統(tǒng)保留
            B IRQ_Handler ;普通外部中斷
            B FIQ_Handler ;快速外部中斷
            ..........
            2、初始化存儲(chǔ)器系統(tǒng)
            主要是對(duì)系統(tǒng)存儲(chǔ)器控制器(MMU)的初始化。由于存儲(chǔ)器控制器并不是ARM架構(gòu)的一部分,不同芯片的實(shí)現(xiàn)方式各不相同。由于運(yùn)算能力和尋址能力的強(qiáng)大, 基于ARM內(nèi)核的微處理器系統(tǒng)一般都需要外擴(kuò)展各種類型的存儲(chǔ)器。對(duì)于存儲(chǔ)器系統(tǒng)的初始化一般包括如下幾個(gè)方面:
            --存儲(chǔ)器類型、時(shí)序和總線寬度的配置
            --存儲(chǔ)器地址的配置
            (1)存儲(chǔ)器類型
            基于ARM微處理系統(tǒng)的存儲(chǔ)器一般有如下幾類:SARM,DRAM,Flah,同時(shí),即使同類存儲(chǔ)器也有訪問(wèn)速度上的不同。其中,SRAM和Flah屬于 靜態(tài)存儲(chǔ)器,可以共用存儲(chǔ)器端口,而DRAM有動(dòng)態(tài)刷新和地址復(fù)用等特征,需要專門(mén)的存儲(chǔ)器端口。
            (2)時(shí)序
            存儲(chǔ)器端口的接口時(shí)序優(yōu)化對(duì)系統(tǒng)性能影響非常大,因?yàn)橄到y(tǒng)運(yùn)行的速度瓶頸一般都存在于存儲(chǔ)器的訪問(wèn),因此希望存儲(chǔ)器的訪問(wèn)盡可能快,但又要考慮由此帶來(lái)的 系統(tǒng)穩(wěn)定性問(wèn)題。
            (3)總線寬度
            ARM微處理器架構(gòu)支持8/16/32位的數(shù)據(jù)總線寬度訪問(wèn)存儲(chǔ)器和外設(shè),對(duì)于特定的存儲(chǔ)器來(lái)說(shuō),需要設(shè)定數(shù)據(jù)總線的寬度。
            (4)存儲(chǔ)器地址的配置
            ARM微處理器架構(gòu)理論上可以支持4GB的地址空間,而對(duì)于一個(gè)實(shí)際的系統(tǒng)來(lái)說(shuō),配置的物理地址遠(yuǎn)沒(méi)有這么多,因此,如何配置存儲(chǔ)器的地址,也是一個(gè)重要 的問(wèn)題。
            (5)存儲(chǔ)器地址重映射
            存儲(chǔ)器地址重映射就是可以通過(guò)軟件配置來(lái)改變一塊存儲(chǔ)器物理地址的方法,是當(dāng)前許多先進(jìn)控制器所具有的功能。
            進(jìn)行地址重映射的原因:提高系統(tǒng)的運(yùn)行效率。
            進(jìn)行地址重映射的注意:保證程序流程的連續(xù)性。
            有的ARM處理器不具有地址重映射的功能,可以采樣代碼搬移加跳轉(zhuǎn)的方式完成上述功能。
            3、初始化堆棧
            由于ARM微處理器有7中運(yùn)行模式,每一種模式的堆棧指針(SP)都是獨(dú)立的(其中系統(tǒng)模式和用戶模式使用相同的SP)。因此,需要對(duì)每一種模式的SP進(jìn) 行初始化。
            采用的方法是:改變當(dāng)前程序狀態(tài)寄存器(CPSR)內(nèi)的狀態(tài)位,使處理器切換到不同的狀態(tài),然后初始化SP。但是對(duì)用戶模式下SP的初始化應(yīng)該放在最后, 因?yàn)锳RM微處理器進(jìn)入用戶模式之后就無(wú)法再切換到其他模式。
            設(shè)置堆棧應(yīng)該注意的問(wèn)題是:堆棧的大小根據(jù)需要確定,要盡可能給堆棧分配高速存儲(chǔ)器(例如片內(nèi)的SRAM)。堆棧性能的提高對(duì)提高系統(tǒng)整體性能的影響非常 顯著。
            初始化堆棧的代碼如下:
            MRS R0, CPSR
            BIC R0, R0, #MODEMASK
            ORR R1, R0, #IRQMODE
            MSR CPSR_c, R1
            LDR SP, =IRQStack
            BIC R0, R0, #MODEMASK
            ORR R1, R0, #FIQMODE
            MSR CPSR_c, R1
            LDR SP, =FIQStack
            .........
            4、初始化應(yīng)用程序和有特殊要求的端口和設(shè)備
            該部分的初始化由具體的系統(tǒng)和用戶需求決定,一般的外設(shè)初始化可以放在系統(tǒng)初始化以后進(jìn)行。比較典型的應(yīng)用是驅(qū)動(dòng)一些簡(jiǎn)單的輸出設(shè)備,例如LED等,用來(lái) 指示系統(tǒng)啟動(dòng)的進(jìn)程和狀態(tài)。初始化應(yīng)用程序的運(yùn)行環(huán)境,就是完成必要的從ROM到RAM的數(shù)據(jù)傳輸,初始化有特殊要求的端口、設(shè)備和應(yīng)用程序的運(yùn)行環(huán)境。
            5、改變處理器的模式
            ARM微處理器支持7種模式,其中:
            超級(jí)模式(Supervisor):復(fù)位后的缺省模式。
            多種特權(quán)模式變化:主要完成各模式的堆棧設(shè)置,注意不要進(jìn)入用戶模式。
            用戶模式:用戶程序運(yùn)行模式。
            6、調(diào)用應(yīng)用主程序
            當(dāng)完成所有的系統(tǒng)初始化工作之后,就需要把程序流程轉(zhuǎn)入主應(yīng)用程序。最常見(jiàn)的操作是:
            IMPORT C_Entry
            ......
            B C_Entry


            評(píng)論


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

            關(guān)閉