<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM9上linux系統的bootloader設計

基于A(yíng)RM9上linux系統的bootloader設計

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

1.引言

本文引用地址:http://dyxdggzs.com/article/171648.htm

在嵌入式開(kāi)發(fā)中其中不可避免的一環(huán)就是[1],它統籌軟硬件資源,使得資源最優(yōu)配置,嵌入式對功耗,性能,以及成本要求很苛刻,它要求在達到用戶(hù)要求的前提下把成本和資源利用降為最低,Booloader不是驅動(dòng)開(kāi)發(fā)的一部分,但一個(gè)好的booloader可以決定該產(chǎn)品在市場(chǎng)上的成敗[2]。

采用Samsung公司的20T[3]處理器與Linux2.4.18嵌入式操作,根據處理速度和效率的不同采用分階段實(shí)現的方法,在具體實(shí)現時(shí)不拘泥于該處理器和操作版本,使之更有普遍性和通用性。

2.概述

引導加載程序是系統加電后運行的第一段代碼[4],功能類(lèi)似pc機的BIOS,在A(yíng)RM中一般都是位于地址0x00000000,這段代碼可以實(shí)現初始化硬件設備,建立內存空間映射圖,從而將系統的軟硬件帶到一個(gè)合適的狀態(tài),以便最終為調用操作系統內核和用戶(hù)應用程序準備好正確的環(huán)境。

Bootloader的啟動(dòng)可以單階段也可以多階段,為了方便移植和增加系統的執行效率一般分為兩個(gè)階段stage1用匯編編寫(xiě)和stage2用C 語(yǔ)言編寫(xiě),stage1主要進(jìn)行與CPU與存儲設備相關(guān)的工作進(jìn)行必要的初始化工作,是一些依賴(lài)于體系結構的代碼,例如初始化CPU運行的時(shí)鐘頻率,初始化Flash和內存的數據寬度、讀/寫(xiě)訪(fǎng)問(wèn)周期和刷新周期,初始化中斷系統,初始化系統中各種片內片外設備和I/O口,初始化系統各種運行模式下的寄存器和堆棧。stage2是用C語(yǔ)言實(shí)現一般的流程以及對板級驅動(dòng)的支持,包括初始化要用到用到的內核映像和文件系統映像,并將PC指針指向操作系統內核的入口處,為操作系統的運行作好準備。這樣代碼具有很好的移植性和可讀性,對于相同的CPU只需修改stage2,對于不同的CPU只需修改 stage1。

3.stage1

3.1.建立二級中斷向量表

每當有中斷或者異常發(fā)生時(shí),ARM處理器便強制把PC指針指向向量表中對應中斷類(lèi)型的地址值。為了加快中斷響應,在Flash的0x0地址存放能跳轉到0x33ffff00地址處中斷向量的跳轉指令,即在RAM中建立一個(gè)二級中斷向量表,起始地址為0x33ffff00,除復位外,其它異常入口地址由Flash跳轉得到,部分實(shí)現代碼如下

#define _ISR_STARTADDRESS (SDRAM_END-0x100) //0x33ffff00
definepISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))// x33ffff00
#define pISR_UNDEF (*(unsigned *)(_ISR_STARTADDRESS+0x4))// x33ffff04

如表1所示:

33.jpg

34.jpg
表1.二級中斷向量表

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

關(guān)鍵詞: bootloader 設計 系統 linux ARM9 基于

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>