Linux BIOS在嵌入式x86系統中的配置

發(fā)布時(shí)間:2010-10-12 19:26    發(fā)布者:techshare
關(guān)鍵詞: BIOS , linux , X86 , 嵌入式
1.引言

嵌入式計算機系統隨著(zhù)其應用方式不同,具有不同的體系結構形式;趚86平臺的嵌入式計算機,因其采用與標準PC相同的硬件結構、操作系統和軟件開(kāi)發(fā)平臺,開(kāi)發(fā)方便,應用程序設計資源豐富,因此在嵌入式系統中占據越來(lái)越大的份額,尤其在工業(yè)控制方面得到了廣泛的應用。

不同于沒(méi)有操作系統、功能單一的消費類(lèi)電子產(chǎn)品,也不同于加載啟動(dòng)完全由BootLoader引導加載程序來(lái)完成的某些嵌入式系統,基于x86平臺的嵌入式計算機的結構由PC而來(lái),其功能復雜,初始化硬件和引導操作系統仍然由BIOS來(lái)完成。但一個(gè)嵌入式系統的BIOS并不需要像通用PC BIOS那樣具有那么多的靈活性,因為通常它僅需處理某種特定的硬件配置方案。所以,LinuxBIOS是替代傳統BIOS的開(kāi)源解決方法,移除了許多嵌入式平臺不必要的功能,為基于x86平臺的嵌入式計算機系統定制的基本輸入輸出系統。

本文將以基于 AMD Geode LX處理器的嵌入式 x86平臺為例,介紹了 LinuxBIOS的基本結構、運行過(guò)程;在此基礎上配置 LinuxBIOS映像,并實(shí)現其引導功能。

2.LinuxBIOS簡(jiǎn)介

LinuxBIOS項目由美國Los Alamos國家實(shí)驗室高級計算實(shí)驗室的 Ron Minnich創(chuàng )始,遵循GPL條款的開(kāi)源項目。目前LinuxBIOS不僅支持嵌入式 Linux系統的引導,在配置相應的映像如FILO、ADLO時(shí)還可以支持Windows 2000、FreeBSD、OpenBSD等操作系統。

LinuxBIOS的主要特征有:①系統引導— 支持ext2、fat、iso9600等文件系統,可從IDE、Flash等設備中引導系統內核。如果配置Etherboot映像,還支持網(wǎng)絡(luò )引導。②串口控制臺—在系統初始化早期階段輸出控制信息,目的主要用于調試,控制信息分為9個(gè)級別,可以根據調試的需要進(jìn)行配置。③源碼易讀— LinuxBIOS項目除了在CPU和存儲器的初始化時(shí)使用匯編語(yǔ)言外,其它部分使用C語(yǔ)言,具有可讀性和可移植性,方便代碼的維護。

3.基于 Geode LX處理器的系統平臺  

GeodeLX處理器是AMD公司推出的新一代基于x86體系結構的嵌入式處理器,主要用于工業(yè)控制、移動(dòng)設備等領(lǐng)域。Geode LX處理器支持i586指令集,并且帶有MMX和AMD 3DNow!指令集擴展。其CPU頻率在400MHZ-500MHZ,帶有8級單發(fā)射的指令流水線(xiàn),64K指令L1 cache和64K數據L1 cache,128K的可配置為指令或數據的L2 cache。處理器內部集成了圖形和視頻處理單元提高了二維圖形和視頻的應用加速。和Geode LX處理器一起使用的CS5536芯片組提供南橋的功能如IDE、USB2.0、Flash、AC97和x86的外圍設備接口。

4.LinuxBIOS的基本結構

LinuxBIOS支持多個(gè)主板、CPUs和芯片組,其工程目錄結構如圖 1所示;主要有三個(gè)目錄:src、targets和util。src目錄包含了CPUs、主板、南橋、北橋和其它設備的源碼,用來(lái)配置和初始化CPU、存儲器和 PCI控制器等設備。在 targets目錄中根據系統平臺的配置文件來(lái)創(chuàng )建 ROM映像文件。util目錄為創(chuàng )建 ROM映像或者將 ROM映像燒寫(xiě)到主板的 Flash中提供了工具支持。



