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