嵌入式系統(tǒng)設計中的“團隊技能”
前一陣看了幾本有關嵌入式系統(tǒng)設計的書,包括RTOS,算法,硬件設計、數(shù)據(jù)結構等,感覺這個系統(tǒng)是相當復雜的,所以在此分享一些心得。
本文引用地址:http://www.ex-cimer.com/article/164528.htm首先,嵌入式系統(tǒng)的設計經(jīng)常是一項很艱巨的任務。一個復雜的系統(tǒng)。例如,一個電機控制的嵌入式系統(tǒng)在由一個開發(fā)團隊來負責的時候,有的工程師會負責RTOS的移植、調(diào)度等工作,有的專門負責硬件電路和接口設計,有的專門負責電機的控制等等。對于其中的軟件工程師來說,他可以熟練掌握C、C++等編程語言和RTOS的設計等,但是對于電機的控制就未必了解很多了(看我們國內(nèi)現(xiàn)狀,很多是計算機專業(yè)的來從事這方面工作)。而對于控制工程師來說,電機的控制他很熟練,而C++里面那些復雜的面向?qū)ο缶幊逃治幢睾苁煜?。這樣在工作中,就不可避免地存在一些交流、溝通上的“鴻溝”。為了不至于在出現(xiàn)一些難以調(diào)試的問題時,大家互相指責對方是“豬一樣的隊友”,就需要隊員們對開發(fā)一個嵌入式系統(tǒng)需要的技能有一些宏觀的了解;對于初學者來說,了解開發(fā)這樣的一個復雜系統(tǒng)需要哪些技能,也是非常有幫助的。這些技能從宏觀上講,可以分為5大類:
1. 閱讀數(shù)據(jù)手冊(即datasheet)
做產(chǎn)品開發(fā)的工程師和做研究的工程師有一個比較明細的區(qū)別,就是做研究往往不會把時間定的特別緊迫,或者說研究的往往是至少1-2年以后采用的技術。而做產(chǎn)品的就不行,產(chǎn)品往往就是工程師們的“催命鬼”,每天看看時間進度表,哪還有時間去沉下心來去仔細閱讀datasheet?但是datasheet確實是很關鍵的,它相當于芯片或者器件的接口“API”。在設計開始之前,至少要通過讀最新的datasheet來確認選擇的器件滿足工作環(huán)境的要求,并且知道那些最有可能出現(xiàn)各種奇怪現(xiàn)象的部分在哪里,以便在發(fā)現(xiàn)問題時快速定位。
2. 了解所使用的處理器
1) 處理器往往是復雜的,但是學習資源也是非常豐富的,我們可以使用很多資源來加速學習,例如入門指南和初學者套件:一般的公司都會提供這些東西,而且初學者套件一般并不貴
2) 論壇,以及處理器制造廠商的wiki
3) 培訓活動
4) 用戶指南和應用指南
一般在學習一個新的處理器之前,把上面這些資料備齊,學習條件就很充分了。
3. 閱讀原理圖
一部分純軟件工程師并不需要去閱讀原理圖,但是大部分團隊成員還是需要了解的。例如,一個bug可能表現(xiàn)為軟件里某個變量的值異常,但是這有可能是硬件電路某個電平不對,導致了后面的一系列異常。
4. 調(diào)試
調(diào)試工具既包含軟件里的debugger,也包含包括硬件調(diào)試使用的鉗子、刀、膠帶、放大鏡、螺絲刀、萬用表、示波器、邏輯分析儀等。
5. 測試
為了不讓重大隱患或者煩人的bug在用戶手里頻繁出現(xiàn),測試工作的重要性自然是不言而喻的。國外有測試相關的專門職位,例如qualification工程師和verification工程師,往往都是由一些年紀比較大但是富有經(jīng)驗的工程師擔任,但是國內(nèi)貌似還不怎么重視這部分工作。
引用一句名言,“越是不經(jīng)意的錯誤,越有可能需要花費相當長的時間去查找和修復”。所以,整個團隊的工程師都首先要把自己負責的部分測試好,然后再進行組合測試。
最后說明,這里的幾個技巧是從O’REILLY出版的《Making Embeded Systems》一書里面提煉的。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)c++相關文章:c++教程
評論