999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM9的Bootloader的分析及設(shè)計

2010-04-12 00:00:00王景存
現(xiàn)代電子技術(shù) 2010年2期

摘 要:Bootloader是ARM嵌入式系統(tǒng)的重要組成部分。對于不同內(nèi)核的系統(tǒng)板,其Bootloader也不盡相同,針對每個裸板都要對其燒寫針對自己的Bootloader。在此簡要介紹S3C2410及其兩種啟動方式,著重分析S3C2410從NAND FLASH啟動的過程中,對各個內(nèi)部功能模塊進行的初始化過程,并設(shè)計出基于S3C2410嵌入式系統(tǒng)的Bootloader。通過在線仿真及實際測試表明,該Bootloader具有良好的穩(wěn)定性、實時性和可移植性。

關(guān)鍵詞:ARM;Bootloader;嵌入式系統(tǒng);啟動方式

中圖分類號:TP311文獻標識碼:B

文章編號:1004-373X(2010)02-044-03

Analysis and Design of Bootloader Based on ARM9

WANG Jingcun,GAO Feng

(College of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan,430081,China)

Abstract:Bootloader is an important part of ARM embedded system.For different kernel system board,its Bootloader is also different.Each bare_board should programmer its own Bootloader.Therefore,the development of specific Bootloader is particularly important,the superiority of Bootloader directly affects on the performance of embedded systems.The S3C2410 and its two start_up mode are introduced,focusing on analysing the process during the S3C2410 starts from NAND FLASH,the initializing process of each internal modules.A Bootloader based on S3C2410 embedded system is designed.Through online simulation and practical tests show that the Bootloader has good stability,real_time performance and portability.

Keywords:ARM;Bootloader;embedded system;start_up mode

0 引 言

Bootloader是在嵌入式操作系統(tǒng)內(nèi)核運行之前運行的一小段程序,它相當于PC機中的BIOS(Basic Input/Output System)。但在嵌入式系統(tǒng)中,出于對經(jīng)濟性方面的考慮,一般不配置像BIOS那樣的固件程序,因此就需要自己完成這部分的工作,這就是所必需的開機程序。通過Bootloader這一程序,可以初始化硬件設(shè)備,建立系統(tǒng)的內(nèi)存空間映射圖,從而將系統(tǒng)的軟、硬件環(huán)境設(shè)定在一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核、運行用戶應(yīng)用程序準備好正確的環(huán)境。

1 S3C2410開發(fā)板

該系統(tǒng)以S3C2410為開發(fā)版,S3C2410是三星公司的一款基于ARM920T內(nèi)核的16/32位RISC嵌入式微處理器,主要面向手持設(shè)備以高性價比、低功耗的應(yīng)用。運行頻率可達到203 MHz。其內(nèi)部資源包括了LCD控制器、SDRAM控制器、NAND FLASH控制器、SD卡接口、USB Host和USB Device接口、IIS總線接口、SPI總線接口以及內(nèi)部PLL時鐘倍頻器等[1]。

2 啟動方式

S3C2410支持從NOR FLASH啟動和從NAND FLASH啟動兩種方式。但比較而言,NAND FLASH具有容量大、比NOR FLASH價格低等特點。系統(tǒng)采用NAND FLASH與SDRAM組合,可以獲得非常高的性價比,應(yīng)用面也較廣。故該系統(tǒng)采用從NAND FLASH啟動的方式[2]。

S3C2410具有四種啟動方式可以通過OM[1:0]管腳進行選擇,如表1所示。

表1 OM0,OM1管教邏輯組合的作用

OM1(操作模式1)OM0(操作模式0)導入ROM數(shù)據(jù)寬度OM1(操作模式1)OM0(操作模式0)導入ROM數(shù)據(jù)寬度

00NAND

FLASH Mode1032 b

0116 b11Test Mode