LinuxBIOS的平臺全局配置文件 Config.lb和選項文件 Option.lb在 src/mainboard/目錄內,配置文件 Config.lb描述資源在目標結構中是如何被使用的,規定了 CPU的結構、平臺所使用的 PCI設備以及代碼存放的地址等內容。比如在追加 VGA BIOS到 LinuxBIOS的映像文件中,需要在該配置文件 Config.lb的 PCI橋選項中填加 VGA BIOS的存放地址;而選項文件 Option.lb定義了在配置文件 Config.lb中所使用的選項。

在 ROM映像中有個(gè) Payload映像如FILO、Etherboot等,該映像為 ELF格式,是用來(lái)加載操作系統內核的。在創(chuàng )建 LinuxBIOS的 ROM映像過(guò)程中,Payload映像被集成到 ROM映像;配置期間,開(kāi)發(fā)人員可以設置 ROM映像的大小和 Payload映像的指向,還可以選擇是否采用NRV2B或 LZMA壓縮算法對 Payload進(jìn)行壓縮,相關(guān)的配置選項在目錄/targets內相關(guān)系統平臺的配置文件 Config.lb中給出。

5.LinuxBIOS啟動(dòng)過(guò)程

從操作系統的角度看,LinuxBIOS的總的目標是正確的調用系統內核來(lái)執行,由于LinuxBIOS的實(shí)現依賴(lài)于 CPU的體系結構,此部分將依據基于 Geode LX處理器的嵌入式 x86平臺來(lái)分析 LinuxBIOS的啟動(dòng)流程,其流程圖如圖2,可以分為以下三個(gè)階段:

第一階段是主要用 C語(yǔ)言完成的,其中也內嵌了少量的匯編語(yǔ)言,主要是存儲控制器的初始化和其他硬件必要的初始化。系統加電啟動(dòng)時(shí),CPU首先從 reset16.inc啟動(dòng),隨后跳轉到 entry16.inc并切換到 32位的保護模式。在目錄/CPU/amd/model_lx/內的cache_as_ram.inc將初始化 CPU中的 Cache控制器,為堆棧準備空間,而在目錄/mainboard/amd/db800/內的 cache_as_ram_auto.c被 gcc編譯成auto.inc,將開(kāi)始初始化存儲控制器。/CPU/amd/car/post_cache_as_ram.c是 cache_as_ram_auto.c的一部分,將Cache中的棧復制到 RAM中,使 Cache恢復正常,為 hardwaremain預留1M的空間,昀后調用 copy_and_run, copy_and_run將復制并解壓 hardwaremain到 RAM 中,跳轉到hardwaremain處執行。


第二階段是硬件列舉階段,開(kāi)始列舉 PCI總線(xiàn)上的設備,分配存儲空間和 IO空間,配置南橋上設備如USB、Flash和一些外圍接口,初始化 PCI總線(xiàn)上的設備使其可用,并初始 化 LinuxBIOS表。

第三階段加載Payload,要檢測系統內存映射,將 Payload從 ROM映像中復制到RAM,開(kāi)始解壓 Payload映像并執行,將根據啟動(dòng)參數加載操作系統內核kernel。

6.Geode LinuxBIOS的配置

為了能從 IDE硬盤(pán)中啟動(dòng)操作系統,選擇 FILO作為Payload,FILO支持從 IDE硬盤(pán)、CD-ROM等設備引導操作系統。構建 LinuxBIOS ROM映像需要的源文件有 LinuxBIOSv2、FILO-0.5和lx_vsa.36k.bin,其中lx_vsa.36k.bin是AMD Geode設備的系統管理模式軟件,它將被目錄/src/cpu/amd /model_lx/中的vsmsetup.c調用,由 AMD公司直接提供。

具體的配置 ROM映像的方法如下:

①創(chuàng )建 FILO Payload映像

將 FILO-0.5的壓縮文件包解壓,在 FILO-0.5的根目錄下運行 make命令,創(chuàng )建了一個(gè)默認的 Config文件,在該文件中指出所要引導 Linux內核映像文件的磁盤(pán)分區等信息,其相關(guān)配置如下:

