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