Embedded Linux
開發導論
中華民國九十九年十月二十八日星期四
Embedded Linux
• 是一個基於Linux Kernel的系統
• 依實際需求
– 使用特定的程式庫
– 使用經過修改的應用程式
為什麼採用Linux Kernel?
• 良好的記憶體及進程(process)管理。
• 良好的security model及權限(permissions)管理。
• 良好且經過驗證的driver model。
• Shared libraries的支援。
• Linux Kernel為開放源碼的產品。
– GNU General Public License (GPL), version 2
Linux based Software Solution
Solution 主導單位 授權模式
LiMo Linux Mobile Foundation GPL
OpenMoko Openmoko, Inc. GPL
Moblin Intel Corp. GPL
Maemo Nokia Corp. GPL
MeeGo Combined by Moblin and Maemo
FSO Funded by Openmoko, Inc. from January 2008 until March 2009.
Android Google Apache License
From: Qiang Wang, "Google Android's Significance for Mobile Linux Ecosystem"
• 由Gerard Beekmans主持維護的教科書名,說明如何由套件原始碼客製Linux system。
Linux From Scratch (LFS)
與Linux system有關的標準
• Linux Standard Base (LSB)減少因Linux system的多樣性對開發人員所造成的困擾。
• Filesystem Hierarchy Standard (FHS)定義了類UNIX系統的目錄和檔案結構。
We need...
• OS Kernel
– 選擇一個合適的Linux kernel版本,例如Linuxkernel 2.6.27或2.6.29等。
• File system
– 系統基本設定(組態)及公用程式。
– 針對應用而設計的軟體。
• Boot loader*
Linux kernel
• Linux kernel 2.6
• Linus Torvalds vs. Android Open Source Project (AOSP)
– What happen in Linux Kernel 2.6.33?
• http://www.kernel.org
• http://source.android.com
File system
• UNIX法則:「Everything is file.」。
– 即使是記憶體(/dev/mem)。
• Linux支援眾多檔案系統的格式。
– Ext2或Ext3必須透過NFTL (NAND Flash Transition Layer)作轉換才能用於Flash memory。
• 支援Flash的檔案系統技術包括JFFS2/YAFFS、RAMFS、CRAMFS、ROMFS等。
Boot loader
• Boot loader是目標平台上電之後「第一個」執行的程式。
• Boot loader通常「僅」驅動部份裝置,並提供使用者設定參數、載入OS等功能。– 供Debug用的串列介面– Ethernet Controller– USB Host / USB Device– USB Networking– SDMMC– LCD
• Boot loader負責載入Linux kernel。• Boot loader vs. BIOS
目標平台(Target)
開發環境
U-Boot
Linux Kernel
File system
Just for fun!
Thank you~~~