什麼是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的開發者所需的知識很廣,而且要深,不然就需要將部分的軟件外包給其他人員。
沒有留言:
張貼留言