新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > U-boot在S3C44B0上的移植與分析

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

        作者: 時間:2009-05-19 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/152486.htm


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


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


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


        上一頁 1 2 3 下一頁

        關鍵詞: 分析 移植 S3C44B0 U-boot

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乌兰察布市| 永年县| 北辰区| 余庆县| 保康县| 申扎县| 庆元县| 东乡族自治县| 平顶山市| 吉木乃县| 临汾市| 株洲县| 兴业县| 淳化县| 纳雍县| 华亭县| 贵南县| 黄平县| 濮阳市| 江阴市| 巩留县| 元朗区| 剑河县| 莱州市| 柏乡县| 望谟县| 安庆市| 岐山县| 万宁市| 双城市| 石泉县| 松阳县| 大理市| 香河县| 罗江县| 昌宁县| 忻州市| 砀山县| 合江县| 独山县| 施秉县|