磁場(chǎng)檢測儀的嵌入式軟件和硬件協(xié)同開(kāi)發(fā)模式

3.2 引入版本控制器實(shí)現代碼合并
引入嵌入式操作系統后,每個(gè)嵌入式軟件開(kāi)發(fā)人員只需負責一個(gè)或若干任務(wù)。通過(guò)引入源代碼控制軟件,可以實(shí)現嵌入式軟件代碼的整合和集中備份。其中,SVN是BitNami Redmine Stack一鍵式安裝模式中默認安裝的版本控制器。通過(guò)SVN的使用,開(kāi)發(fā)人員每天回到實(shí)驗室,通過(guò)SVN更新整個(gè)項目代碼,然后用Source Insight開(kāi)始一天的代碼編寫(xiě)工作。下班前,使用IAR編譯平臺進(jìn)行代碼編譯,確認沒(méi)有編譯錯誤后,再把自己修改過(guò)的代碼上傳到SVN中。上傳代碼時(shí),SVN會(huì )自動(dòng)檢測代碼是否存在沖突(如果兩個(gè)或多個(gè)開(kāi)發(fā)人員都改動(dòng)了某一文件的同一地方,SVN會(huì )提示存在沖突)。如果存在沖突,開(kāi)發(fā)人員可根據實(shí)際需要,協(xié)調解決沖突。
引入SVN后,每次代碼上傳到SVN后都會(huì )自動(dòng)更新生成一個(gè)版本號。當磁場(chǎng)檢測儀的嵌入式軟件各模塊聯(lián)調出現新問(wèn)題時(shí),通過(guò)比較類(lèi)軟件(如beyond compare),比較兩個(gè)版本代碼之間的差別,很多時(shí)候能夠快速找出問(wèn)題的關(guān)鍵所在。
4 下位機和上位機的協(xié)同開(kāi)發(fā)
Bus Hound可以用來(lái)分析USB總線(xiàn)數據協(xié)議、捕獲I/O動(dòng)作等。同時(shí),也可以傳送用戶(hù)編寫(xiě)的命令,實(shí)現對下位機的控制和調試。雖然上位機軟件還沒(méi)有完成,但定義好上位機和下位機的通信協(xié)議后,可以用Bus Hound模擬上位機軟件接收下位機軟件發(fā)送的USB數據,或發(fā)送USB數據給下位機軟件,從而實(shí)現上位機和下位機軟件的并行開(kāi)發(fā)。
在磁場(chǎng)檢測儀中,使用南京沁恒電子有限公司生產(chǎn)的CH375作為USB主控芯片,實(shí)現ARM和上位機的USB通信。實(shí)際編程中,使用了CH375的3個(gè)端點(diǎn),端點(diǎn)0用于控制傳輸,實(shí)現USB設備的枚舉;端點(diǎn)2 IN用于USB數據從下位機到PC的Bulk傳輸(一次最多64字節);端點(diǎn)2 OUT用于USB數據從PC到下位機的Bulk傳輸(一次最多64字節)。Bus Hound接收32字節磁場(chǎng)測量數據如圖3所示,利用Bus Hound控制CH373的USB端點(diǎn)2OUT,分32次控制接收下位機回傳1 KB的磁場(chǎng)點(diǎn)采集信號數據,最終通過(guò)PC的中頻磁場(chǎng)分析軟件實(shí)現中頻磁場(chǎng)的單點(diǎn)、平面和空間的磁場(chǎng)模擬分布顯示。

另外,端點(diǎn)1 IN用于USB數據從下位機到PC的中斷傳輸,端點(diǎn)2 OUT用于USB數據從PC到下位機的BULK傳輸(一次最多8字節)。在磁場(chǎng)檢測儀嵌入式軟件的調試中,利用端點(diǎn)1 IN發(fā)送調試指令和接收調試數據。
結語(yǔ)
Redmine、Proteus、μC/OS-II、SVN和Bus Hound的使用,提高了磁場(chǎng)檢測系統的開(kāi)發(fā)效率和開(kāi)發(fā)質(zhì)量,為磁場(chǎng)檢測系統高效、高質(zhì)量地完成開(kāi)發(fā)任務(wù)提供了堅實(shí)的基礎。在實(shí)際使用該協(xié)同開(kāi)發(fā)模式中,高?;蛑行∑髽I(yè)可以根據自身的實(shí)際需要進(jìn)行改動(dòng),如μC/OS-II換成μCl inux等其他嵌入式操作系統,SVN換成GIT等其他版本管理器,Proteus換成SkyEye等其他仿真平臺。最終,有效提高了高校研究生課程的教學(xué)效果以及高校和企業(yè)的項目開(kāi)發(fā)效率和開(kāi)發(fā)質(zhì)量。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論