7/26/2009

Embedded for Linux 簡單概念

(以下是小弟個人見解....僅供參考)

為什麼會有embedded system這東西出現?

說實話這問題讓我干擾很久,嘸歹嘸誌搗鼓出這玩意兒來殘害幼苗嗎?

有句說常聽過:「有需求就會有創新、有創新就會有市場」

你沒需求何苦去創新一個沒人要欣賞的東西呢?

embedded會出現,是因為有人要求希望能做一個體積小到靠北、又要五臟俱全的系統

說白一點,embedde就是拿來做為一個特定用途的一個系統,前提是,要在有限的資源來完成你所需求的功能!

embedded system,撇開硬體不講,作為一個能夠跟CPU、硬體及週邊設備、存取記憶體、暫存器、記憶體管理等等.......而這些東東,被叫做一個作業系統的玩意來跟它們「溝通」。

而驅使作業系統運作,稱之為「核心」,也就是kernel;要取得這kernel非常簡單,但前提是,你要如何把這kernel塞到embedded system裡去呢?

一般kernel的容量是不可能塞到裡面去的,所以必須把一些不要或者沒那個需求的功能都剔除掉,保留住所要的功能就好,但被剔除掉的功能就沒辦法在用了嗎?如果真是這樣的話,那這個embedde也就廢掉了。

再強調一次,視你所要的需求做出你要的embedded system,如果你要做出符合全部人的需求,理論上是可以,但要想,依目前的市場競爭及成本、時間,幾乎是沒辦法實視。(因為某些事,讓我非常重視這句話........)

在linux kernel porting的功能,分為兩大類:

1.Microprocessor architecture level

2.Board support package (BSP) level


第一類稱之為微處理器,也就是CPU,在原本的kernel包含了許多家廠商的CPU support(像是ARM、PPC、MIPS等等),而這些微處理器的架構分為兩種:MMU和MMU-less。

一般來講,MMU架構的話,用一般linux kernel porting即可,而MMU-less要用uClinux去porting了,這也是為什麼會有uClinux(當然也是用linux kernel)的出現。

還好這一階層的embedded porting己經由提供platform的廠商幫你處理好了,也就是說,廠商會提供一個適合這個platform的核心給你,你只需要清楚你用的CPU是啥就好。

BSP是介於硬體和作業系統(kernel)的一層,只是更遍向於kernel。

簡單來說,BSP就是support board hardware 的特殊軟件,也可以理解成,BSP是為了讓kernel能夠更好運行硬體主板,所以不同的kernel,就會有不同的定義形式BSP....

如果還不太瞭解,我舉一個列子,大家都有用過vmware吧?大家也知道vmware跟你真實上所運行的CPU一定是同一顆吧?可是vmware對CPU的接口定義跟你PC運行OS對CPU的接口定義卻是完完全全不同,也可以說,它們倆BSP是不可能一樣的,儘管它們連接的是同一個硬體。

那BSP include哪一些東西呢?

a. Bootloader support (開機啟動初始化)
b. Memory map support (記憶體管理)
c. System timers (恩...這我未清楚是啥= =")
d. Interrupt controller support (中斷控制管理)
e. Real-Time Clock (RTC) (小弟並不清楚RTC是啥,只知道涉及核心架構,未來再來詳細解讀...)
f. Serial support (debug and console) (串列通訊,也就是UART)
g. Bus support (PCI/ISA)
h. DMA support ( 直接記憶體存取 direct memory access)
i. Power management (電源管理)

Root file system也在其中(沒root file system怎麼support上面的東西勒...),這些能夠讓核心能夠更好運行硬體主板的support,都統稱為board support package (BSP)。

以上這些是把Embedded放大來看,自行整理出來的一個觀念。

P.S shit....BT的東西還未整理出來,而且還卡住!!!!! 天呀~~~

2 comments:

  1. 星期天還在寫網誌.......真是他貓的夠囉

    ReplyDelete
  2. ....

    廢哇

    你留的言也太鳥了一點...

    ReplyDelete