因此選擇將OM[1:0]管腳置為00,將引導代碼和操作系統(tǒng)鏡像存放在外部的NAND FLASH中,并從NAND FLASH啟動。為了支持從NAND FLASH啟動,S3C2410具備一個內(nèi)部SRAM緩沖區(qū),叫作“Steppingstone”。當處理器在這種啟動模式下復位時,內(nèi)置的NAND FLASH將訪問控制接口,并將代碼自動加載到這個內(nèi)部SRAM(此時該SRAM定位于起始地址空間0x00000000,容量為4 KB)上運行。之后,SRAM中的引導程序?qū)⒉僮飨到y(tǒng)內(nèi)核加載到SDRAM中,使其在SDRAM中運行。啟動完畢后,4 KB的“Steppingstone”就可以用于其他用途。如果從其他方式啟動,啟動ROM就要定位于內(nèi)存的起始地址空間0x00000000,處理器直接在ROM上運行啟動程序,而4 KB啟動SRAM被定位于內(nèi)存地址的0x40000000處。

3 啟動流程及具體實現(xiàn)

3.1 啟動流程分析

Bootloader程序由匯編代碼和C代碼兩部分組成,執(zhí)行過程也分為兩個階段。第一階段是匯編部分,這部分程序與硬件聯(lián)系密切且不便于移植,要完成的工作包括:設(shè)置中斷異常向量表、初始化看門狗等硬件設(shè)備、配置存儲器、設(shè)置堆棧等,然后跳轉(zhuǎn)到C語言程序的入口處。第二階段即C代碼部分,這部分的主要任務(wù)是:初始化本階段所需要的外部設(shè)備,配置SDRAM空間、調(diào)用NAND FLASH的API函數(shù),并將用戶程序代碼從NAND FLASH存儲器中拷貝到SDRAM中,最后跳轉(zhuǎn)到用戶程序的入口處[3]。啟動流程如圖1所示。

圖1 S3C2410的啟動流程

3.2 Bootloader具體分析及實現(xiàn)

3.2.1 Bootloader的第一階段

(1) 設(shè)置中斷向量表

b ResetHandler;復位異常中斷,被定位在起始地址

b HandlerUndef;未定義指令中斷

b HandlerSWI ;軟件中斷服務(wù)

b HandlerPabort;指令預(yù)取異常中斷

b HandlerDabort;數(shù)據(jù)異常中斷

b.;保留

b HandlerFIQ;快速中斷服務(wù)程序

在ARM體系中,從地址0x0~0x1C的32 B是中斷異常向量表[4]。每個中斷占據(jù)向量表中4 B的存儲空間。一旦有異常中斷發(fā)生,ARM處理器便把PC指針強制置為向量表中對應(yīng)中斷類型的地址值,使程序跳轉(zhuǎn)到相應(yīng)的中斷處理程序處執(zhí)行。當有多個中斷發(fā)生時,處理器優(yōu)先處理優(yōu)先級高的中斷[5]。當硬件系統(tǒng)啟動時,程序從0x0地址處跳轉(zhuǎn)到標號為ResetHandler的程序處,使CPU進入引導程序。

(2) 初始化看門狗和外圍電路。

主要實現(xiàn)S3C2410的看門狗、中斷、MPLL和UPLL配置寄存器的初始化[6]。根據(jù)工作頻率設(shè)置PLL寄存器,S3C2410的CPU默認的工作主頻為12 MHz,使用PLL電路可以產(chǎn)生更高的主頻供CPU及外圍器件使用。S3C2410有兩個PLL:MPLL和UPLL。其中UPLL用于USB設(shè)備,MPLL用于CPU及其他外圍器件[7]。

ldr r0,=WTCON ;關(guān)閉看門狗

ldr r1,=0x0

str r1,[r0]

ldr r0,=INTMSK

ldr r1,=0xffffffff;屏蔽所有中斷

str r1,[r0]

ldr r0,=INTSUBMSK

ldr r1,=0x7ff ;屏蔽所有子中斷

str r1,[r0]

;調(diào)節(jié)LOCKTIME寄存器,減少PLL鎖時間

ldr r0,=LOCKTIME

ldr r1,=0xffffff

