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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > U-boot在S3C44B0上的移植與分析

          U-boot在S3C44B0上的移植與分析

          作者: 時間:2009-05-19 來源:網(wǎng)絡(luò) 收藏

          摘 要:Bootloader是嵌入式系統(tǒng)軟件開發(fā)的第一個環(huán)節(jié),用于初始化目標板硬件,給嵌入式操作系統(tǒng)提供板上硬件資 源信息,并進一步裝載、引導(dǎo)嵌入式系統(tǒng)的固件,其性能直接影響系統(tǒng)的穩(wěn)定性。為了引導(dǎo)嵌入式操作系統(tǒng),根據(jù)S3C44BO 開發(fā)板上特定的硬件信息,在不改變Bootloader架構(gòu)的前提下,對與硬件相關(guān)的代碼,特別是FLASH芯片Intel 28F320C3B 代碼進行了添加修改,將U-bOOt成功地到了開發(fā)板上,并在基于μCLinux的智能機器人避障系統(tǒng)中使用良好。
          關(guān)鍵詞:Bootloader;;S3C44BO;

          本文引用地址:http://www.ex-cimer.com/article/152486.htm


          O 引 言
          Bootloader是操作系統(tǒng)啟動運行之前執(zhí)行的一段小程序。它是基于特定硬件平臺實現(xiàn)的,通過它可以初始化硬件設(shè)備,建立內(nèi)存空間的映射表,從而建立適當?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核作好準備。嵌入式系統(tǒng)的硬件部分不可能完全一致,由于嵌入式系統(tǒng)需要硬件與軟件的配合才能正常工作,因此需要針對硬件系統(tǒng)進行有關(guān)引導(dǎo)程序的設(shè)計。對于嵌入式系統(tǒng)來說,引導(dǎo)程序比較復(fù)雜,一般采用在基本符合硬件體系要求的現(xiàn)有引導(dǎo)程序的基礎(chǔ)上進行修改,然后通過應(yīng)用的方法設(shè)計引導(dǎo)程序,這就是引導(dǎo)程序的。


          1 介紹
          U―boot(Universal Boot LoadeI)源自DENX軟 件工程中心的Wolfgang Denk,基于8xxrom的源碼創(chuàng) 建的PPCBoot工程,遵循GPL條款的開放源碼項目,已經(jīng)可以支持PowerPC,ARM,X86,MIPS等體系結(jié)構(gòu)上的上百種開發(fā)板。提供:啟動加載(Boot
          Loading)和下載(Down Loading)兩種操作模式。并具 有大型Bootloader的全部功能。主要特性有:SCC/ FEC以太網(wǎng)支持;BOOTP/TFTP引導(dǎo)――IP,MAC 預(yù)置功能;在線讀寫FLASH,DOC,IDE,I2C,E2ROM, RTC;支持串行口kermit,S-record下載代碼;識別二進制、ELF32,pImage格式的Image;對Linux引導(dǎo)有特別的支持;監(jiān)控(minitor)命令集;具有讀寫I/O、內(nèi)存、寄存器、外設(shè)測試等功能。
          U-boot還支持多種文件系統(tǒng),如cramfs,ext2, fat,reiserfs和jffs2等;支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux,NetBSD,VxWorks,QNX,RTEMS,ARTOS 和LynxOS等,并對Linux引導(dǎo)有特別的支持。另外, U-boot還提供單任務(wù)軟件運行環(huán)境,可以在沒有操作系統(tǒng)的情況下動態(tài)加載和運行獨立的應(yīng)用程序,這些獨立的應(yīng)用程序可以利用U-boot提供控制臺的I/O函數(shù)、內(nèi)存申請和中斷服務(wù)等。


          2 U-boot啟動流程
          對ARM7核處理器,U-boot.啟動流程主要體現(xiàn)在 3個文件上,即start.s,lib arm/board.c和U-boot/common/main.c。下面詳細啟動流程。
          2.1 start.s文件
          start.s文件主要是CPU的初始化,用匯編語言編寫,其主要代碼流程如下:
          (1)定義入口。由于一個可執(zhí)行的Image必須有一個入口點,并且只能有一個全局入口,通常這個入口放在ROM(FLASH)的Ox0地址,在start.s文件中有如下語句:
          .globl_start
          _start:
          因此,必須通知編譯器使其知道這個入口.該工作可通過修改連接器腳本文件U-boot.1ds來完成。
          (2)設(shè)置異常向量(Exception Vector)。異常中斷向量表是U-boot與操作系統(tǒng)內(nèi)核發(fā)生聯(lián)系的關(guān)鍵所在之一。即使操作系統(tǒng)內(nèi)核已經(jīng)得到處理器的控制權(quán)運行,一旦發(fā)生中斷,處理器還是會自動跳轉(zhuǎn)到從OxO地址開始的異常中斷向量表中的某個位置(依據(jù)于中斷類型)讀取指令運行的。
          (3)設(shè)置CPU的速度、時鐘頻率及中斷控制寄存器。依次為關(guān)閉看門狗計時器,屏蔽所有中斷,配置時鐘(包括3個寄存器:PLLCON,CLKCON,LOCK-TIME)。
          (4)初始化內(nèi)存控制器。內(nèi)存控制器初始化主要通過設(shè)置13個從1c80000開始的特殊功能寄存器來完成,包括外部數(shù)據(jù)總線寬度、訪問周期、定時的控制信號等。
          (5)將ROM中的程序復(fù)制到RAM中。首先利用PC取得BootLoader在FIASH的起始地址,再通過標號之差計算出這個程序代碼的大小。通過寄存器(r3~r10)為復(fù)制的中間媒介將代碼復(fù)制到RAM中。
          (6)初始化堆棧。進入各種模式設(shè)置相應(yīng)模式的堆棧。
          (7)轉(zhuǎn)到RAM中執(zhí)行。該工作可使用指令1dr pc來完成,即Idr pc,start armboot。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 分析 移植 S3C44B0 U-boot

          評論


          相關(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); })();