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

          新聞中心

          EEPW首頁 > 設(shè)計應(yīng)用 > S3C2410快速啟動的實現(xiàn)

          S3C2410快速啟動的實現(xiàn)

          ——
          作者:廣州數(shù)控設(shè)備有限公司研發(fā)中心 孫開發(fā) 時間:2007-02-06 來源: 收藏

          摘 要:介紹處理器的技術(shù),重點對系統(tǒng)硬件的初始化,二級中斷向量表的復(fù)制,代碼段的復(fù)制以及管理進行了探討,并且對具體的實現(xiàn)代碼進行了分析,實現(xiàn)了系統(tǒng)從RAM中的高速啟動運行。
          關(guān)鍵詞:;

           ---嵌入式系統(tǒng)對功能、可靠性、成本、體積、功耗等均有嚴格要求,以ARM體系結(jié)構(gòu)為基礎(chǔ)的各種RISC微處理器具有靈活的特性和強大的性能,在嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。
          ---是三星公司基于ARM920T設(shè)計的一款處理器,在開發(fā)基于S3C2410的系統(tǒng)的過程中,如何讓系統(tǒng)快速穩(wěn)定地啟動是一個重要問題。嵌入式系統(tǒng)的資源有限,程序通常都是固化在ROM中運行。但在實際應(yīng)用中,為提高系統(tǒng)的實時性,加快代碼的執(zhí)行速度,系統(tǒng)啟動后程序往往要被搬移到RAM中,因為RAM的存取速度要比ROM快得多,這樣大大提升系統(tǒng)的性能。啟動程序要完成的任務(wù)包括:硬件初始化,系統(tǒng)存儲系統(tǒng)的配置,復(fù)制二級中斷向量表。

          啟動程序過程
          系統(tǒng)硬件初始化
          ---系統(tǒng)上電或復(fù)位后,程序從位于地址0x0的Reset Exception Vector處開始執(zhí)行,因此需要在這里放置Bootloader的第一條指令:b ResetHandler,跳轉(zhuǎn)到標(biāo)號為ResetHandler處進行第一階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時器,關(guān)中斷,初始化PLL和時鐘,初始化存儲器系統(tǒng)。執(zhí)行完以上程序后,系統(tǒng)進行堆棧和存儲器的初始化。系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ堆棧也必須設(shè)置。如果系統(tǒng)使用了外設(shè),則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。
          ● 代碼段復(fù)制到RAM中運行
          ---因為嵌入式系統(tǒng)的代碼通常都是固化在ROM或者Flash中,上電后開始運行。由于ROM和Flash的讀取速度相對較慢,這樣無疑會降低代碼的執(zhí)行速度和系統(tǒng)的運行效率。為此,需要把系統(tǒng)的代碼復(fù)制到RAM中運行。使用SDT鏈接器ARMLink產(chǎn)生的定位信息,把RO的有效代碼和數(shù)據(jù)段到RAM中。ARMLink將編譯后的程序鏈接成ELF文件。映像文件內(nèi)部共有三種輸出段:RO段、RW段和ZI段。這三種輸出段分別包含了只讀代碼及包含在代碼段中的少量數(shù)據(jù)、可讀寫的數(shù)據(jù)、初始化為0的數(shù)據(jù),ARMLink同時還產(chǎn)生了這三種輸出段的起始和終止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$$Limit、Image$$Linit和Image$$ZI$$Limit??梢栽诔绦蛑惺褂眠@些定位信息。將ROM中的代碼和數(shù)據(jù)搬移到RAM中,具體程序如下。
          ---LDR r0, =|Image$$RO$$Base| /*RO段起始地址*/
          ---LDR r1, =|Image$$RO$$Limit| /*RO段結(jié)束地址*/
          ---LDR r2, =|Image$$RW$$Base|
          ---LDR r3, =|Image$$RW$$Limit|
          ---/*分別求出需要映像的代碼和數(shù)據(jù)的長度并累加,放到寄存器R1中*/
          ---SUB r1, r1, r0
          ---SUB r3, r3, r2
          ---ADD r1, r1, r3
          ---/*將需要映象的代碼和數(shù)據(jù)復(fù)制到RAM中去*/
          ---0 /*標(biāo)示符*/
          ---LDR r3, [r0], #4
          ---STR r3, [r2], #4
          ---SUBS r1, r1, #4
          ---BNE %B0 /*如果沒有復(fù)制完,跳轉(zhuǎn)到0標(biāo)示符處的匯編語句,繼續(xù)復(fù)制,參見ARM指令幫助手冊*/
          建立二級中斷向量表
          ---在ARM系統(tǒng)中,中斷向量表位于0X0開始的地址處,意味著無論運行什么樣的上層軟件,一旦發(fā)生中斷,程序就得到Flash存儲器中的中斷向量表里去,降低系統(tǒng)的運行效率。因此在RAM中建立自己的二級中斷向量表,當(dāng)中斷發(fā)生后,程序直接從RAM中取中斷向量進入中斷子程序。尤其是在中斷頻繁發(fā)生的系統(tǒng)里,這種方法可以大大提高系統(tǒng)的運行效率,具體的實現(xiàn)代碼如下。
          ---b ResetHandler
          ---b HandlerUndef /*未定義模式句柄*/
          ---b HandlerSWI /*SWI中斷句柄*/
          ---b HandlerPabort /*PAbort中斷句柄*/
          ---b HandlerDabort /*Dabort中斷句柄*/
          ---b. /*保留*/
          ---b HandlerIRQ /*IRQ 中斷句柄*/
          ---b HandlerFIQ /*FIQ中斷句柄*/
          ---HandlerFIQ HANDLER HandleFIQ
          ---HandlerIRQ HANDLER HandleIRQ
          ---HandlerUndef HANDLER HandleUndef
          ---HandlerSWI HANDLER HandleSWI
          ---HandlerDabort HANDLER HandleDabort
          ---HandlerPabort HANDLER HandlePabort
          ---其中HANDLER是一個宏,用于查找中斷處理程序的入口地址。這些地址存放在由HandleXXX指向的表項中,該表定位在RAM高端,基地址為_ISR_STARTADDRESS。
          ---^ _ISR_STARTADDRESS
          ---HandleReset # 4
          ---HandleUndef # 4
          ---HandleSWI # 4
          ---HandlePabort # 4
          ---HandleDabort # 4
          ---HandleReserved # 4
          ---HandleIRQ # 4
          ---HandleFIQ # 4
          的應(yīng)用
          ---MMU是存儲器管理單元的縮寫,是用來管理虛擬內(nèi)存系統(tǒng)的器件。MMU通常是CPU的一部分,本身有少量存儲空間存放從虛擬地址到物理地址的匹配表,此表稱作TLB(轉(zhuǎn)換旁置緩沖區(qū))。所有數(shù)據(jù)請求都送往MMU,由MMU決定數(shù)據(jù)是在RAM內(nèi)還是在大容量外部存儲器設(shè)備內(nèi)。如果數(shù)據(jù)不在存儲空間內(nèi),MMU將產(chǎn)生頁面錯誤中斷。MMU存儲器系統(tǒng)的結(jié)構(gòu)允許對存儲器系統(tǒng)的精細控制,大部分的控制細節(jié)由存在存儲器中的轉(zhuǎn)換表提供。這些表的入口定義了從1KB~1MB的各種存儲器區(qū)域的屬性。MMU完成的兩個主要功能是:將虛地址轉(zhuǎn)換成物理地址,控制存儲器存取允許。MMU關(guān)掉時,虛地址直接輸出到物理地址總線。
          ---經(jīng)過以上的分析可以發(fā)現(xiàn),系統(tǒng)啟動程序主要是完成了硬件的初始化,以及克服Flash或ROM讀取速度慢的弱點,提高指令和數(shù)據(jù)的讀取速度,實現(xiàn)系統(tǒng)的高速運行,并且通過MMU的應(yīng)用,減少RAM的使用,降低系統(tǒng)成本。

          參考文獻
          1 S3C2410數(shù)據(jù)手冊
          2 ARM920T數(shù)據(jù)手冊
          3 王京林.ARM7在嵌入式應(yīng)用中啟動程序
          的實現(xiàn)



          關(guān)鍵詞: S3C2410 快速啟動 MMU

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();