AUTOBOOT_FILE = "hda1:/vmlinuz root="/dev/hda1" console="tty0" console="ttyS0",115200" #自動(dòng)加載系統的命令行參數 再次運行 make命令即可在 FILO-0.5的根目錄下產(chǎn)生 filo.elf映像文件。

②配置 LinuxBIOS

為了加快系統啟動(dòng)的速度,減少串口控制臺的輸出信息,可以通過(guò)修改 src/mainboard/amd/db800目錄中的 Option.lb文件的配置選項,降低輸出信息的級別,其默認選項為8,將其修改為6,輸出啟動(dòng)各階段的通告信息。配置選項如下:

default DEFAULT_C*OLE_LOGLEVEL=6 #要求級別 6的調試輸出

修改/targets/amd/db800目錄下 config.lb文件,使用 LZMA算法壓縮 payload映像,指出Payload 映像的指向為 payload /FILO-0.5/filo.elf,這樣可將 Payload映像集成到ROM映像中。下面是基于 AMD Geode處理器目標板的 ROM映像一些配置選項:

option CONFIG_COMPRESSED_PAYLOAD_LZMA=0 #修改為 1時(shí)使用 LZMA算法壓縮 payload option ROM_SIZE=512*1024-36*1024 #預留 36k空間給 lx_vsa.36k.bin payload ../payload.elf #修改指向為 payload /FILO-0.5/filo.elf

③生成 LinuxBIOS ROM映像

在/LinuxBIOSv2/targets/目錄下,執行如下的命令: [root@localhost targets]#./buildtarget amd/db800此時(shí)在 amd/db800中產(chǎn)生了 db800目錄,目錄中有 Makefile、Makefile.settings和config.py文件,將切換目錄到 amd/db800/db800下,運行如下命令: [root@localhost db800]#make

在/db800目錄下生成了 db800.rom映像文件,其大小為476k,從前面的配置選項中得知,在/targets/amd目錄下的 config.lb文件中定義了 option ROM_SIZE=512*1024-36*1024,這 36k的空間是留給 lx_vsa.36k.bin的,執行下列命令將追加到 ROM映像中:

[root@localhost db800]#cat db800.rom lx_vsa.36k.bin>LinuxBIOS.rom

LinuxBIOS.rom為昀終所生成的 ROM映像文件。

7.燒寫(xiě)映像文件并運行

LinuxBIOS ROM映像文件將通過(guò)與宿主機相連的 SUPERPRO/GX編程器燒寫(xiě)到flashrom中,這樣比較簡(jiǎn)單易行,方便調試。在啟動(dòng)系統前,首先要配置 Linuxkernel-2.6.23,在配置中要選擇配置選項 Device Drivers中的 AMD Geode LXframebuffer支持模塊。

將已經(jīng)燒寫(xiě)了 LinuxBIOS.rom映像文件的 flashrom放到 db800開(kāi)發(fā)板上。啟動(dòng)目標板,通過(guò) windows的超級終端顯示 LinuxBIOS的啟動(dòng)信息的結果如圖3所示:


8.結束語(yǔ)

本文簡(jiǎn)單介紹了 LinuxBIOS的基本特征,以及基于 Geode LX處理器的嵌入式 x86體系結構,重點(diǎn)給出了 LinuxBIOS的基本結構和針對基于 Geode LX處理器開(kāi)發(fā)平臺的 LinuxBIOS的運行機理,昀后詳細地給出了 LinuxBIOS的 ROM映像配置和生成方法,并給出了實(shí)驗結果,實(shí)驗表明該方法配置出來(lái)的 ROM映像是能夠可靠運行的。

本文的創(chuàng )新點(diǎn):闡明了在基于 Geode LX處理器的嵌入式開(kāi)發(fā)平臺上 LinuxBIOS的配置方法和實(shí)現步驟,為從事嵌入式系統開(kāi)發(fā)工作的人員提供一個(gè)參考。
本文地址:http://selenalain.com/thread-31813-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页