1 / 28

嵌入式 Linux 介紹

嵌入式 Linux 介紹. 長高科技 顏旭偉. 嵌入式 linux 簡介. LINUX 是一個類似 UNIX 的作業系統,其程式碼是完全開放的,核心功能強大,實現簡潔。它提供了類似 UNIX 的編寫程式介面和系統應用,可以方便的將 UNIX 系統上的應用程式,移植到 Linux 上運作。 Linux 核心支援多種體系結構的處理器,包括目前流行的 Intel x86 , Motorola/IBM PowerPC , ARM , Compaq Alpha , Sun SRARC 等處理器體系結構。

Download Presentation

嵌入式 Linux 介紹

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式Linux介紹 長高科技 顏旭偉

  2. 嵌入式linux簡介 • LINUX是一個類似UNIX的作業系統,其程式碼是完全開放的,核心功能強大,實現簡潔。它提供了類似UNIX的編寫程式介面和系統應用,可以方便的將UNIX系統上的應用程式,移植到Linux上運作。Linux核心支援多種體系結構的處理器,包括目前流行的Intel x86,Motorola/IBM PowerPC,ARM,Compaq Alpha,Sun SRARC等處理器體系結構。 • 要把Linux用於嵌入式環境,就必須修改Linux滿足嵌入式系統的要求。主要集中在兩個方面:一是體積,二是即時性。與目前上的眾多商業的RTOS(即時操作系統)相比,嵌入式Linux擁有以下的特點:

  3. 完全開放來源程式碼 • 嵌入式Linux開放來源程式碼,這使得學習,修改,剪裁Linux成為可能,嵌入式系統的設計者可以對嵌入式Linux進行二次開發,去掉作業系統的附加功能,只保留必須的作業系統功能,並且可以根據實際應用的需要優化作業系統的來源程式碼,從而降低整個作業系統開銷與消耗。

  4. 成本低 • GPL協定保證了源自Linux的嵌入式Linux也是開放來源程式碼的自由軟體,也就是說,只要遵守GPL協議,嵌入式Linux作業系統的來源程式碼可以自由獲得。另外,大多數嵌入式Linux使用的開發工具也是遵守GPL協議的,同樣可以免費獲得。

  5. 豐富的實用軟體支援 • Linux作業系統是一個完整的、功能強大的作業系統,提供了大量的實用程式和各種各樣的應用軟體。這些軟體的正確性和有效性都經過了實際應用檢驗,可以根據需要,利用Linux提供的豐富的軟體支援,迅速構建嵌入式應用的軟體環境。這樣可以極大地減小嵌入式系統軟體發展的時間和費用,提高系統的可靠性。

  6. 嵌入式LINUX的可攜性 • 將LINUX移植到新的微處理器體系非常快捷,一般是將其移植到一種新型的目標板,其中包含有獨特的外部設計。大部分的核心程式碼都是相同的,因為它們與微處理器無關,所以移植的工作多集中在一些記憶體管理及中斷處理程式上。一旦完成,它們將非常穩定。

  7. 嵌入式LINUX的應用 • 嵌入式系統的涵蓋面是非常廣泛的,其中,家電市場包括機頂盒、數位電視、視訊電話、家庭網路等資訊家電;工業市場包括工業控制設備、儀器;商用市場包括掌上電腦、受客戶機、POS終端等;通訊市場包括WAP手機、無線PDA等。目前被廣泛看好的是資訊家電市場,國內有很多開發廠商正加大投入、開發和研製新的產品,嵌入式LINUX將是他們首選的作業系統

  8. Linux的基本示意圖

  9. Boot Loader • 負責Linux核心的啟動,它用於初始化系統資源,包括SDRAM。這部分程式碼用於建立Linux核心運作環境和從Flash中裝載初始化ramdisk

  10. 核心初始化 • Linux核心的進入點是start_kernel()函數。它初始化核心的其他部分,包括捕獲、IRQ通道、調度、設備驅動、標定延遲迴圈,最重要的是能夠fork “init”處理程序,以啟動整個多工環境。系統應用函數/捕獲函數:在執行完“init”程式後,核心對程式不再有直接的控制權,此後,它的作用僅僅是處理非同步事件(例如硬體中斷)和為系統應用提供處理程序。

  11. 設備驅動 • 設備驅動佔據了Linux核心很大部分。同其他作業系統一樣,設備驅動為它們所控制的硬體設備和作業系統提供介面。

  12. 檔案系統 • Linux最重要的特性之一就是對多種檔案系統的支援。這種特性使得Linux很容易地同其他作業系統共存。檔案系統的概念使得用戶能夠查看儲存設備上的檔案和路徑而無須考慮實際物理設備的檔案系統類型。Linux透明的支援許多不同的檔案系統,將各種安裝的檔和檔案系統以一個完整的虛擬檔案系統的形式呈現給用戶。

  13. 嵌入式檔案系統簡介 • 嵌入式檔案系統的結構與LINUX類似,目前常用的有EXT2,CRAMFS,JFFS2,YAFFS2和RAM磁片檔案系統等。為了更好的嵌入式系統選擇檔案系統,一般會考察檔案系統的如下幾個特性: • 可寫入 檔案系統是否可以被寫入? • 可更新 系統重新啟動後,檔案系統是否能保持重新啟動前的更改? • 斷電可靠性 檔案系統在發生斷電的時候是否可以恢復原資料? • 可壓縮 檔案系統內容是否可被壓縮? • RAM啟動 在掛載檔案系統前,其內容是否首先從記憶體中提取到RAM中?

  14. ROMfs檔案系統: • ROMfs是使用最多的檔案系統,它是一種簡單、緊湊和唯讀的檔案系統。ROMfs順序儲存檔資料,並可以在uClinux支援的儲存設備上直接運作檔案系統,這樣可以在系統運作時節省許多RAM空間

  15. Cramfs 檔案系統: • Cramfs是針對Linux核心2.4之後的版本所設計的一種新型檔案系統,也是壓縮和唯讀格式的。它主要的優點是將檔案資料以壓縮形式儲存,在需要運作的時候進行解壓縮。由於它儲存的檔形式是壓縮的格式,所以檔案系統不能直接在Flash上運作。雖然這樣可以節約很多Flash儲存空間,但是檔案系統運作需要將大量的資料複製進RAM中,消耗了RAM空間。

  16. JFFS2 日誌檔案系統: • JFFS2是專門針對快閃記憶體的檔案系統,除了有日誌功能,還有負載平衡,垃圾收集等,並且來源碼公開。

  17. YAFFS2(Yet Another Flash File System)檔案系統 • YAFFS2是一種和JFFSx類似的快閃記憶體檔案系統,和JFFS2相比它減少了一些功能,所以速度更快,而且對記憶體的佔用比較小.YAFFS自已NAND晶片驅動,並且為嵌入式系統提供了直接取用檔案系統的API。 • 除了上面介紹的檔案系統之外,還有RAMDISK(一種基於記憶體的檔案系統),TrueFFS等等。

  18. 根檔案系統相關說明 • Linux核心在系統啟動時的最後操作之一就是載入根檔案系統。根檔案系統中存放了嵌入式系統使用的所有應用程式庫以及一些需要用到的服務。由於Linux受到UNIX系統發展的影響,Linux檔案系統的組織和UNIX相同。 • 根檔案系統的結構 • 根檔案系統中每一個最上層目錄都有特定的用途和目的。有些目錄是為了多用戶模式服務。在大多數沒有用戶和管理員的嵌入式Linux中,建立一個根檔案系統可以不考慮大部分在多用戶下需要注意的問題,下表列出了根檔案系統頂層目錄大致結構。

  19. 交叉編譯器介紹 • 交叉編譯就是在一個平台上產生可以在另一個平台上執行的程式碼。注意這裡的平台,實際上包含兩個概念:體系結構(Architecture)、作業系統(Operating System)。同一個體系結構可以運作不同的作業系統;同樣,同一個作業系統也可以在不同的體系結構上運作。舉例來說,我們常說的x86 Linux平台實際上是Intel x86體系結構和Linux for x86作業系統的統稱;而x86 WinNT平台實際上是Intel x86體系結構和Windows NT for x86作業系統的簡稱。就本書所涉及到的目標硬體FS2410XP而言,之所以使用交叉編譯是因為在該硬體上無法安裝我們所需的編譯器,只好借助於宿主機器,在宿主機器上對即將運作在目的機上的應用程式進行編譯,產生可在目的機器上運作的程式碼格式。

  20. GNU工具簡介 • GNU開發工具包括C編譯器GCC,C++編譯器G++,組語編譯器AS,鏈結器LD,二進位轉換工具(OBJCOPY,OBJDUMP),調整測試工具(GDB,GDBSERVER,KGDB) 和基於不同硬體平台的開發函式庫。在GNU GCC支援下用戶可以使用流行的C/C++語言開發應用程式,滿足產生高效率運作程式碼、易掌握的編寫程式語言的用戶需求。 • 這些工具都是按GPL版權聲明發佈,任何人可以從網上獲取全部的來源程式碼,無需使用任何費用。關於GNU和公共許可證協定的詳細資料,讀者可以參看GNU網站的介紹,http://www.gnu.org/home.html。 • 運作於Linux作業系統下的自由軟體GNU gcc編譯器,不僅可以編譯Linux作業系統下運作的應用程式,還可以編譯Linux核心本身,甚至可以作交叉編譯,編譯運作於其他CPU上的程式。在這裡我們用的是arm-linux-工具鏈

  21. 嵌入式Linux核心程式碼結構 • /arch子目錄包含了所有硬體結構特定的核心程式碼。如i386,alpha和arm.。 • /drivers子目錄包含了核心中所有的設備驅動程式,如usb和sound。 • /fs子目錄包含了所有的檔案系統的程式碼。如nfs,ext3和jffs2等。 • /include 子目錄包含了建立核心程式碼時所需的大部分函式庫檔案,這個模組利用其他模組重建核心。該目錄也包括了不同平台需要的函式庫檔案。比如,asm-arm是arm平台需要的函式庫檔案。 • /init子目錄包含了核心的初始化程式碼,核心從此處工作。 • /ipc子目錄包含了處理程序間通訊程式碼 • /kernel 子目錄包含了主核心程式碼 • /mm子目錄包含了所有核心管理程式碼 • /net子目錄包含了和網路相關的程式碼,如atm,ipv6等。 • 一般在每個目錄下都有一個depend檔和一個Makefile檔。這兩個檔都是編譯時使用的輔助檔。其中Makefile檔中指出了編譯時需要用到的編譯器,也是移植核心過程中不可缺少的。

  22. 在核心中添加網路驅動設備過程

  23. 在核心中添加網路驅動設備過程

  24. 在核心中添加網路驅動設備過程

  25. 在核心中添加網路驅動設備過程

  26. Linux下SD/MMC卡驅動程式

  27. Linux下SD/MMC卡驅動程式

More Related