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