首頁 > 文章中心 > 正文

          嵌入式芯片軟件設(shè)計探討

          前言:本站為你精心整理了嵌入式芯片軟件設(shè)計探討范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

          嵌入式芯片軟件設(shè)計探討

          摘要:隨著計算機(jī)和微電子技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)作為計算機(jī)應(yīng)用的一個重要領(lǐng)域,己深入到社會的方方面面。本文在ARM9硬件平臺的基礎(chǔ)上,加強(qiáng)操作系統(tǒng)的實(shí)時性,設(shè)計滿足數(shù)控磨床加工需求的軟件系統(tǒng)。

          關(guān)鍵詞:嵌入式芯片;軟件設(shè)計

          一、嵌入式軟件開發(fā)方式

          絕大多數(shù)的Linux或軟件開發(fā)都是以native方式進(jìn)行的,即本機(jī)開發(fā)、調(diào)試,本機(jī)的方式。這種方式通常不適合于嵌入式系統(tǒng)的軟件開發(fā),因?yàn)閷τ谇度胧较到y(tǒng)的開發(fā),沒有足資源在本機(jī)(即板子上系統(tǒng))運(yùn)行開發(fā)工具和調(diào)試工具。通常的嵌入式系統(tǒng)的軟件開發(fā)采用交叉編譯調(diào)試的方式。簡單的說,交叉編譯就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼,如在x86的PC機(jī)上生成ARM平臺的可執(zhí)行代碼。

          交叉編譯調(diào)試環(huán)境建立在宿主機(jī)(即一臺PC機(jī))上,對應(yīng)的開發(fā)板叫做目標(biāo)板。開發(fā)時使用宿主機(jī)上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進(jìn)制代碼,(這種可執(zhí)行并不能在宿主機(jī)上執(zhí)行,而只能在目標(biāo)板上執(zhí)行。)然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行。交叉開發(fā)技術(shù)己成為嵌入式軟件開發(fā)的主要方式。其開發(fā)步驟如下:在宿主機(jī)平臺上面編寫程序代碼;)使宿主機(jī)與目標(biāo)機(jī)連接,如使用交叉網(wǎng)線;使用交叉編譯器等工具編譯、連接應(yīng)用程序,生成可執(zhí)行代碼;目標(biāo)機(jī)掛載(mount)宿主機(jī)的方式(或?qū)⒖蓤?zhí)行代碼下載到目標(biāo)機(jī)):開發(fā)人員使用交叉調(diào)試器進(jìn)行調(diào)試;如果程序調(diào)試沒有發(fā)現(xiàn)異常,則轉(zhuǎn)至第(10)步;調(diào)試程序時發(fā)現(xiàn)錯誤,則利用交叉調(diào)試器定位錯誤;修改錯誤代碼;重復(fù)(3)—(9)步;將目標(biāo)機(jī)程序固化至目標(biāo)機(jī)上。

          二、數(shù)控系統(tǒng)軟件任務(wù)研究

          控軟件的功能大致可分為兩種,一種是控制功能,另一種是管理功能。其中,管理功能包括信息的輸入功能、輸出輸入輸出的處理功能、顯示功能和診斷功能,控制功能包括譯碼功能、刀具補(bǔ)償功能、速度控制功能、和位置控制功能。

          從任務(wù)的特征來看,與通用實(shí)時系統(tǒng)相比,數(shù)控系統(tǒng)有以下特點(diǎn):

          數(shù)控系統(tǒng)是一個混合任務(wù)系統(tǒng),其任務(wù)按是否具有實(shí)時性要求和周期性要求可分為:實(shí)時周期性任務(wù)、實(shí)時突發(fā)性任務(wù)和非實(shí)時任務(wù)。實(shí)時周期性任務(wù)是指嚴(yán)格以定長時間間隔定時觸發(fā),并且在規(guī)定的時間內(nèi)必須完成處理的任務(wù)。在數(shù)控系統(tǒng)中主要指加工過程中的插補(bǔ)控制、位置控制、數(shù)據(jù)采樣等需快速響應(yīng)的機(jī)床邏輯狀態(tài);實(shí)時突發(fā)性任務(wù)的發(fā)生是時間的隨機(jī)函數(shù),要求有很高的實(shí)時性,它包括機(jī)床緊急停止、系統(tǒng)故障中斷等;非實(shí)時性任務(wù)是指實(shí)時性要求很低的任務(wù),如:人機(jī)界面監(jiān)控,這類任務(wù)對于機(jī)床運(yùn)行和加工質(zhì)量的影響較小,其主要作用是讓操作者了解機(jī)床運(yùn)行狀況,增強(qiáng)機(jī)床的易操作性。

          任務(wù)之間具有相關(guān)性。數(shù)控系統(tǒng)的實(shí)時任務(wù)除了自身的時限要求以外,任務(wù)之間通常也不是完全獨(dú)立的,一般存在時序約束、資源約束等約束關(guān)系。

          系統(tǒng)在某一確定時刻的并發(fā)任務(wù)數(shù)量不多,與通用實(shí)時操作系統(tǒng)不同,數(shù)控系統(tǒng)的功能單一,因此調(diào)度程序幾乎不需要處理較大數(shù)量的并發(fā)任務(wù)。三、需求分析

          數(shù)控控制系統(tǒng)通過良好的人機(jī)交互界面,完成顯示工作狀態(tài)、操作人員進(jìn)行參數(shù)設(shè)定等任務(wù),主要有以下幾個方面的綜合要求:

          系統(tǒng)界面要求:圖形用戶界面可以實(shí)時顯示加工狀態(tài)、當(dāng)前時間、開機(jī)時間、加工時間、各個軸的坐標(biāo)位置,正在運(yùn)行的關(guān)鍵G代碼程序段等信息;

          系統(tǒng)功能要求:操作人員可以在符合國際標(biāo)準(zhǔn)的條件下,無需了解嵌入式數(shù)控系統(tǒng)的專用編程代碼,直接使用符合國際標(biāo)準(zhǔn)的G代碼和M代碼,即可編制數(shù)控程序;

          系統(tǒng)的運(yùn)行要求:操作人員可以根據(jù)需要點(diǎn)擊觸摸屏和鍵盤或機(jī)床面板按鈕,隨時監(jiān)控數(shù)控系統(tǒng)的工作狀態(tài);還可以通過參數(shù)設(shè)置實(shí)現(xiàn)對電機(jī)的控制,如電機(jī)的啟停,正反轉(zhuǎn)等等;

          異常處理要求:在正常生產(chǎn)條件下,每天運(yùn)行16小時,數(shù)控系統(tǒng)的無故障率P(t)≥99%,這要求其MTBF值(數(shù)控系統(tǒng)的平均無故障時間,是衡量可靠性的重要指標(biāo))大于3萬時;在硬件不受損壞的情況下,系統(tǒng)軟件要有較強(qiáng)的容錯能力。

          未來可能提出的擴(kuò)展要求:如能實(shí)現(xiàn)遠(yuǎn)程的聯(lián)網(wǎng)控制、故障自診斷等、加工仿真、重要數(shù)據(jù)的備份、中英文界面切換等。

          把上述提出的直觀需求轉(zhuǎn)化為具體的軟件功能需求,即為:

          完成電機(jī)的啟動,制動和換向控制,實(shí)現(xiàn)加工過程中的主軸、近給速度實(shí)時調(diào)整。實(shí)現(xiàn)六軸的高精度聯(lián)動,并通過插補(bǔ),完成工件的加工、磨削;在能夠滿足一定精度的前提下,實(shí)現(xiàn)自由曲線的粗插補(bǔ)和精插補(bǔ);

          圖形用戶界面要求:實(shí)現(xiàn)參數(shù)的圖形菜單輸入,加工過程的仿真,并實(shí)時顯示加工圖形和各軸坐標(biāo)值,用戶可以通過觸摸屏和鍵盤進(jìn)行參數(shù)設(shè)置,實(shí)現(xiàn)對電機(jī)的控制;實(shí)現(xiàn)伺服信號、開關(guān)量信號、和輔助信號的宏指令控制,且符合G代碼和M代碼功能定義;

          實(shí)現(xiàn)各功能電路的PLC控制,包括機(jī)床面板功能實(shí)現(xiàn)、主軸的起停、自動潤滑控制以及過載、超載、碰撞、掉電等緊急情況的處理;

          為了方便用戶操作,還應(yīng)提供操作提示和幫助文檔,同時,系統(tǒng)具有一定的抗干擾能力,即使受到干擾使系統(tǒng)控制失靈或程序運(yùn)行異常時,也能夠從錯誤或故障中恢復(fù),保證系統(tǒng)的正常工作。

          從以上功能需求分析得知,一個功能滿足六軸數(shù)控磨削系統(tǒng)基本需要的系統(tǒng),必須包括以下幾個模塊:電機(jī)控制、圖形界面、譯碼、PLC、CAN通訊、硬件驅(qū)動等。

          四、模塊劃分

          模塊劃分的一條原則是盡量降低軟件模塊間的禍合度,高禍合度的系統(tǒng)是很難維護(hù)的。一處的修改引起另一處甚至更多處的變動。藕合度低的軟件可以很容易被重用、維護(hù)和擴(kuò)充。另一條原則是提高軟件的內(nèi)聚性,如果一個軟件的模塊只實(shí)現(xiàn)一個功能,那么該模塊具有高內(nèi)聚性。高內(nèi)聚性的軟件更容易維護(hù)和改進(jìn)。判斷一個模塊是否有高的內(nèi)聚性,是看能否用一個簡單的句子描述它的功能。如果用了一段話或者需要使用類似“和”,“或”等連詞,則說明需要將該模塊細(xì)化。只有高內(nèi)聚性的模塊才可能被重用。遵循上述原則,將系統(tǒng)軟件劃分為如圖1所示的子模塊。

          嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,它的出現(xiàn)大大提高了嵌入式系統(tǒng)開發(fā)的效率,減少了系統(tǒng)開發(fā)的總工作量,而且提高了嵌入式應(yīng)用軟件的可移植性。

          本系統(tǒng)采用了嵌入式操作系統(tǒng):Linux。系統(tǒng)各模塊在Linux的統(tǒng)一控制管理下有效的協(xié)調(diào)的工作。由圖1可知,本系統(tǒng)軟件主要由以下幾個功能模塊組成:

          設(shè)備驅(qū)動模塊、譯碼模塊、圖形界面模塊等。這些模塊在操作系統(tǒng)的管理調(diào)度下協(xié)調(diào)一致的運(yùn)行。

          五、軟件初始化及總程序流程

          本系統(tǒng)采用s3c2410(ARM9核)作為控制核心,在用戶的應(yīng)用程序之前,需要有一些專門的代碼完成對系統(tǒng)的初始化。由于這類代碼直接面對ARM9處理器內(nèi)核和硬件控制器,一般都使用匯編語言完成。系統(tǒng)上電或復(fù)位后,程序從位于地址0x0的ResetExceptionVector處開始執(zhí)行(這里放置Bootloader的第一條指令:bResetHandler),跳轉(zhuǎn)到標(biāo)號為ResetHandler處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時器,關(guān)中斷,初始化PLL和時鐘,初始化存儲器系統(tǒng)。執(zhí)行完以上程序后,系統(tǒng)進(jìn)行堆棧和存儲器的初始化。系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ堆棧也必須設(shè)置。如果系統(tǒng)使用了外設(shè),則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。然后是初始化有特殊要求的端口和設(shè)備,初始化應(yīng)用程序的運(yùn)行環(huán)境。最后是調(diào)用主應(yīng)用程序:

          數(shù)控系統(tǒng)的應(yīng)用程序初始化流程如圖2所示:

          系統(tǒng)初始化以后,程序的大體流程為:首先加載G/M代碼解釋器、初始化參數(shù),然后創(chuàng)建人機(jī)界面,G/M代碼經(jīng)解釋后,再調(diào)用響應(yīng)的例程完成I/O控制、插補(bǔ)、位置控制等,最后調(diào)用底層硬件的控制例程,完成對電機(jī)的控制。

          參考文獻(xiàn)

          [1]劉艷霞,李淑芬.基于ARM的嵌入式數(shù)控系統(tǒng)[J].微計算機(jī)信息.2006,22

          [2]武漢理工大學(xué).基于ARM和DsP的嵌入式數(shù)控系統(tǒng).中華人民共和國國家知識產(chǎn)權(quán)局,200610124742.0,2007-03-28

          [3]金展,傅建中,陳子辰基于ARM的嵌入式數(shù)控系統(tǒng)設(shè)計[J].機(jī)電工程,2005,22(2)