在嵌入式設備上構建基礎應用框架

    以前是在做電力終端設備的小公司,現在去了一家只做OEM的硬件廠家。離開了管理崗位,去小公司做起了開發。個人感覺,挺好。很輕鬆,可以安心搞技術,做一些實實在在的事情了。


    由於在這家硬件單位,只有自己做應用程序的。接了幾個項目,都是以最快的速度完成的,所以代碼的可重用性比較差。就算是有類似功能的,也都是直接拷貝上一個項目中的部分代碼後,修改一下,來實現新的項目的。還好,這些項目沒有要我一直維護下去,直接給源代碼給了客戶,他們有什麼需求,自行改進。 考慮到項目一多起來,光是拷貝代碼和調試,自己一個人可能都忙不過來。嚴重的是,只要有一個廠家的代碼出了問題,那就沒辦法應付了。最終決定,就算是自己一個人做項目,也要構建一個基礎的應用框架。至少在代碼維護上,不會顧此失彼。如果這個框架做的好的話,應該以後的工作量就會非常少了。做一個框架是有意義的。


    由於涉及到Ti的DSP的應用程序和嵌入式linux的應用程序。要記住全部的應用和涉及,對於我這樣的記憶力差的人,是很難的。所以,要有足夠的文檔來記錄相關的設計和過程。還好,有很多的工具可以使用,而且是開源的。我對軟件的偏愛是,使用正版,使用免費的。除非不得以,不使用盜版軟件。我使用了svn來管理我的代碼庫,和使用UML來編寫我的設計文檔。一個好的代碼編輯工具是快速編碼的必不可少工具,我使用eclipse for c++,至少編寫完的代碼,文字錯誤基本很少,他的自動補齊功能,可以減少你敲擊鍵盤的次數。雖然自己在盲打方面,自認爲已經非常快了。在去年,DSP程序開發我還是使用CCS3.3. 後來合衆達給我提供了份CCS4的拷貝,當時我很興奮,因爲CCS4是基於eclipse框架的。但是安裝完成後,很沮喪。因爲CCS4很不好用,而且反映遲鈍。後來還是換回了CCS3. 但是個人感覺,基於eclipse的CCS應該是一個趨勢,現在又安裝了一個CCS5,感覺比CCS4進步多了,但是調試的效率比較低下。希望Ti能夠快速發佈好用的CCS工具。


   磨刀不誤砍柴工,尋找一些好的工具是非常有必要的。一般地應用中, DSP主要應用是進行採樣,控制和數值計算,而嵌入式linux主要是作爲通訊設備和數據處理,以及人機交互。DSP中除了典型的數據採集與控制邏輯外,剩餘的就是通訊,還有一些通用算法的功能。TI在DSP系列產品上,提供了一個系統級的軟件套件,叫做DSP/BIOS(CCS5中已經改名爲SYS/BIOS,是爲了兼容arm系列產品的應用)。雖然我接觸到的技術人員,基本上很少有人使用這個軟件套件,但是我很樂意使用,並研究它。這個套件提供了基於硬件的高級抽象,它有線程的概念,有線程通訊的概念。這些都爲開發高可靠的DSP應用提供了方便。因爲我可以基於BIOS的任務來做我自己的應用,而不用關心CPU的具體調度策略了。 嵌入式linux的開發就要考慮實時性,可靠性,已經用戶需求的多變性了。能借用各種各樣的開源軟件是我在嵌入式linux系統開發的最大受益,不但穩定,功能齊全。而且通過研究,也讓自己學習和長進。非常感謝這些典型的項目開發人員:Qt,sqlite,mysql,tinyxml,以及centos,ubuntu, gcc, gmake 等等,當然vmplayer也是必不可少的。


  沒有把DSP完全的獨立出來,姑且稱之爲DSP子系統吧。將DSP進行劃分層次。一層是對芯片級的操作的封裝,包括中斷相應和數據接口。一層是數據層。如何組織數據對,DSP至關重要。抽象出典型的數據模型。包括參數區,緩衝區,數據區,通訊緩衝區等等。一層是應用層,如 維護口的人機交互,如和上位機的通訊協議,以及下位機的數據採集。當然還要有算法庫在裏面。


  嵌入式子系統更像是一個大型的應用服務器。它有齊全的各個子模塊。數據存儲,日誌,任務管理等等。同時,還需要從分層的角度對它進行交叉的劃分。


  認識到,開發可靠的程序,沒有測試是不可能的。幸虧google有一個免費的開源單元測試框架google c++ testing framwork。

 

=================================

  本來是想將自己編寫的自動構建的Makefile文件拿出來分享的,但是又不知道從何說起。於是就胡亂寫了一通。後續好好整理後,再拿出來分享。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章