<p id="nxp5x"><big id="nxp5x"><noframes id="nxp5x">

    <var id="nxp5x"><video id="nxp5x"></video></var>

          <em id="nxp5x"></em>

              首 頁 本刊概況 出 版 人 發行統計 在線訂閱 歡迎投稿 市場分析 1 組織交流 1 關于我們
             
            1
               通信短波
            1
               新品之窗
            1
               優秀論文
            1
               通信趨勢
            1
               特別企劃
            1
               運營商動態
            1
               技術前沿
            1
               市場聚焦
            1
               通信視點
            1
               信息化論壇
            1
            當前位置:首頁 > 優秀論文
            基于S3C2410嵌入式系統的Boot loader設計與實現
            作者:周毅 修麗梅 北京聯合大學
            來源:本站原創
            更新時間:2009/12/30 11:23:00
            正文:

             1  引言

            由于嵌入式系統內存的易揮發性,在斷電后不可能保存內存中運行的操作系統鏡像,必須將這些文件保存在不揮發的存儲介質中。對PC機而言, 開機后處理器配置的初始化、硬件初始化等操作是由BIOS完成的, 但對于嵌入式系統來說, 出于經濟性和硬件設計的靈活性方面的考慮一般不配置BIOS, 因此必須自行編寫完成這些工作的程序, 這就是所說的Boot loader。其作用與PC機上的BIOS類似,它主要擔負著初始化硬件和引導操作系統的作用,正像它的名字中的含義BootLoader一樣。因此,一個合適的Boot loader程序將是嵌入式系統硬件與軟件流暢運行的關鍵技術環節。

             

            2  Boot loader簡介

            在任何嵌入式系統中,要想脫離PC機獨立工作,Boot loader程序是必不可少的。它是系統運行的起始點, 包含著系統運行的第一行代碼。在特定的硬件平臺上脫機運行Linux操作系統最先解決的工作之一就是讓Boot loader正常啟動這個硬件平臺,并且為這個平臺定制相應內核的配置和載入功能。Boot loader是一段單獨的程序代碼, 它存放于硬件平臺的非易失存儲介質中,如ROMFlash。

            S3C24100芯片內部沒有程序存儲器, 所有程序都被存儲在片外擴展的ROMFlash中。開始啟動時, 系統會檢測OM管腳,判斷系統是否選擇NAND Flash啟動,如圖1所示。

             

             1 起動程序

            OM等于00時候,系統認為是NAND Flash啟動,然后把存有Boot loader和操作系統程序的NAND Flash4KB程序拷貝到內部SRAM中,而這內部4KBSRAM會被映射到BANK0區中,起始地址為0x00, 系統從此開始運行,因此系統一開始就可以把控制權交給Boot loader。當OM等于0110時,系統會直接從BANK0的起始地址0x00開始,為了儲存程序以及提高速度,一般選擇NOR Flash存儲器,它不僅可以保證掉電后程序不會消失,而且讀寫速度非?,雖然這樣可以減少Boot loader的設計量,但是從經濟和制造工藝兩方面考慮,還是NAND Flash更適合作為固化程序的存儲介質。

            目前,具體開發板Boot loader的開發通常都是基于一些開源的Boot loader (VIVI、Blob、U Boot、ARM Boot、Red Boot)而設計,它們在設計思路上有許多相通之處。本系統Boot loader主要參考VIVI的模式設計的。VIVI有兩種工作模式:啟動加載模式和下載模式。啟動加載模式可以在一段時間后自行啟動Linux內核,這種模式也稱為“自主” 模式(Autonomous),也即Boot loader從目標機上的某個固態存儲設備上將操作系統加載到內存中運行,整個過程并沒有用戶的介入。這種模式是Boot loader的正常工作模式,因此在嵌入式產品發布的時候,Boot loader必須工作在這種模式下,這是VIVI的默認模式。在下載模式下,目標機上的Boot loader將通過串口連接或網絡連接等通信手段從主機(Host)下載文件,比如:下載內核映像和根文件系統映像等。從主機下載的文件通常首先被Boot loader保存到目標機的RAM中,然后再被Boot loader寫到目標機上的FLASH類固態存儲設備中。Boot loader的這種模式通常在第一次安裝內核與根文件系統時被使用,此外,以后的系統更新也會使用Boot loader的這種工作模式,工作于這種模式下的Boot loader通常都會向它的終端用戶提供一個簡單的命令行接口。根據VIVI的特點,以及系統的考慮,設計的Boot loader框圖如圖2所示。

             

            2 Boot loader框圖

            3 最小系統介紹

            為了在硬件環境下實際檢驗所設計的Boot loader是否可以啟動Linux操作系統,需要設計一個基于S3C2410處理器的嵌入式最小系統。這個最小系統包括如下幾個部分:非易失存儲器(硬盤)、內存、LCD和幾種常用的接口。S3C2410是一種綜合性處理器,RS232串口和USB接口只要配置好內部寄存器就可以工作,NAND FlashSDRAM掛在外部數據總線上,由于S3C2410沒有指定的Ethernet接口,所以需要在外部數據總線上擴展。大致系統框圖如圖3所示。

            根據S3C2410處理器的特點,非易失存儲選擇的是NAND Flash,主要用于存儲Boot loaderLinux操作系統文件。內存選擇的是SDRAM,它可以使操作系統運行在高速狀態下。LCD用來顯示操作系統的圖形界面。RS232串口用來接受Boot loader啟動時的打印信息。主USB接口用來實現在Linux操作系統環境下鼠標的操作。從USB接口用來實現在Boot loader工作模式下下載操作系統文件。JTAG接口是下載Boot loader文件到NAND Flash中的唯一方法,因為系統在開始時對其它接口是沒有配置的。

               

                               3 最小系統框圖

            應用的硬件系統如圖4所示。

             4 硬件系統

             

            4  Boot loader程序流程

            在這個系統中,Boot loader的目標就是配置好操作系統所需的硬件環境,然后調用Linux操作系統來執行。系統開機后,通過給S3C2410OM管腳置成00,也就是告訴處理器選擇啟動方式為NAND Flash啟動方式。在這種啟動模式下,系統啟動時會自動把NAND Flash中的前4KB程序復制到內部SRAM中,系統從內部SRAM首地址(0x00)開始執行。由于Boot loader的實現依賴于處理器的體系結構,因此大多數Boot loader都分為階段一和階段二這兩大部分。依賴于處理器體系結構的代碼,比如設備初始化代碼等,通常都放在階段一中,而且通常都用匯編語言來編寫,以達到短小精悍的目的。階段二則通常用C語言來實現,以實現更復雜的功能,而且代碼會具有更好的可讀性和可移植性。本系統Boot loader主要操作流程如圖5所示。

             5 操作流程圖

            啟動過程中這個Boot loader程序的主要工作任務是:

            配置部分硬件

            Boot loader第一階段與第二階段的過渡

            配置好操作系統運行前的硬件環境

            Boot loader的應用程序(主要面對的是系統開發人員)

            Boot loader的工作模式(主要面對的是用戶)

            上述各部分的功能關系如圖6所示。

             6 功能關系圖

             

            5 結 論

            本文設計的Boot loader已經成功地在這個最小系統上運行了Linux操作系統并測試通過,其調試結果用串口程序打印出來,如圖7所示。

             

            7 串口程序打印

            由于Boot loader與具體的CPU芯片、板上外圍設備以及所采用的操作系統有密切的聯系, 所以以上所列的設計流程和內容不是一成不變的, 應在具體的實際應用中做適當的修改。學習寫Boot loader也是嵌入式系統學習的重要環節,它不僅體現了設計者對硬件的了解能力,以及如何合理地操作軟件與硬件之間的銜接。對于設計者以后設計其它類型的嵌入式系統(像DSP、AVR等)都是很有幫助的。

             

             

            參考文獻                 

            [1]三星公司. S3C2410處理器數據手冊.

            [2]www.mizi.com VIVI源代碼.

            [3]杜春雷.ARM 體系結構與編程[M].北京:清華大學出版社,2003

            [4]龐繼勇,唐婷.ARM 處理器中斷處理的編程實現[J].電子產品世界,2005,(2)5456.

            [5]劉廣亮.VIVIS3C2410開發板上的啟動分析. 內江科技,2007年第8.

            [6]闕大順,杜 瑋,岳 鵬. ViviS3C2410上的移植研究.武漢理工大學學報,第29卷,第12期,200712.

             

            作者簡介:

             

            周毅,男,北京聯合大學信息學院學生,主要研究方向為嵌入式系統的應用。

            修麗梅 女   北京聯合大學微電子應用技術研究所 09830

             
             
               
            《通信市場》 中國·北京·復興路49號通信市場(100036) 點擊查看具體位置
            電話:86-10-6820 7724, 6820 7726
            京ICP備05037146號-8
            建議使用 Microsoft IE4.0 以上版本 800*600瀏覽 如果您有什么建議和意見請與管理員聯系
            欧美成人观看免费全部欧美老妇0