協同開發模式在磁場檢測儀開發中的應用
由于采用Proteus和IAR聯調,即在IAR集成開發環境中進行代碼調試,運行和調試結果直接在Proteus中顯示,因此不用等到樣板制作完畢再開始嵌入式軟件的調試,從而做到嵌入式軟件和硬件的同步開發。
另外,相對于直接在樣板上調試,Proteus更容易判斷出某個功能不能實現的具體原因,是由于硬件的故障還是軟件的編程問題引起的,從而避免了誤將硬件故障認為是軟件編程問題的情況發生,大大提高開發效率。另一方面,在磁場檢測儀LCD顯示驅動程序的調試中,利用Proteus提供的邏輯分析儀虛擬儀器測量LCD驅動時序,可以非常直觀地調試LCD的驅動程序,快速地完成LCD驅動程序的編程和調試。
由于磁場檢測儀中每一版本的PCB都只焊接制作了3塊樣板,大部分調試都在Proteus上完成。所以,用Proteus代替實際樣板調試,可以很大程度地減少元件的購置,減少樣板的制作;同時,也大大減少了JTAG仿真器、示波器、邏輯分析儀等調試設備的購置。為磁場檢測系統開發節約大量的資金和寶貴的開發時間。
3 嵌入式軟件各模塊協同開發
3.1 引入嵌入式操作系統實現任務分解
現在,國內低端手機設計上廣泛使用聯發科技MTK的方案,將手機芯片和手機軟件平臺預先整合到一起。MTK的整套軟件系統十分龐大且復雜,但其架構是引入Nucleus嵌入式操作系統,將手機軟件分解成多個任務并行開發。
MTK使用了Nucleus實時操作系統,但在其上做了內核抽象層的封裝,以適應最終生產廠商選擇其他實時操作系統的需要(如選擇替換為ThreadX)。Nucleus、ThreadX和μC/OS-II這3個嵌入式操作系統功能上很類似,但商用license是不一樣的。其中μC/OS-II應用在市場上銷售的產品,是需要購買license的;而針對高校的教學和研究,是免費的。這也是μC/OS-II廣泛被高校教師和學生認知的一個重要原因,同時這也是我們優先采用μC/OS-II作為磁場檢測儀的嵌入式操作系統的一個重要原因。
目前,ARM程序的規模一般都很大,需要多人協同開發。由于不帶嵌人式操作系統的程序,僅依靠全局變量和函數傳遞信息,程序耦合度十分高,很難實現多人的協同開發。引入嵌入式操作系統后,各個任務間通過消息郵箱、消息隊列或信號量同步,大大降低程序的耦合度,極大地提高團隊協同開發的效率。
引入嵌入式操作系統后,一般將程序分成幾個任務(線程),分別由專人負責。嵌入式軟件開發流程中,首先是對電路板和嵌入式操作系統進行初始化,接著創建若干任務,剩下的工作就是編寫每個任務或中斷處理的程序代碼。圖2為磁場檢測儀的中斷和任務間的同步關系框架圖。本文引用地址:http://www.104case.com/article/148266.htm
3.2 引入版本控制器實現代碼合并
引入嵌入式操作系統后,每個嵌入式軟件開發人員只需負責一個或若干任務。通過引入源代碼控制軟件,可以實現嵌入式軟件代碼的整合和集中備份。其中,SVN是BitNami Redmine Stack一鍵式安裝模式中默認安裝的版本控制器。通過SVN的使用,開發人員每天回到實驗室,
通過SVN更新整個項目代碼,然后用Source Insight開始一天的代碼編寫工作。下班前,使用IAR編譯平臺進行代碼編譯,確認沒有編譯錯誤后,再把自己修改過的代碼上傳到SVN中。上傳代碼時,SVN會自動檢測代碼是否存在沖突(如果兩個或多個開發人員都改動了某一文件的同一地方,SVN會提示存在沖突)。如果存在沖突,開發人員可根據實際需要,協調解決沖突。
引入SVN后,每次代碼上傳到SVN后都會自動更新生成一個版本號。當磁場檢測儀的嵌入式軟件各模塊聯調出現新問題時,通過比較類軟件(如beyond compare),比較兩個版本代碼之間的差別,很多時候能夠快速找出問題的關鍵所在。
評論