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