|
在嵌入式領域中,這幾個系統目前用的特別多,其他使用的系統還有VXWORKS, NECLEUS等。LINUX是眾所周知的,它既用于桌面系統,也用于嵌入式產品。對于功能強大的CPU,如ARM9及其后續版本,主頻大于150M,選擇使用LINUX則較好;對于功能較弱的產品,主頻在50M以上,150M以下的CPU,如ARM7,CORTEX等,選擇RTEMS則較好或UCLINUX;對于8位單片機,則選擇UCOS
總的來說,在選擇UCOS,RTEMS和LINUX時應注意以下幾個原則:
1。選擇LINUX
硬件要求:150M以上主頻的CPU,內存應大于8M,存儲設備應大于4M
技術要求:公司應具有開發LINUX的能力,必須有至少一個完全精通LINUX的,否則做出的東西不可能達到產品級。LINUX中存在著較多的錯誤,舉幾個例子:
a.INGO MOLNAR在LINUX中加入實時功能的時候,錯誤地把時間的處理放在SOFTIRQ中處理,導致系統時間偏移很大,對于對時間精度要求很高的應用的程序來說,這是個非常大的缺陷,如果公司沒有實力,則不可能解決
b.LINUX中的驅動基本上都存在這樣那樣的問題,對于產品來說,這些錯誤是不可忍受的,如CAN的解決方案SOCKETCAN,里面缺少同步機制,導致其死鎖,建立在其上的應用在異常情況發生后則使通信變成不可能。還有RTC的驅動,如DS1307,DS12887等,時間的讀寫會發生錯誤,需要進行處理
c.不同MCU的相關代碼,也存在著對DATASHEET理解的錯誤,而出現錯誤,如AT91SAM9263的PIT設置中就多加了1,LINUX-2。6。21。5中就有這個問題,但在LINUX-2。6。29后好象就解決了。
很多公司通常找一兩個搞了一兩年的人員來做這個,其后果是可想而知的。這些人員可能就只會用編譯好的TOOLCHAIN來把內核編譯編譯就交付使用,顯然這樣的產品后續問題會很多。
2。選擇RTEMS或UCLINUX
硬件要求:50M-150M主頻CPU,內存應大于4M,存儲設備應大于1M(對UCLINUX);對RTEMS,硬件需求基本沒特別的要求,RTEMS編譯后的IMAGE可以小于100K,甚至只有50-60K
技術要求:公司應有一個懂操作系統的,因為RTEMS雖然較為簡單,但BSP很不全,特別是占83%市場的ARM相關的BSP不全,如CORTEX支持沒有,因此公司需要自己編寫CORTEX的進程切換代碼,相關的BSP支持,如CLOCK,啟動代碼等等
3。選擇UCOS
硬件需求:基本上無特別的硬件需求
技術要求:公司應有一個懂操作系統的,不過不要也可以,因其代碼基本沒有多少,里面什么東西也沒有,兩三天就可以看完看懂,不過做出的產品的穩定性怎么樣就比較難保證。對操作系統的支持很少很少,就是幾個進程塊之間切換加上個優先級選擇而已。對于沒有什么技術實力的公司,選用這個可能是個選擇,不過由于它什么也不支持,很多東西也需要開發,如針對不同CPU的進程切換等等都需要自己搞,如果公司沒一個人懂操作系統,找個外面的人幫忙開發或從網上下載別人隨便寫的東西可能是一個途徑。
從公司的角度考慮,如果公司的產品比較多,開發不同檔次的產品,我的建議是:
1。高端的產品使用LINUX,低端的產品選擇RTEMS。由于RTEMS和LINUX都支持POSIX標準,則應用開發人員無須熟悉不同的系統接口而直接可以在兩個平臺上開發產品功能功能
2。兩個系統都使用了好多年,雖然有些功能可能存在這樣那樣的問題,但操作系統部分是經過大量驗證的,產品穩定性得到了保證。
如果公司不具有一定實力,開發的產品也比較單一,可選擇UCOS。或者公司開發的產品太多,又要考慮節約成本,可選擇使用LINUX和RTEMS,但把該部分的開發外包。
從我多年從業的經驗和了解的情況看,計算機相關公司及開發的產品多選用LINUX和RTEMS,專業公司因實力不夠多選用UCOS,特別是國內的公司 |
|