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