2009年10月18日 星期日

什麼是Embedded Linux

什麼是Embedded Linux, 這是一個常常被首次接觸的人所問的問題, 要說明Embedded Linux之前先要了解什麼是Linux, 原則上Linux是一個從Unix所修改過來的OS, 而Unix是則是大型電腦主機所使用的一個OS系統, 而Unix則是一個多人多工的作業系統, 因為PC的日益強大, 所以便有人將Unix給予改寫使其可以在PC上使用, 更進一步由於PC的普遍而使有心人將其修改重寫, 並且免費提供使用, 以及開放其原始供大家修改, 讓它可以執行在各種CPU的電腦上。而embedded linux則是將其修改用在embedded的系統中, 因為embedded系統有OS的加入, 將可使embedded更強壯而可以做更多的事, 也因此使得embedded系統更智能化, 也讓embedded系統可以更容易開發及維護。
對於什麼是embedded系統, 也是有很多種說法, 而我們最簡單的說法則是一種專用機器, 而上是有CPU的運算能力, 而它不是一般的泛用型的機器,另外一種的簡單說法, 則是不是PC的其它都是embedded系統。

它通常會由以下幾個部分所組成:
  • SoC的CPU及內建DRAM & Flash
  • boot loader
  • linux kernel (included device drivers)
  • root file system
  • middle ware (daemon) (eg. apache, OpenSSH, iptables...)
  • application
而且在embedded linux中大部分是由C語言所,部分在boot loader & kernel booting會用到組合語言。而在開發embedded linux時你可能會需要以下各方面知識,或者一個具有以下能力的團隊來開發:
  • C language
  • Assembly language
  • 了解如何編譯cross tool chain (compiler & glibc)
  • boot loader
  • Linux kernel
  • linux device driver
  • 了解如何編譯各個middle ware source code by cross compiler
  • 了解Linux系統的開機順序
所以一個完整的embedded linux的開發者所需的知識很廣,而且要深,不然就需要將部分的軟件外包給其他人員。

沒有留言:

張貼留言