|
作者:華清遠見武漢華嵌中心 高級講師 李磊
時常有些同學會問,在嵌入式開發中用得最多的是什么?我答,是C語言。那么最復雜的是什么?是嵌入式操作系統。只有Bootloader主要用到體系結構的知識嗎?嗯,那當然。寫Bootloader似乎也太麻煩了點,這要怎么開始啊?沒有人要求你從車輪開始造的,提供開發板的廠商必然會附送一個具備基本功能的Bootloader的,你就分析它,按自己的意愿修改它,然后就可得到自己的Bootloader了。那豈不是學習體系結構沒有多大用了?
換個視角來看。數學貴為科學的皇后,自打背上書包起,各類數學課本就沒有離開過我們,也是各類國家級大考的“常委”,可畢業后的工作實踐中,究竟有多少次用到過那些高深的數學知識了?大多數人都會遲疑片刻,接著把腦袋搖得跟撥浪鼓似的。顯然這樣看問題有些膚淺了,數學是基礎知識,是理論工具,在實際應用中起著至關重要的作用,只不過我們沒有察覺或“站在了巨人的肩膀上”了。一次,我發現堆排序算法中改變排序的路徑將略微減少比較的總次數,并用計算機寫出了新算法程序,一次次的隨機數實驗后,發現真的較傳統算法快約六分之一,可我老師說算法這學問是需要數學理論推導為基礎的,實驗數據再多也不過是數域上孤立的點,是無法令人信服的。費了九牛二虎之力,我列出一個長長的概率公式,望著一層層跌套的求積求和符號,我汗顏了。數學不是沒用,是沒學好,不會用。
嵌入式系統和個人計算機的區別,很大程度就在體系結構的差異上,若沒有認真學過體系結構,怎能聲稱是嵌入式開發人員呢?現在ARM處理器應用如此的廣泛,若不清楚其與X86各自的特點和差異,又能夠說把嵌入式做到多好呢?
對那些將投入驅動開發領域的同學來說,有可能你將面對處理器最最原始的一面,每一個細節你都要認真細致地對待,否則實驗的結果常常會令你沮喪好幾天,粉碎了你的自信心,更糟的是對硬件產生了永久性的損壞。而對那些在體系結構上下過功夫的同學來說,明明白白地清楚處理器在干什么,為什么會這樣,怎樣換一種方法來找到實驗失敗的原因。在這里,不要指望百度和谷歌能幫上你什么忙,因為實驗環境很特別或太具體,別人的仙丹放到這里來可能根本行不通。你必須自己摸索,自己慢慢積累經驗,靠什么呢,靠最最基礎的體系結構知識。
另一些同學聲稱將來會向應用方向發展,將體系結構“抽象掉了”,與系統是無關的。那是自然,不過這樣想的話,你就不能成為一個真正的高手,你并不清楚處理器在你的那些語句背后是如何工作的,也就不清楚它究竟會采用一種什么方式去做這件工作,“大概是XXX樣子吧”,最后你對它完成此工作的效率估計得沒譜,也根本不知道有何更高效的途徑,最后當老板問你還有多大性能的優化空間時,你只能祈禱編譯器各類優化選項的恩澤,而不敢拍著胸脯說硬件性能可以被榨干。
還有一些同學將致力于長期的嵌入式生涯,他們把這當做一種樂趣,或者希望將來自己能系統地掌握,那么BSP將會長期伴隨他們。對于BSP的開發,沒有扎實的體系結構知識將是寸步難行的,多的道理也就不用再強調了。
回到起篇的那個問題上,那么就仁者見仁智者見智了,呵呵。
轉自:www.embedhq.org |
|