str r1,[r0]

;配置MPLL控制寄存器

ldr r0,=MPLLCON

ldr r1,=((0x5c<<12)+(0x4<<4)+0x0);

Fin=12 MHz,F(xiàn)out=200 MHz

str r1,[r0]

;配置UPLL控制寄存器

ldrr0,=UPLLCON

ldrr1,=((0x48<<12)+(0x3<<4)+0x2);

Fin=12 MHz,F(xiàn)out=48 MHz

strr1,[r0]

(3) 配置存儲控制器,為BootLoader的第二個階段的代碼準備內(nèi)存空間

addr0,pc,#SMRDATA _ (.+ 8)

ldr r1,=BWSCON;存儲控制寄存器地址

add r2,r0,#52;SMRDATA結(jié)束地址

0

ldr r3,[r0],#4

str r3,[r1],#4

cmp r2,r0

bne %B0

(4) 初始化堆棧

ldr sp,=SVCStack;初始化管理模式下的堆棧寄存器

(5) 初始化數(shù)據(jù)區(qū)。

ARM的數(shù)據(jù)由RO,RW,ZI三個段組成。其中,RO為代碼段,RW為已經(jīng)初始化的全局變量,ZI是未初始化的全局變量[8]。RO部分可以在FLASH中執(zhí)行,也可以轉(zhuǎn)移到RAM中執(zhí)行,而RW和ZI必須在RAM中執(zhí)行。數(shù)據(jù)區(qū)的初始化就是要把RW段從FLASH復制到RAM中,并將ZI段清零[9]。

ldr r0,=|ImageMYMMYMROMYMMYMLimit|;RO段的末地址

ldr r1,=|ImageMYMMYMRWMYMMYMBase|;RW段的起始地址

ldr r3,=|ImageMYMMYMZIMYMMYMBase|;Zero初始化區(qū)的起始地址

cmp r0,r1 ;檢查裝載地址和執(zhí)行地址是否相同

beq %F2;相同則不拷貝

1

cmp r1,r3 ;執(zhí)行拷貝操作

ldrcc r2,[r0],#4

strcc r2,[r1],#4

bcc %B1

2

ldr r1,=|ImageMYMMYMZIMYMMYMLimit|

mov r2,#0

3

cmp r3,r1 ;數(shù)據(jù)區(qū)清零

strcc r2,[r3],#4

bcc %B3

(6) 跳轉(zhuǎn)到第二個階段的C語言入口

b main

3.2.2 Bootloader的第二階段

這部分是main()函數(shù)的具體實現(xiàn),其主要功能為初始化系統(tǒng)頻率、使能指令緩存、初始化串口、其他硬件的初始化以及加載操作系統(tǒng)內(nèi)核[10]。main()函數(shù)的主要代碼如下:

MMU_EnableICache();//使能ICache(指令緩存)

ChangeClockDivider(1,1);//設(shè)置FCLK∶HCLK∶PCLK=1∶2∶4

ChangeMPllValue(0xal,0x3,0x1);//FCLK=202.8 MHz

Uart_Init();//初始化串口

NF_Init();//初始化NAND FLASH

Launch(JumpAddr);//加載操作系統(tǒng)內(nèi)核

while (1);

4 結(jié) 語

這里給出的Bootloader已經(jīng)順利通過了調(diào)試,可以正常加載操作系統(tǒng)。通過對S3C2410的Bootloader的分析可以看出,設(shè)計一個性能優(yōu)良的Bootloader可以提高系統(tǒng)的穩(wěn)定性及實時性,它是嵌入式開發(fā)中不可或缺的一部分。只有設(shè)計出一個穩(wěn)定的Bootloader,才能進行下一步的系統(tǒng)開發(fā)工作,直至完成整個嵌入式系統(tǒng)的開發(fā)。

參考文獻

[1]Samsung公司.S3C2410X User′s Manual[EB/OL].http://www.samsungsemi.com,2003.

[2]馬忠梅.ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學出版社,2003.

