將x86 SoC的嵌入式Linux系統變身為低價電腦 (上)

本文作者:admin       點擊: 2007-05-10 00:00
前言:
前言
嵌入式系統發展至今,已逐漸成為明星級的產業了。它之所以成為眾所矚目的焦點,必然有其技術的特殊性與需求性。以目前家庭最常見的寬頻閘道器為例,若沒有嵌入式系統這項技術,則使用者將必須以一台PC系統,來完成原本寬頻閘道器要完成的功能。我們會發現,PC系統有很強的運算能力,但通常只用到一小部分,而為了這一小部分的運算功能,卻要耗費每小時可能幾百瓦的電力。扣除買電腦的成本與電費不算,要讓一台PC系統可以固定執行IP分享的功能,將會耗費掉使用者許多的心力去學習與設定,甚至可以說,那不是一般使用者做得到的事。總而言之,個人電腦絕對可以執行嵌入式系統所要完成的工作,但卻無法讓人接受。因此嵌入系統逐漸展露頭角,它有著低功耗、低成本、適當的CPU運算效能與友善的軟體介面......等優點。

然而嵌入式系統雖然有上述優點,卻有著高門檻的軟硬體開發技術需要建立。若所用的CPU是ARM或MIPS等RISC架構,則軟體還需要非常大的開發或移植成本。要完成一項嵌入式系統的產品研發,往往需要投入大量的人力,而產品的成功機率,更因此增添了許多不確定性。

本文所要介紹的嵌入式系統是使用金麗科技的x86 SoC,它有著低溫、低功耗和低成本等優點。低溫使整個系統無需使用風扇,而低於0.9瓦的功耗,則非常適合長時間待機使用。x86 SoC還能讓開發技術的門檻降低,使開發平台與目標平台的差距縮到最小,甚至目標平台可以看成是PC on a Chip。目前科技產品有許多創新的應用,皆是先由PC系統常用的軟體功能開始,進而獨立成為產品。例如MP3隨身聽,就是從電腦裡的MP3播放軟體獨立出來。因此,若想把PC系統裡獨具特色的軟體功能變為一項大眾化且易用的產品,也就是PC in Box的概念,使用金麗科技的x86 SoC將是最佳選擇。

目前最熱門的低價電腦即是一項PC in Box的應用,它有著嵌入式系統的優點,但仍然保有PC系統具有的軟體功能,可說是集兩者的優點於一身。而使用Linux作業系統,不但作業系統穩定且免費,更立即擁有充足的驅動程式支援,還有著極為豐富的自由軟體可應用。因此本文將從嵌入式Linux系統開始,進而分析Linux低價電腦的整個開發過程。

系統硬體架構
自從SoC(System-on-Chip)的技術逐漸成熟後,嵌入式系統皆使用高整合的SoC為主要晶片。也就是在一塊開發板裡,都盡量做到IC晶片越少越好。一顆高整合的SOC可以簡化生產流程,並且大幅降低成本。本文所使用的金麗科技x86 SOC,裡面包含一個333 MHz x86相容的CPU、南北橋晶片組和Ethernet MAC,也有PCI BUS可外接VGA顯示卡和USB 2.0 Host。圖1是採用RDC x86 SOC的PC in Box系統方塊圖。

圖1 PC in Box系統方塊圖


在系統方塊圖裡,DDR2共有64 MBytes,是系統執行時的主記憶體。另外SPI-Flash共有4 MBytes,它可以儲存BIOS的Firmware,使其成為像一般個人電腦一樣的啟動方式;也可以儲存Boot-Loader、Linux核心和檔案系統等等,也就是使用一般常見的嵌入式Linux系統架構。另外在VGA顯示卡的部分,使用的是XGI Z9s PCI顯示卡。一張VGA顯示卡通常都有一段VGA BIOS燒錄在顯示卡的EEPROM裡面,由於VGA BIOS是使用x86指令集,因此要使用這種VGA顯示卡,系統必須要有能力可以執行x86指令。目前SOC只有像金麗科技這種使用x86相容的CPU才有辦法執行。

在開發板外部,透過USB 2.0 Host,分別接USB Keyboard、USB Mouse、USB Audio和USB Flash。其中USB Flash就是目前最經濟實用的隨身碟。本文系統將以這個外接的隨身碟當成根目錄檔案系統,也就是相當於原本電腦硬碟的角色。另外由Ethernet PHY向外,將有一個RJ-45的LAN Port可接區域網路;以及一個VGA Port可外接LCD螢幕。結合上述幾項週邊,一部電腦的基本輸出入系統皆已備齊。從系統中也可看出,這樣的PC-in-Box系統架構與一般電腦比較起來,是極為低成本的設計。

嵌入式Linux系統分析
目前Linux在伺服器、PC系統以及嵌入式系統等領域,皆獲得廣大的採用。在嵌入式系統領域裡,若使用ARM或MIPS等RISC,則Linux核心將有別於PC系統,也就是Linux的核心將需要切換成特定的CPU架構,並且需要開發BSP;若使用x86 SOC,則Linux核心與PC系統所使用的相同。差別只在於嵌入式系統不像PC系統有硬碟等大型儲存裝置,因此啟動和儲存方式需要使用不同方法。

