移植 linux 到 arm 嵌入式处理器

上传人:艾力 文档编号:36675422 上传时间:2018-04-01 格式:PDF 页数:17 大小:313.63KB
返回 下载 相关 举报
移植 linux 到 arm 嵌入式处理器_第1页
第1页 / 共17页
移植 linux 到 arm 嵌入式处理器_第2页
第2页 / 共17页
移植 linux 到 arm 嵌入式处理器_第3页
第3页 / 共17页
移植 linux 到 arm 嵌入式处理器_第4页
第4页 / 共17页
移植 linux 到 arm 嵌入式处理器_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《移植 linux 到 arm 嵌入式处理器》由会员分享,可在线阅读,更多相关《移植 linux 到 arm 嵌入式处理器(17页珍藏版)》请在金锄头文库上搜索。

1、移植移植 Linux 至至 ARM 嵌入式處器嵌入式處器 陳銘宏 盈達 國交通大學資訊科學系 300 新竹市大學 1001 號 Tel: 03-5712121 ext. 56667 E-MAIL:mhchen,ydlincis.nctu.edu.tw 摘要 摘要 Linux 是一個 Open Source 的 UNIX-like 作業系統,除了有著廣大的支援社群以外,穩定、模組化、擁有廣大的應用免費應用軟體支援是它主要的優點。ARM 嵌入式處理器則是目前應用在嵌入式系統領域中,佔有率最高的處理器,同時也是 Linux 核心目前所能夠支援的處理器之一,然而要使得 Linux 在 ARM嵌入式處理

2、器上運作,勢必要經過移植 (porting) 的過程,也就是要將平台相依 (platform dependent) 的部分做適當的修改。而微小化的作業系統又是目前嵌入式作業系統的趨勢,因此近年來微型化的語言函式庫(library)也是大行其道,但使用微型化的函式庫又會逼迫使用者需要重新利用新的函式庫編譯(compile)所有需要的應用程式,讓系統能夠轉移到新的函式庫上。在本文裡,我們實際將Linux 與 uClibc 安裝到一個以 Intel StrongARM SA-110 為處理器核心的實驗版上,並且讓系統在能夠運作的狀況下作最小化。在保留基本的 Shell、少數核心工具的功能和動態連結函

3、示庫的設定下,利用變更函示庫和傳統工具集的方式,可以將系統映像檔由 6.2MB 縮減縮減到 1.7MB 或更小的大小。此外,透過觀察 Kernel 啟動的程序和原始碼的佈局,則可清楚的指出,開機流程和硬體裝置驅動程式是和平台相依性最為有關的部分。我們會在本文中闡明其運作機制。瞭解這些部分,將是移植 Linux 到不同平台上的主要關鍵。 1.1. 簡介 簡介 移植的廣泛定義,是讓一套軟體可以在一套選定硬體平台上正常運作。在這篇文章中,我們談的是如何移植 Linux 這套作業系統到 ARM 嵌入式處理器的平台上。由於 Linux 核心團隊一直堅持著免費與開放式程式碼的精神,因此許多的自由軟體設計師

4、都願意在這樣的一個平台上持續的開發各式強大的軟體,其中的大- 1 -多數軟體,也都以 Open Source 的方式提供給 Internet 上的所有人來使用。基於開放原始碼與具有完整度高的免費組件的優勢,近年來,Embedded Linux 也越來越受到市場的注目。而且選用 Linux 取代其他商業化的嵌入式作業系統,如表 1 所示,相較於其他現有作業系統,除了可以減低系統授權所需要的費用。廣大的社群也提供了許多免費的支援和不同平台的解決方案,如此一來,就能夠大幅降低開發硬體規格多變的嵌入式系統時,移植作業系統部分所需增加的負擔。 Non- Commercial Embedded Linux

5、Commercial Embedded LinuxVxWorks QNX pSOS Windows CE Price Free Depend on distributions $130M (20M royalty) $20M $105M ($15M royalty) $3M royalty $2M Tools Tools Prices Free Free $7,500 $10,000 $2,955 $4,955 $995 Royalty Free Free $1$35 $3$80 $1$30 $5$30 Focus Networking Datacom Networking Datacom H

6、andhold device Telecom, Datacom, Digital Imaging, CE Industrial automation Medical system, Telecom, Datacom, CE Automobile industry, Some CE Higher-end apps Strengths 1.Open Source 2.Free 3. Complete POSIX compliant 1.Partial Open Source, 2.Cover more hosts than original Linux 3.Tech Support and goo

7、d IDE 1.Most complete integrated environment 2.Largest coverage of CPU and hosts 1.micro-kernel architecture 2.Complete POSIX compliant 3.Most scalable 1.Very good IDE 2.Optimized for Motorola processors and DSPs 1.Win32 2.NT Connectivity3.Robust GUI 表 1. 現有嵌入式系統比較表1 在移植時要特別注意的是,Linux 核心本身具有良好虛擬記憶體系

8、統,因此他僅能在具有記憶體管理單元 (Memory Management Unit, MMU) 的處理器上運作,如果想要在沒有 MMU 的處理器上運行 Linux,則需要使用專為此種處理器而開發的 uClinux 套件。 在另一方面,ARM 處理器核心是一個 32 位元的精簡指令集架構 (RISC, - 2 -Reduced Instruction Set Computer),因此,其執行核心設計較為簡單,因此也具有著耗電量低的優勢,被廣泛的運用到各種嵌入式系統裡。通常一顆嵌入式處理器會包含一個處理器核心還有許多的運算周邊,以我們在本文中所使用的實驗版為例,它使用了 Intel StrongA