[3]王田苗.嵌入式系統(tǒng)設(shè)計與實例開發(fā)[M].北京:清華大學出版社,2003.

[4]陳海軍,申衛(wèi)昌,史穎.嵌入式系統(tǒng)引導程序詳探[J].計算機技術(shù)與發(fā)展,2006,16(1):123_125.

[5]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航天大學出版社,2005.

[6]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用實驗教程[M].北京:北京航空航天大學出版社,2004.

[7]吳健,張華,胡天鏈.基于NAND FLASH存儲器的嵌入式系統(tǒng)啟動引導程序設(shè)計[J].西南科技大學學報,2006,21(4):54_57.

[8]黃智偉,鄧月明,王彥.ARM 9嵌入式系統(tǒng)設(shè)計基礎(chǔ)教程[M].北京:北京航空航天大學出版社,2008.

[9]王黎明,陳雙橋,閆曉玲,等.ARM 9嵌入式系統(tǒng)開發(fā)與實踐[M].北京:北京航空航天大學出版社,2008.

[10]郭志,江秀臣,曾奕.一個嵌入式系統(tǒng)的啟動分析[J].微計算機信息,2005,21(11):28_30.

作者簡介 王景存 男,1965年出生,碩士生導師。研究方向為嵌入式系統(tǒng)與應(yīng)用。

高 峰 男,1985年出生,碩士研究生。研究方向為嵌入式系統(tǒng)與應(yīng)用。

主站蜘蛛池模板: 国产成人免费观看在线视频| 丰满少妇αⅴ无码区| 婷婷激情五月网| 国产丝袜91| 国产一二三区视频| 色亚洲成人| 2020久久国产综合精品swag| 亚洲欧美一区二区三区蜜芽| 成年片色大黄全免费网站久久| 国产69精品久久久久妇女| 91麻豆国产精品91久久久| 成人综合久久综合| 欧美影院久久| 再看日本中文字幕在线观看| 久久久久久午夜精品| 欧美精品亚洲精品日韩专区va| 日韩精品专区免费无码aⅴ | www中文字幕在线观看| 国产精品爽爽va在线无码观看 | 久久亚洲AⅤ无码精品午夜麻豆| 噜噜噜久久| 欧美 国产 人人视频| 在线视频一区二区三区不卡| 露脸国产精品自产在线播| 国产精品第| 国产精品成| 一级片一区| 色噜噜综合网| 久久久久人妻一区精品| 国产午夜无码片在线观看网站| 看你懂的巨臀中文字幕一区二区| 四虎在线高清无码| 美女被操91视频| 成人精品视频一区二区在线| 日韩毛片免费视频| 欧美亚洲香蕉| 精品视频一区二区观看| 国产亚洲现在一区二区中文| 国产亚洲欧美在线专区| 国产在线观看第二页| 国产精品女在线观看| 欧美成人精品在线| 国产在线视频二区| 中文字幕无码制服中字| 无码免费视频| 亚洲区视频在线观看| 成人韩免费网站| 香蕉eeww99国产在线观看| 日韩精品中文字幕一区三区| 亚洲国产综合精品一区| 国产成人1024精品| 成人综合在线观看| 国产熟睡乱子伦视频网站| 免费在线a视频| 日韩中文无码av超清| 成人字幕网视频在线观看| 国产美女在线免费观看| 国产精品2| 青青草国产在线视频| 精品福利视频导航| 日本一区二区三区精品国产| 日韩毛片在线播放| 成人一级免费视频| 精品三级网站| 9久久伊人精品综合| 国产哺乳奶水91在线播放| 成人午夜网址| 五月天久久综合国产一区二区| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产丝袜无码精品| 成人精品视频一区二区在线| 久久无码免费束人妻| 四虎精品国产永久在线观看| 超级碰免费视频91| 国产尤物在线播放| 欧美在线中文字幕| 久久无码av一区二区三区| 欧美日本在线| 97久久精品人人| 免费无码AV片在线观看中文| 欧美亚洲一区二区三区导航| 久久一本精品久久久ー99|