通常在開發嵌入式Linux時,一定會有三個主要部分需要開發,分別是Boot-Loader、Linux核心以及根目錄檔案系統(Root-Filesystem)。這三個部分通常會製作成映像檔(Image File),並且儲存在Flash裡面,也就是Flash裡將會有三個映像檔分別存放在不同的區段。本文系統所用的位址區段如圖2所示,其中redboot.bin是Boot-Loader的映像檔,它是整個系統最先執行的程式,相當於一般PC主機板裡的BIOS。圖2下方的bzImage是Linux核心的映像檔所在位置,為了節省空間,它是以壓縮的方式儲存在Flash裡。圖2中間的initrd.gz則是Ramdisk的映像檔,它解開後會放到記憶體裡,並且由Linux核心掛載成為根目錄檔案系統。

目前Boot-Loader有許多選擇,常用的有uboot 或Redboot,有些SOC原廠甚至會提供自行開發的Boot-Loader。其主要功能是用來初始化CPU、Flash、SDRAM、UART和Ethernet MAC等等。嵌入式系統一般都是固定的硬體規格,也就是能夠做初始化的硬體通常都是固定不變的。因此若更換任何硬體元件,則Boot-Loader可能需要一些修改。另外Boot-Loader也負責把Linux核心和Ramdisk這兩個映像檔從Flash裡讀取出來,並且解壓縮放到SDRAM的定位上。當Linux核心和Ramdisk都已放到SDRAM後,Boot-Loader會把CPU控制權移轉給Linux核心,亦即結束Boot-Loader的工作,並開始Linux作業系統的執行。圖3是Boot-Loader執行時,Flash與SDRAM的使用過程。

Linux核心就是整個系統的作業系統,主要功能有記憶體管理、應用程式行程管理、檔案系統管理、硬體資源管理、驅動程式掛載以及提供網路通訊協定等等。Linux在上述的功能皆非常穩定,而且在檔案系統、網路通訊協定與驅動程式等等,皆有豐富的支援。當Linux核心執行時,它會先初始化作業系統的軟硬體部分,並掛載所需的驅動程式,最後才會掛載根目錄檔案系統。當根目錄檔案系統掛載完成,Linux核心會藉由執行檔名為init的檔案,來轉移系統執行的控制權到使用者空間,因此只要善加利用init這個檔案,就可使系統充分地客制化。圖4是Linux核心的主要功能方塊圖。

在一般情況下,Linux核心所執行的init,將會是整個系統的第一個行程(Process)。init執行時會去檢查inittab這個設定檔,並從檔案裡面的敘述,繼續尋找shell script來執行,通常那個shell script都設為/etc/rc.d/rc.sysinit。當系統執行到rc.sysinit時,也就代表Linux核心已完成初始化的工作,剩餘的工作要開始交由使用者來決定了。一個嵌入式Linux通常都有其特定的任務需要執行,因此藉由rc.sysinit這一script file,就可以設定許多的環境變數,並帶起系統真正要執行的應用程式。

轉變為低價電腦的關鍵點
嵌入式系統除了具有低功耗和低成本等優點外,還有系統穩定以及永續執行等軟體上的特質。因此嵌入式Linux皆把幾個主要的軟體製作成映像檔,除了可縮減儲存容量的成本,也可達到系統穩定與永續執行的需求。利用映像檔的方式,則不管日後系統開機幾次,都將和出廠時一樣;若是一般PC系統,開機數次之後,系統可能就和出廠時的狀態有些許不同,也可能從而增加軟體技術支援的需求。本文所設計的低價電腦,主要是由嵌入式Linux系統架構所衍生而來,因此除了有PC系統的使用介面外,還繼續保有嵌入式系統的穩定特質。
 
要從嵌入式系統架構擴充成為低價電腦,主要在於儲存系統與VGA顯示卡這兩部分。目前USB隨身碟算是最經濟實惠的選擇,也是最省電的儲存裝置。因此本文系統將會製作另一根目錄檔案系統的映像檔,大約250Mbytes的大小放在USB隨身碟裡,也就是整個系統將增加到四個映像檔,其中三個如前文所述放在Flash裡,第四個則放在USB隨身碟。若單就USB隨身碟來看,它仍然是出廠時的FAT16檔案系統,只是裡面放了一個檔案名為rimg的根目錄檔案系統映像檔。這樣的架構在日後大量生產時,將會非常方便,只要複製rimg到不同的USB隨身碟即可。另外也可在同一隨身碟儲存兩份rimg,這樣當系統出問題時,可以很容易地恢復成出廠時的狀態。在VGA顯示卡的部分,由於本文系統使用的是x86 SoC,因此PCI的VGA卡將是便宜又方便的選擇。透過此一VGA卡,外部顯示器可任意選擇尺寸。另外在建構X-Window時,只要以VESA模式即可輕易讓X-Server啟動,這是其他RISC所無法達到的便利性。

系統整合
低價電腦是一新興的產品,在設計系統時有許多考量與PC系統不同。其中最主要的是低成本與強韌性,因此本文從x86 SOC開始,進而介紹系統硬體,再到嵌入式Linux的許多特性分析,最後以USB隨身碟與PCI的VGA顯示卡來達到PC系統的基本功能。在下一篇文章裡,將剖析這些系統素材該如何整合在一起,繼續分享低價電腦的實作過程。

電子郵件:look@compotechasia.com

聯繫電話:886-2-27201789       分機請撥:11