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

基于ARM9的Bootloader的分析及設計

2010-04-12 00:00:00王景存
現代電子技術 2010年2期

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

關鍵詞:ARM;Bootloader;嵌入式系統;啟動方式

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

1 S3C2410開發板

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

2 啟動方式

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

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

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

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

00NAND

FLASH Mode1032 b

0116 b11Test Mode

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

3 啟動流程及具體實現

3.1 啟動流程分析

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

圖1 S3C2410的啟動流程

3.2 Bootloader具體分析及實現

3.2.1 Bootloader的第一階段

(1) 設置中斷向量表

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

b HandlerUndef;未定義指令中斷

b HandlerSWI ;軟件中斷服務

b HandlerPabort;指令預取異常中斷

b HandlerDabort;數據異常中斷

b.;保留

b HandlerFIQ;快速中斷服務程序

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

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

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

ldr r0,=WTCON ;關閉看門狗

ldr r1,=0x0

str r1,[r0]

ldr r0,=INTMSK

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

str r1,[r0]

ldr r0,=INTSUBMSK

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

str r1,[r0]

;調節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,Fout=200 MHz

str r1,[r0]

;配置UPLL控制寄存器

ldrr0,=UPLLCON

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

Fin=12 MHz,Fout=48 MHz

strr1,[r0]

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

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

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

add r2,r0,#52;SMRDATA結束地址

0

ldr r3,[r0],#4

str r3,[r1],#4

cmp r2,r0

bne %B0

(4) 初始化堆棧

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

(5) 初始化數據區。

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

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

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

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

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

beq %F2;相同則不拷貝

1

cmp r1,r3 ;執行拷貝操作

ldrcc r2,[r0],#4

strcc r2,[r1],#4

bcc %B1

2

ldr r1,=|ImageMYMMYMZIMYMMYMLimit|

mov r2,#0

3

cmp r3,r1 ;數據區清零

strcc r2,[r3],#4

bcc %B3

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

b main

3.2.2 Bootloader的第二階段

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

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

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

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

Uart_Init();//初始化串口

NF_Init();//初始化NAND FLASH

Launch(JumpAddr);//加載操作系統內核

while (1);

4 結 語

這里給出的Bootloader已經順利通過了調試,可以正常加載操作系統。通過對S3C2410的Bootloader的分析可以看出,設計一個性能優良的Bootloader可以提高系統的穩定性及實時性,它是嵌入式開發中不可或缺的一部分。只有設計出一個穩定的Bootloader,才能進行下一步的系統開發工作,直至完成整個嵌入式系統的開發。

參考文獻

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

[2]馬忠梅.ARM嵌入式處理器結構與應用基礎[M].北京:北京航空航天大學出版社,2003.

[3]王田苗.嵌入式系統設計與實例開發[M].北京:清華大學出版社,2003.

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

[5]田澤.嵌入式系統開發與應用[M].北京:北京航空航天大學出版社,2005.

[6]田澤.嵌入式系統開發與應用實驗教程[M].北京:北京航空航天大學出版社,2004.

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

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

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

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

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

高 峰 男,1985年出生,碩士研究生。研究方向為嵌入式系統與應用。

主站蜘蛛池模板: 欧美成人怡春院在线激情| 国产人成在线观看| 久青草免费视频| 国产麻豆精品在线观看| 中文国产成人久久精品小说| 日韩在线永久免费播放| 国产福利小视频高清在线观看| 91精品啪在线观看国产91九色| 特级毛片8级毛片免费观看| 免费a级毛片视频| 久久国产亚洲偷自| 97视频在线观看免费视频| 欧美国产综合视频| 成年人免费国产视频| 久久天天躁狠狠躁夜夜躁| 国产人人乐人人爱| 22sihu国产精品视频影视资讯| 亚洲精品片911| 69精品在线观看| 国产农村精品一级毛片视频| 制服丝袜无码每日更新| 人与鲁专区| 日本欧美精品| 91视频区| 日本不卡免费高清视频| 中文字幕无码av专区久久| 91精品啪在线观看国产| 免费又爽又刺激高潮网址| 强奷白丝美女在线观看| 99精品国产自在现线观看| 欧美一级专区免费大片| 国产欧美网站| 国产无人区一区二区三区| 欧美色综合网站| 1769国产精品免费视频| 久久一色本道亚洲| 最新亚洲人成网站在线观看| 无码一区二区三区视频在线播放| 欧美成人怡春院在线激情| www.精品视频| 香蕉99国内自产自拍视频| 国产凹凸一区在线观看视频| 国产成人精品免费视频大全五级| 国产sm重味一区二区三区| 操操操综合网| 熟妇无码人妻| 国产主播在线一区| 一本久道久综合久久鬼色| 亚洲一级毛片免费观看| 91人妻日韩人妻无码专区精品| 欲色天天综合网| 91无码人妻精品一区| 国产精品久久久久久久伊一| a级毛片在线免费| 亚洲av无码人妻| 日韩午夜片| 亚洲无码电影| 日本伊人色综合网| 无码区日韩专区免费系列| 国产精品xxx| 亚洲国产成人在线| 麻豆a级片| 青草午夜精品视频在线观看| 亚洲精品大秀视频| 精品成人一区二区| 98精品全国免费观看视频| 国产又粗又猛又爽| 免费在线不卡视频| 免费xxxxx在线观看网站| 日韩精品一区二区三区swag| 久久96热在精品国产高清| 中文无码精品a∨在线观看| 国产精鲁鲁网在线视频| 无码一区二区三区视频在线播放| 精品日韩亚洲欧美高清a| 久久伊伊香蕉综合精品| 色婷婷成人网| 青青青国产精品国产精品美女| 国产jizzjizz视频| 97se亚洲综合不卡| 久久无码高潮喷水| 国产va在线观看免费|