文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.09.008
中文引用格式: 楊劍波,趙東標,劉念. 基于OMAP3530數(shù)控系統(tǒng)的雙核通信設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(9):33-35,38.
英文引用格式: Yang Jianbo,Zhao Dongbiao,Liu Nian. Design of dual core communication based on OMAP3530 CNC system[J].Application of Electronic Technique,2015,41(9):33-35,38.
0 引言
OMAP3530是TI公司推出的一款高性能移動應(yīng)用處理器[1]。OMAP3530在單一芯片上無縫集成一個600 MHz ARM Cortex-A8內(nèi)核和一個具有卓越運算能力和超低功耗的430 MHz TMS320C64x+ DSP內(nèi)核,單個ARM在人機交互、網(wǎng)絡(luò)通信、多任務(wù)處理上有著很大的優(yōu)勢,但是其計算能力有所不足;DSP有著強大的計算和數(shù)據(jù)處理能力,但是在任務(wù)分配上難度較大。因此,充分利用兩個處理器各自的優(yōu)勢,把ARM和DSP結(jié)合起來使用能夠大大提升數(shù)控系統(tǒng)的性能。本數(shù)控系統(tǒng)使用ARM+FPGA上下位機控制[2],上位機由ARM Cortex-A8控制核心和DSP運算核心組成,完成譯碼、粗插補、加減速控制、圖形界面顯示等任務(wù);下位機由FPGA電機控制子系統(tǒng)和CPLD輔助控制子系統(tǒng)組成,完成精插補、系統(tǒng)I/O輸入輸出、位置控制等任務(wù)。為了能夠使ARM核和DSP核更好地協(xié)調(diào)配合,共同完成實時多任務(wù)的數(shù)控系統(tǒng)軟件體系,本文使用DSPLINK進行雙核之間的通信,設(shè)計了一種地址指針傳遞的雙核通信方式,大大提升數(shù)控系統(tǒng)的性能。
1 數(shù)控系統(tǒng)硬件平臺設(shè)計
1.1 上位機系統(tǒng)設(shè)計
上位機由集成了控制核心ARM和運算核心DSP的OMAP3530處理器組成,如圖1所示,ARM、 DSP、存儲器以及各種通信接口均連接在片內(nèi)L3總線上,其中ARM用于數(shù)控系統(tǒng)的控制和資源管理,完成NC代碼譯碼、MST控制、數(shù)控圖形界面管理以及人機交互等任務(wù);DSP用于數(shù)控系統(tǒng)的高密度的計算,完成數(shù)控系統(tǒng)粗插補、刀具補償以及加減速控制等需要大量運算的任務(wù),為數(shù)控系統(tǒng)的實時性提供有力的保障。上位機提供豐富的外設(shè)資源,外接的256 MB LPDDR為數(shù)控系統(tǒng)軟件提供大量的內(nèi)存空間,256 MB NAND Flash用于存儲數(shù)控系統(tǒng)文件和一些運行相關(guān)的參數(shù)文件;外接的LCD顯示器用于數(shù)控系統(tǒng)圖形界面的顯示;MMC/SD以及USB接口用于數(shù)控系統(tǒng)加工程序代碼的輸入以及數(shù)控系統(tǒng)的升級等;標準RS232接口用于與PC進行遠程通信;此外片上還集成以太網(wǎng)的接口,用于遠程通信、診斷和操作功能的實現(xiàn)。上位機通過GPMC(系統(tǒng)外部總線)與下位機進行通信;向下位機發(fā)送粗插補和速度控制的信息,為下位機進行精插補做準備,并接收下位機傳輸?shù)臄?shù)控系統(tǒng)按鍵信息、I/O輸入和位置控制信息并及時作出響應(yīng)。
1.2 下位機系統(tǒng)設(shè)計
下位機由大規(guī)??删幊踢壿嬁刂破鱂PGA和CPLD構(gòu)成,電機控制子系統(tǒng)FPGA采用Altera公司ACEX系列的EP1K100QC208,片上有豐富的邏輯資源和I/O端口資源,可以為數(shù)控系統(tǒng)提供大量的脈沖發(fā)生、脈沖計數(shù)和I/O控制能力。采用FPGA作為電機控制子系統(tǒng)大大簡化了硬件電路,具有高速、并行處理、穩(wěn)定性高、抗干擾性強等特點。輔助控制子系統(tǒng)CPLD選用Altera公司EPM1270芯片,完成FPGA的配置、矩陣鍵盤的控制以及外擴系統(tǒng)I/O端口的控制功能。本文使用一種改進的串行配置策略對FPGA進行配置[3],如圖2所示,CPU把存放在NAND Flash中的配置數(shù)據(jù)通過外部系統(tǒng)總線發(fā)送到CPLD,然后CPLD產(chǎn)生配置時序和串行化數(shù)據(jù)并將配置數(shù)據(jù)傳輸給FPGA。采用這種改進的串行配置方式,可以大大降低硬件電路的配置成本。另外,CPLD芯片具有編程加密位,使CPLD內(nèi)部的電路邏輯無法被讀出,所以同時提高了數(shù)控系統(tǒng)的保密性。
2 雙核握手機制的設(shè)計
數(shù)控系統(tǒng)多任務(wù)是由兩個處理器(ARM和DSP)共同完成的,雙核之間的任務(wù)分配和通信在共同完成數(shù)控系統(tǒng)任務(wù)要求時尤為重要。本文使用DSPLINK對雙核的通信進行設(shè)計和開發(fā)[4]。其原理框圖如圖3所示,它把ARM與DSP之間的物理電路連接特性抽象化為通用的API,這樣開發(fā)者無需從電路底層做起,而可以更專注于應(yīng)用程序的設(shè)計。
DSPLINK集成了很多供雙核通信使用的組件,常用的有PROC、POOL、MSGQ、MPCS等,本文對雙核通信的設(shè)計是基于MSGQ組件開發(fā)的。通過DSPLINK進行雙核通信的機理是雙核通過對共享內(nèi)存區(qū)域的數(shù)據(jù)分別進行讀寫,達到雙核數(shù)據(jù)信息共享的目的。本文將集成在片內(nèi)的64 KB片內(nèi)RAM作為共享內(nèi)存區(qū)域,使用片內(nèi)的RAM進行數(shù)據(jù)的傳輸可以增加數(shù)據(jù)傳輸?shù)男什⑶液喕瘮?shù)據(jù)傳輸?shù)能浖Y(jié)構(gòu)。MSGQ[5](message queue)主要負責ARM端和DSP端可變長度短消息的交互,更為重要的是其支持高頻率的處理器之間信息的交互,這在實時多任務(wù)的數(shù)控系統(tǒng)中十分重要,為數(shù)控系統(tǒng)的實時性提供有力的保障,該組件會把要發(fā)送的數(shù)據(jù)包裝成一個message,雙核之間以message的形式進行通信。本設(shè)計的基于MSGQ的雙核通信框圖如圖4所示,ARM和DSP可以通過指令MSGQ_put()和MSGQ_get()向消息隊列中寫入和讀取數(shù)據(jù),通過ARM和DSP高頻率地對共享內(nèi)存區(qū)域的讀寫,達到雙核通信的目的。
在數(shù)控程序運行過程中,ARM和DSP通過共享內(nèi)存區(qū)域傳遞互相所需要的數(shù)據(jù),但是數(shù)控程序一般較為復雜,message存放在片內(nèi)64 KB RAM中,故一次性傳遞的數(shù)據(jù)大小受到很大限制,而且傳遞數(shù)據(jù)所花費的時間也會大大增加,這樣對實時性要求很高的數(shù)控系統(tǒng)來說是十分不利的。本文對message消息的內(nèi)容進行了優(yōu)化,將傳遞數(shù)控相關(guān)數(shù)據(jù)改為傳遞相關(guān)指針變量,這樣不僅節(jié)省了message消息隊列的空間大小,很好地利用了片內(nèi)RAM的有效空間,并且很大程度上提升了雙核通信的效率,從大量繁瑣的數(shù)控程序的傳遞到數(shù)控程序和數(shù)據(jù)所在地址的傳遞,傳遞的內(nèi)容得到了優(yōu)化并且軟件框架也得到了大大的減化[6]。
本文將一個包含許多指針變量的struct變量包裝成一個message,ARM和DSP通過對struct變量中相關(guān)成員參數(shù)進行修改,達到雙核協(xié)調(diào)合作共同完成數(shù)控系統(tǒng)軟件工作的要求。設(shè)計的struct變量如下:
struct message
{
(Uint32) MGSQ_ID;//消息隊列的ID號,
用來標識制定的message進行通信
(Uint32) arm_enable;//ARM使能標志位,
允許ARM使用芯片內(nèi)部總線
(Uint32) dsp_enable;//DSP使能標志位,與ARM使能
標志位相反,使同一時刻只有一個處理器
使用內(nèi)部總線,避免沖突
(Uint32) *arm_start_read;//ARM待讀取數(shù)據(jù)起始地址的
指針變量
(Uint32) *arm_start_write;//ARM待寫入數(shù)據(jù)的起始地址的
指針變量
(Uint32) *arm_end_read;//ARM讀取數(shù)據(jù)截止地址的
指針變量
(Uint32) *arm_end_write;//ARM寫入數(shù)據(jù)截止地址的
指針變量
(Uint32) *dsp_start_read;//DSP待讀取數(shù)據(jù)起始地址的
指針變量
(Uint32) *dsp_start_write;//DSP待寫入數(shù)據(jù)的起始地址的
指針變量
(Uint32) *dsp_end_read;//DSP讀取數(shù)據(jù)截止地址的指針變量
(Uint32) *dsp_end_write;//DSP寫入數(shù)據(jù)截止地址的指針變量
(Uint32) armcacheover;//ARM 256 KB一級緩存區(qū)滿標志位,
用于刷新LCD顯示數(shù)據(jù)
}message1;
數(shù)控程序運行時通過引用特定的消息隊列號來進行雙核通信,通過設(shè)置ARM和DSP使能標志位使得在同一時間只有一個處理器使用內(nèi)部總線,避免了數(shù)據(jù)傳輸沖突;數(shù)控軟件運行時會有許多子任務(wù),產(chǎn)生很多中斷,每當產(chǎn)生中斷時就相應(yīng)修改對應(yīng)的指針變量,ARM和DSP通過指針變量傳遞相應(yīng)的地址信息達到雙核通信的目的,這相比通過message進行數(shù)控數(shù)據(jù)的傳輸簡化了很多的工作量,使程序更精簡,運行效率更高。
3 雙核通信整體框架設(shè)計
數(shù)控系統(tǒng)是典型的多任務(wù)實時控制系統(tǒng)[7],針對多任務(wù)特性選用中斷服務(wù)程序進行多任務(wù)之間的切換;針對實時特性選用時間片輪轉(zhuǎn)法設(shè)定相應(yīng)時間片大小,限定各個子任務(wù)的運行時間,從而在宏觀上達到各個子任務(wù)的并行運行。此外,下位機接收矩陣鍵盤、系統(tǒng)I/O輸入、手輪和編碼器的反饋后向上位機通過系統(tǒng)外部總線發(fā)出中斷,上位機響應(yīng)中斷后對插補程序作相應(yīng)的調(diào)整,后再把數(shù)據(jù)傳遞給下位機使其完成精插補。數(shù)控系統(tǒng)整體軟件框架圖如圖5和圖6所示,具體的工作步驟如下:
(1)ARM端首先啟動,在運行Linux系統(tǒng)后向DSP加載DSP啟動所需要的執(zhí)行程序,等待啟動DSP。
(2)在多任務(wù)運行時,ARM和DSP需要分時共用內(nèi)部總線,因此通過設(shè)置arm_enable和dsp_enable來確定內(nèi)總線的使用權(quán)。
(3)ARM端需要執(zhí)行譯碼、MST控制和人機界面的顯示任務(wù),選用時間片輪轉(zhuǎn)法進行控制,設(shè)定每個時間片為1 ms,循環(huán)執(zhí)行這3個子程序,其中人機界面的顯示任務(wù)實時性要求不高,每次執(zhí)行的數(shù)據(jù)暫時存放在256 KB一級緩存區(qū)中,等待armcacheover置位后再刷新LCD顯示屏;在一個加工程序段中最多只能有一個M、S、T功能,通過設(shè)置相應(yīng)標志位,在程序段未結(jié)束時取消MST控制的時間片。
(4)DSP以1 ms粗插補周期為中斷周期接收ARM譯碼后的數(shù)據(jù),進行粗插補、刀具補償和加減速控制的任務(wù)。
(5)FPGA同樣以1 ms的周期產(chǎn)生中斷信號,接收DSP傳送的精插補所需的數(shù)據(jù),進行精插補的工作。
(6)為了數(shù)控程序能夠順序執(zhí)行,在每個數(shù)控程序子任務(wù)執(zhí)行完后必須相應(yīng)地更改struct成員的信息。
(7)數(shù)控程序執(zhí)行完畢后,首先會關(guān)閉message通信通道,ARM與DSP斷開連接。
4 結(jié)束語
本設(shè)計采用ARM+DSP雙核完成上位機任務(wù),CPLD+FPGA完成下位機任務(wù)的模式,在提升了數(shù)控系統(tǒng)的加工質(zhì)量和效率的同時,也提升了數(shù)控系統(tǒng)的實時性和保密性;設(shè)計了一種新的雙核通信方式,大大提高了雙核通信的效率,為數(shù)控系統(tǒng)雙核任務(wù)分配提供軟件基礎(chǔ);通過合理進行數(shù)控任務(wù)的分配,可以做到譯碼與粗插補和精插補的并行運行,使得連續(xù)小線段的譯碼速度大于加工速度,實現(xiàn)精插補脈沖序列無間斷輸出,大大改善零件表面光潔度和加工精度,為高精度、高性能數(shù)控系統(tǒng)的發(fā)展提供一定參考。
參考文獻
[1] Instruments T.OMAP35x applications processor:Technical reference manual(Literature No. SPRUF98O)[Z].Dallas,Texas,2010.
[2] WANG L,SU B,DONG S,et al.Double CPU open CNC system based on programmable multi-axis controller[J].Computer Integrated Manufacturing Systems Beijing,2002,8(1):69-72.
[3] 張金霞,趙東標.數(shù)控系統(tǒng)中精插補芯片F(xiàn)PGA的配置[J].機械與電子,2007(3):30-32.
[4] Instruments T.DSP/BIOS LINK user guide-version 1.65.00.02[Z].Reference:LNK,58,2010.
[5] LUAN X F.Debugging method based on OMAPL138 dual- core system[J].Microcontrollers & Embedded Systems,2012,12(1):9.
[6] 林淦,劉建群,許東偉,等.OMAPL138的雙核通信設(shè)計[J].機床與液壓,2014(22);056.
[7] 陳蔚芳,王宏濤,薛建彬,等.機床數(shù)控技術(shù)及應(yīng)用[M].北京:科學出版社,2006.