[推薦]嵌入式內功.葵花寶典
欲練神功,揮刀自宮
話說東方不敗得到《葵花寶典》以后,迫不及待地翻開第一頁,面對“欲練神功,引刀自宮”八個大字倒吸了一口涼氣。苦苦思索了七天七夜之后終于痛下決心,喀嚓一聲,引刀自宮。強忍著身體的劇痛,懷著凝重的心情,東方不敗緩緩翻開了第二頁,映入眼簾的又是八個大字:“若不自宮,也能成功”,東方不敗當即暈死過去……好不容易,東方不敗終于醒來了,他想反正都自宮了,還是趕緊練功吧。於是他又緩緩的翻開第三頁,又是八個大字:“即使自宮,未必成功”。當場東方不敗又再昏死過去。
過了幾天,東方不敗再度醒來,他憤憤不平的繼續往下翻,他發現整本《葵花寶典》都在討論成功與自宮的關系。這時東方不敗已經接近崩潰邊緣,在翻到倒數第二頁時,他終于看到了結論:“若要成功,不要自宮”。這時東方不敗又快昏過去了,但他心里想:不行,我要把最后一頁看完,那是我最后的希望,于是他還是緩緩翻開最后后頁,定眼一看:“如已自宮,就快進宮”。旁邊還有幾行小字:以上純屬開玩笑,如想練得神功,下輩子好好用功! 這時東方不敗已經撐不住了,當下吐血而亡,一代梟雄就此殞落。
在我們這個時代,有太多的人想走捷徑,想練“葵花寶典”,結果卻落得一場空。蓋世神功我們要練,不過要踏踏實實地練,不能走自宮化為"人妖"的道路。嵌入式內功我們必須練,而且要踏踏實實一招一勢地練。
技術顧問:徐老師:18948782706 qq:2269819323
現在大部分處理器生產商在銷售處理器的同時,還會提供開發環境IDE比如TI的CCS和AD的Visual Dsp++。另外你還可以從這些公司或其它專門開發DEMO板的公司購買開發板。這些DEMO一般會提供比較豐富的Demo程序,比如音視頻捕捉及顯示、I2C實例、DMA實例、CACHE實例等。這些DEMO程序基本上由應用處理器生產商提供的底層驅動程序庫(driver lib)經二次開發出來的。可見,對于一般的嵌入式底層軟件開發人員來說,基本就不用寫什么真正意義上的驅動程序,(除非你是為處理器生產商寫底層驅動的,畢竟這種大牛不多,也不屑于我的文章),只要參照DEMO程序或使用驅動程序接口開發適合自己項目的FIRMWARE就可以了。這種開發已經演變成驅動應用而不是驅動開發,其難度相比從零開始的驅動開發已經大大降低。我們國內很大部分“驅動開發者”都在從事這樣的工作!不過也確實沒辦法,如果處理器生產商不提供已經屏蔽硬件特性并降低底層軟件開發難度的驅動程序庫,估計許多的“驅動開發者”即使磕破頭皮絞盡腦汁也未必能搞定那些底層驅動。可見,要搞真正的驅動開發,還是要到大公司去混!
一般來說,從事消費類或通信類產品研發的底層軟件開發的人員,如果不熟練掌握DMA、cache、PCI、代碼優化(包括編譯器優化)等技術,那么他充其量還只是停留在應用軟件或簡單系統開發的層面,就好比搞VC編程的還沒很好掌握MFC一樣,雖然進入了應用軟件開發的殿壇,但還沒有把握這個領域的關鍵技術。這幾個東西在對嵌入式底層軟件軟件開發的人來說至關重要,可以說是高手和普通者的分水嶺。現在,一些高端的流媒體產品如手機研發、游戲設備開發、IPTV、數字視頻錄像機(DVR)、數字視頻廣播(DVB)、機頂盒、視頻會議系統、網絡監控攝像頭以及可視電話,為了能夠處理大量的音視頻輸入輸出數據流,往往采用單一MPU(比如ARM和Motorola的PPC/Coldfire/68K)、單一DSP(專用媒體處理器TI C64x/DM642、AD Blackfin 5xx、Equator的BSP15以及Philips TriMedia)或MPU+DSP組合的單核多芯或單芯多核的處理結構(TI OMAP/DaVinci和AD BF561)作為核心處理模塊(一般的MCU主要應用于控制目的,不具備大批量數據處理的能力,所以比較少被應用于這些產品)。另外,這些處理器為了能進一步提升數據處理能力往往都會配備DMA、CACHE、PCI等外設或接口(見下圖,DMA+CACHE+PCI的協作極大地提高了處理器與處理器之間以及處理器與外設的交互能力)。由此可見DMA、CACHE、PCI對于從事消費類或通信類研發的底層軟件開發的重要性可想而知(搞定了這些復雜有難度的外設,其它的也不在話下了:))。
*DMA:它是個很好“奴才”。"主子"CPU讓它干什么它就干什么,任勞任怨。那些搬移大量外圍設備數據的“體力活”它統統包下,干完之后馬上中斷告訴"主子",而且兩者在同時使用數據總線時,卑微的“奴才”會讓著"主子"。這樣的好“奴才”誰會不要,誰會不喜歡呢?(DMA是很基本的東西,后面介紹的cache和PCI控制器也都會用到)。
*Cache:它是“加速器”。在目前的IT行業,外圍內存在訪問速率上與處理器嚴重脫節一直是不可回避的“瓶頸”問題。cache的引入無疑極大地緩解了這個問題。它使得處理器訪問cache就如同訪問外部內存一樣快速,極大地提高了CPU處理數據的效率,所以被廣泛地應用于流媒體設備中。
*PCI:當在一塊板子上有多塊處理器時,它們之間大量的數據交互就是可能存在問題,比如MPU從網絡接收的大塊連續數據發送給DSP處理時,就需要有足夠承載能力及帶寬的總線。PCI總線一般33M最大66M帶寬能力足以應付決大部分的應用。PCI給處理器之間架上了橋梁,使得MPU+DSP的應用設計成為現實。
*Optimization:選擇合適的處理器并設計能夠充分發揮外設性能的板子是項目負責人和硬件人員干的事情,而軟件開發人員要干的就是編寫能夠充分發揮硬件功能的高效代碼。代碼優化方法就是其中用于提高系統性能和代碼效率的有效技術,是任何嵌入式開發人員都要努力掌握的技能。
技術交流qq:2269819323
歡迎大家進入嵌入式交流群244313073共同交流、學習