9、RM 110 的處理器,裡面包含了 Intel的StrongARM處理器核心(相容於 ARM 的指令集架構) 以及中斷控制器、計時器等等的周邊。從表 2 我們發現有些處理器核心並沒有內建記憶體管理單元,而在實際上,在 StrongARM與 ARM9 系列之前的所有 ARM 處理器核心,都是沒有記憶體管理單元的,也就是說原始的 Linux 核心並沒有辦法在上面運行,也就是必須使用 uClinux 核心才可以讓 Linux 在上面運行。 Type CPU Core Cache Size (Inst/Data)Tightly Coupled Memory Memory Manage-mentAHB

10、Bus InterfaceThumbDSPJazelleClock MHz *ARM7TDMINo No No Yes* Yes No No 133 Embedded Cores ARM7TDMI-SNo No No Yes* Yes No No 100-133StrongARM16K/8K No MMU N/A No No No 206233Intel ARM-based Processors Intel XScale32K/32K No MMU N/A Yes Yes No 400+表 2. ARM 處理器核心比較表 近年來,日益增加的嵌入式系統需求,也使得過去隨著功能擴充,日益肥大的作業

11、系統和函式庫有必要進行瘦身,由於 Linux 系統核心採用可模組化的設計,因此可以輕易的將不需要的模組由核心中移除,輕易的達到縮小系統核心的目標,而函式庫則有 uClibc 和 dietlib 等用於取代傳統 glibc 的微型函式庫出現,但是如表 3 所示,在比較過數種不同的微型 library 後,uClibc 是目前最適合使用的 library,因此在接下來的內容中,我們將提到如何利用 uClibc 來取代傳統的 glibc,並且利用 uClibc 所提供的工具來建立一個新的系統。 GNU C Library uClibc Diet Libc newlib Sglibc Size Lar

12、gest Small Smallest Small Large Compatibility Yes Good Bad Unknown Good - 3 -Speed Faster Fast Fast Fast Fastest Portability Yes Yes Yes Yes Yes MMU-less support No Yes Yes Unknown No Licensing LGPL LGPL GPL BSD, GPL LGPL Still active Yes Yes Yes Yes No Note The standard C library for Linux Rewrite

13、for embedded Linux. Support standard libc APIReduce size by breaking libc API compatibility Managed by Red Hat . A collection of several library parts A patch for GNU C library to discard sections of glibc source 表 3. 微型化 library 比較表 而除了函示庫和核心以外,最能夠節省空間的就是縮小應用程式所佔用的空間,除了移除所有不必要的軟體以節省空間以外,我們也可以尋找較小的替

14、代軟體來取代現有的工具。BusyBox 就是在這種需求下所產生的工具,他利用單一個程式提供大部分傳統工具集所提供的服務,並且可以依照不同的需求進行特製化,讓 BusyBox 執行檔的大小能夠有所調整,以達到進一步縮減整個作業系統大小的目標。 在這樣的介紹以後,我們可以發現,要建構一個較小的嵌入式 Linux 環境,我們將會需要去重新的編譯核心,建構 uClibc 的編譯與執行環境,並且將舊有的工具集換為較小的替代工具。在下一節,我們將簡單的介紹在進行移植前我們所需要考慮的事情。而在第三節,我們將描述如何一步一步的將 Linux 安裝到我們的實驗版上。在第四節,我們將會討論如何讓系統所佔用的空間

15、更加的縮小,並且討論在安裝過程中可能遇到的問題。最後將是我們的結論。 2.2. 移植 移植 - 4 -所謂的移植(porting),從軟體的角度來看,就是使一套軟體在不同平台上正常運行的過程,在此我們的軟體是指作業系統,而平台是指硬體平台。我們都知道作業系統是介於應用程式和硬體間溝通的橋樑,因此當底層的硬體有所改變時,作業系統和平台相依 (platform dependent) 的部分就必須跟著做變動,所以在移植前,瞭解目標平台 (target platform) 的硬體規格是相當重要的前置工作。除此之外,我們對於要移植的作業系統,其中與平台相依的各個部分要先熟悉,如此才能將這些部分迅速的轉移

16、到其他的平台上。 因此,在進行移植前,有四個問題是要先釐清的,它們關係到移植規模的大小和困難度。 ? 目標平台 目標平台裡包含了所使用的處理器和處理器外的周邊裝置,而處理器中可能也整合了一些運算周邊,舉如中斷控制器、計時器等等。因此在進行移植前,我們可以從目前作業系統的支援程度來決定哪些部分要改寫以及哪些部分可以套用原本的程式碼。以由 Intel x86 Processor 移植到 Intel StrongARM 110為例,這兩種處理器的核心可以說是完全不相同的,而且 x86 系列的處理器幾乎都整合了 FPU,但在 ARM 上則幾乎都沒有 FPU 的支援,而在內部核心上,使用的執行碼形式也不同,x86 是使用 CISC 為基礎,而 ARM 則是使用 RISC 為基礎,因此我們需要做處理的部分,除了產生目標碼的方式以外,還有包含暫存器等等系統底層的部分需要去做變更。但如果是由 StrongARM移植到 Xscale上,因為兩者的核心大致上可以相容,因此在新的平台上,我們可以僅需要做較小部分的修改,就可以在另一種

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号