葉 莖,張躍華(.武漢軟件工程職業學院電子工程學院,湖北武漢 43005;.西門子中國研究院,湖北武漢 430000)
一種基于LINUX的雙核通信BSP系統設計與實現
葉 莖1,張躍華2
(1.武漢軟件工程職業學院電子工程學院,湖北武漢 430205;2.西門子中國研究院,湖北武漢 430000)
隨著無線通信技術的發展,軟件與硬件成本不斷增加,一種基于LINUX的數字中頻盤BSP(Board Support Package),即板級支持包系統,可以豐富基站設備軟件資源,并降低成本。系統分析了硬件結構、軟件模塊,描述了平臺支撐模塊、雙核通信模塊、數字信號處理模塊、雙核通信模塊的設計與實現。數據通信模塊提供一套訪問機制來進行數字中頻盤上ARM與DSP核間通信。由于CPU芯片包含ARM+DSP異步雙核心并且能共享CPU所有資源,因此數據通信模塊利用共享內存來完成通信功能。ARM與DSP通過對共享內存控制來進行交互,并以信號量保證其控制操作的完整性與正確性。該系統已經用于無線通信,獲得良好性能。
BSP;嵌入式;LINUX;雙核通信;ARM;DSP
隨著經濟的發展,物質生活水平的提高,人們對各種無線通信設施的要求越來越高,基站為無線通信的收發提供支撐作用,負責移動信號的接收和發送。數字中頻盤是基站信號控制的重要組成部分[1],是衡量基站質量核心標準之一,由中頻子系統、射頻子系統和收發子系統構成,實現信號從基帶到中頻,再到射頻的上下行控制功能。由于基站設備量產后軟件與硬件成本壓力變大,多數軟件基于VXWORKS操作系統,本文設計一套基于LINUX操作系統的雙核通信板級支持包,即BSP(Board Support Package)系統,用于數字中頻盤,以豐富基站設備的軟件資源,并降低成本。
數字中頻盤系統采用嵌入式系統[2],核心是嵌入式處理器、嵌入式操作系統和外圍設備。為了使CPU與操作系統能更好地協同工作,引入BSP系統來進行優化。BSP系統為應用程序提供訪問設備的接口,使其能更好地運行在嵌入式CPU上,屬于系統程序。同一款CPU的BSP技術,在不同的操作系統上,即使功能一樣,程序與接口定義卻是完全不同的;所以BSP系統必須基于操作系統的特性來設計,才能更好地為應用程序服務,提供穩定的接口。
BSP系統為上層應用提供底層設備的支持,主要功能是完成CPU和操作系統的初始化,提供外圍設備驅動程序[3]和硬件中斷程序[4],定制操作系統模塊功能;讓操作系統能夠運行在實時多任務環境下[5],并為應用程序提供訪問設備的接口。目前市場上有多種體系結構的嵌入式CPU,需求不同,配套的外圍設備也大不相同。對于嵌入式系統來說,不同的CPU對應不同的BSP,因此需要根據硬件環境需求,修改BSP程序以保證系統正常運行。
系統CPU選擇德州儀器公司TI(Texas Instruments)的OMAPL138[6]異步雙核處理器[7],包含ARM(Advanced RISC Machine)處理系統控制功能和DSP(Digital Signal Processing)處理數字信號功能[8]。如圖1所示,虛線框內為嵌入式數字中頻盤BSP系統的核心硬件結構設計,由TI公司的OMAPL138(ARM+DSP)、GC5330芯片構成。其中OMAPL138集成了高性能的型號為ARM926EJ-S的ARM核以及型號為TMS329C6748xDSP的DSP核,分別簡寫為ARM926、DSP6748。這是一個有健全操作系統支持、低功耗、用戶接口豐富的高性能混合應用處理器[9]。雙核架構設備提供了RISC(Reduced Instruction Set Computer)精簡指令集計算機功能和DSP數字信號處理功能,能通過多種方式進行ARM與DSP的通信,滿足控制要求。數字中頻盤的寬帶信號處理器芯片采用TI公司的GC5330芯片,它主要用于寬帶傳輸和接收信號。開發者可以直接采用TI公司提供的強大的軟件支持進行DSP與GC5330的交互處理,減少研發時間與成本。

圖1 硬件結構連接圖
系統CPU能在ARM上運行LINUX操作及監控應用程序,由DSP和GC5330芯片完成數字信號處理功能,并通過共享內存、核內通信[10-11]的方式,提高雙核數據交互速率和整體系統性能[12]。OMAPL138還集成了豐富的外圍設備接口,包括如圖1所示的傳統RS232和RS485串口、spi和IIC接口等,從而完成數模/模數(DA/AD)轉換、電可擦除存儲器(EEPROM)的讀寫等,方便進行開發與調試。因為CPU的I/O資源有限,采用Fpga(Field-Programmable Gate Array),即現場可編程門陣列來擴充I/O接口,使CPU能外掛更多的設備。
該軟件系統選擇LINUX作為操作系統,采用模塊化設計,不僅要為應用層提供設備管理接口,還要實現ARM核與DSP核的通信功能,完成對所有硬件的支持。系統使用TI公司提供的DSP算法,與GC5330芯片配合,提供項目所需的數字信號處理功能,大大降低了開發的復雜度與時間。系統軟件模塊關系設計如圖2所示。

圖2 軟件模塊關系圖
3.1 平臺支撐模塊
平臺支撐模塊主要由OMAPL138處理器驅動組成,包括外接設備驅動和提供給上層配置的接口。LINUX操作系統支持外接設備驅動程序以動態方式加載,在系統啟動時,通過加載命令將驅動模塊加入到內核中;使用外接設備時,在應用程序中將該設備用“open”系統函數打開,即可對其進行讀寫操作,還可通過設備配置接口對其進行控制操作。設備驅動主要過程為:CPU通過訪問與操作FPGA寄存器,下載文件到FPGA內部,從而可以使用FPGA的I/O口,相當于擴展了I/O口;然后通過FPGA的I/O口進行spi、IIC等接口的時序模擬,實現多個外接設備的驅動。
3.2 雙核通信模塊
雙核通信模塊由設備驅動和通信接口擴展程序組成。ARM在LINUX啟動后,讀寫固定的內存區域,等待DSP返回操作結果,就可進行數據通信。由于ARM與DSP異步雙核的特性,ARM上同時運行LINUX與DSP的操作系統,共享內存會導致兩系統地址運行沖突;修改內存地址,使LINUX系統運行在高48Mbyte的內存空間,即可解決沖突,OMAPL138處理器異步雙核通信也能夠正常使用。集成ARM與DSP雙核,共享所有外設特性和內存,實現ARM與DSP的讀寫功能,能使ARM與DSP讀寫速率更快,更穩定[13-14];同時,開發人員還可與TI公司共同設計算法,在ARM調用數字信號處理功能的擴展接口,為上層應用提供監控支持。
3.3 數字信號處理模塊
數字信號處理芯片選擇TI公司的GC5330,數字信號處理模塊運行在DSP上,基于DSP的操作系統,使用TI公司提供的代碼和算法,實現所需的數字信號處理功能。TI公司為DSP核開發了一個尺寸可裁剪的實時多任務操作系統,主要由多線程實時內核,芯片支持庫與實時分析工具構成,可以方便快速地開發DSP核的應用程序,制作數字信號算法,配置芯片外設,實時監測等。因此,開發人員可以把研發力量集中在ARM。ARM在數字信號處理模塊的工作是發起數字處理命令,通過通信模塊傳輸給DSP,DSP配合GC5330芯片處理,將結果返回ARM。
平臺支撐與雙核通信模塊都是運行在基于LINUX系統的ARM上,數字信號處理模塊運行在DSP上。由于BSP系統運行在ARM上,ARM與DSP沒有直接通信通道,通過與DSP共享內存通信的方式,完成ARM與DSP異步雙核間通信功能,并提供通信接口擴展功能。下面詳細說明雙核通信模塊的設計與實現。
4.1 ARM與DSP的硬件接口
OMAPL138物理上包含ARM926EJ-S和DSP6748雙核心,都能夠共享CPU自身所有外設資源,因此內存可作數據交換的通道。CPU與內存通過EMIFA總線連接,訪問內存時直接通過總線進行控制,相對以往的聯接方式,其讀寫速率提高了,硬線接口減少了,更為重要的是穩定性更強[15]。根據CPU的特點,ARM與DSP核的共享內存通信,是指在包含多核的嵌入式系統中,需要多次訪問存儲器數據時,將數據從存儲器放入到緩存,并及時更新,便于快速訪問。由于ARM與DSP使用不同操作系統平臺,不能使用標準系統調用來完成共享內存的操作,因此需要制定一個共享內存機制來實現ARM與DSP平臺上的讀寫控制操作。
4.2 ARM與DSP讀寫驅動
由于使用TI公司提供的數字信號處理模塊代碼,只需要完成ARM與DSP通信功能即可,因此與TI公司共同制定出特定共享內存訪問機制。此機制是在內存中劃出一段獨立區域,利用此區域進行數據交互,完成讀寫操作。另外,共享內存可解決雙核同步問題,通過對共享內存變量的讀寫,來控制兩端數據訪問的時機。內存地址的名稱、位置、用途如表1所示。

表1 雙核交互地址表
當ARM將請求寫入特定地址,DSP就從表1中的地址名讀取命令字大小、類型、數據,根據命令字執行不同的控制字算法,并返回結果給ARM,完成數據交換操作。雙核同步機制下,ARM寫入控制字前,會讀取DPD_REG_CMD_FLAG狀態,如果DSP處于工作中或者異常,ARM將不能寫入新的命令,否則可寫入DDR(Double Data Rate)共享內存,ARM與DSP讀寫同步操作。ARM與DSP交互代碼流程說明如下:
控制字執行函數名
{
讀取DPD_REG_CMD_FLAG和DPD_REG_RSP_FLAG狀態
任何一個小于0,將返回DSP執行異常;
寫命令字的大小到地址DPD_REG_PARAM_WORDS
寫命令字的數據到地址DPD_REG_PARAM_BUF
寫命令字的校驗碼到地址DPD_REG_PARAM_CHKSUM
寫命令字類型到地址DPD_REG_CMD_FLAG
循環讀取DPD_REG_CMD_FLAG 狀態
{
==0時,跳出循環執行后續步驟。
不等于0時,返回執行錯誤
}
循環讀取DPD_REG_RSP_FLAG狀態
{
小于0時,返回執行錯誤;
==輸入命令字類型,讀取DPD_REG_PARAM_BUF數據,將數據返回。(寫操作忽略此步)
}
}
詳細流程如圖3所示。

圖3 ARM與DSP驅動交互圖
ARM與DSP通信時,通過共享內存發送與接受對方的控制命令,ARM不需要實時獲取DSP返回信息,通過在上層編寫測試函數,對接口進行測試,保證通信正確性和穩定性即可。運行在DSP核的數字信號模塊的算法通過封裝,提供給ARM核的應用程序。由ARM發起,DSP與GC5330處理后返回給ARM。
4.3 LINUX底層擴展內存地址
LINUX系統運行在ARM核上,使用后,BSP系統共享內存必定會跟LINUX系統產生沖突,因此需要將DSP使用的內存空間與ARM運行LINUX的內存空間分隔開來。例如,內存大小為128Mbyte,DSP運行時需要使用80Mbyte,剩余48Mbyte分配給LINUX使用。除LINUX系統外,ARM上還運行了引導程序UBOOT(Universal Boot Loader),因此所有程序的地址都要偏移,需要偏移的配置修改如下:
(1)系統引導程序UBOOT區域
內核啟動參數地址是指LINUX內核啟動參數的讀取地址,如文件系統類型、分區大小、使用內存大小等啟動參數。
內核啟動參數修改前:
電源對任何電路而言,都是不可或缺的。電源的形式各種各樣,那么汽車電路中的電源會是什么樣的呢?它的電源電路又是如何構成的?在汽車電工電子技術中,很顯然,這是一個非常重要的問題,為了解決這一問題,我們設置了如下一項任務,如表1所示(見下頁):
include/configs/board-name_evm.h
#define LINUX_BOOT_PARAM_ADDR(PHYS_SDRAM_1 + 0x100)
內核啟動參數修改后:
include/configs/board-name_evm.h
#define LINUX_BOOT_PARAM_ADDR(0xC0000000)
TEXT_BASE是設置引導程序UBOOT在內存中的運行地址。
TEXT_BASE地址修改前:
Board/davinic/board-name_evm/config.mk
TEXT_BASE地址修改后:
Board/davinic/board-nam_evm/config.mk
TEXT_BASE=0xC6080000
(2)Linux系統區域
操作系統內核kernel運行機制地址是用來存儲LINUX啟動后的運行地址。
運行機制地址修改前:
arch/ARM/mach-davinci/include/mach/memory.h:
#define DAVINCI_DDR_BASE 0x80000000
運行機制地址修改后:
arch/ARM/mach-davinci/include/mach/memory.h:
#define DA8XX_DDR_BASE 0xc0000000
操作系統內核kernel導入與執行地址是用來創建kernel image的。
導入與執行地址修改前:
arch/
zreladdr-y:=0xc0008000
params_phys-y:=0xc0000100
initrd_phys-y:=0xc0800000
導入與執行地址修改后:
arch/
zreladdr-y:=0xc5008000
params_phys-y:=0xc5000100
initrd_phys-y:=0xc5800000
對于傳統的CPU來說,需要通過相應的通用主機端口與DSP進行通信,不同頻率、不同架構的CPU與DSP通信會存在傳輸速率、兼容性的問題。在本文描述的系統中,采用TI的OMAPL138芯片做CPU,這一問題得到改善。利用該平臺的LINUX設備驅動測試功能,在應用層通過管理設備輸入輸出通道的ioctl函數發起讀寫操作,可以對系統進行性能測試分析。如對模數轉換ADC讀寫功能、數模轉換DAC讀寫功能、電可擦除只讀存儲器EEPROM設備讀寫功能,分別進行測試,由于EEPROM設備有讀寫次數限制,故不作壓力測試,ADC、DAC將做讀寫壓力測試。具體測試條件、步驟及測試結果如表2所示。

表2 平臺設備驅動測試結果
在雙核通信模塊中,利用OMAPL138芯片集成ARM+DSP異步雙核并且共享所有外設特性,使用共享內存的方法實現ARM與DSP讀寫功能。由于使用OMAPL138異步雙核的特性,ARM上LINUX與DSP系統同時使用共享內存會出現沖突;通過偏移功能使得ARM上LINUX能夠運行在高48Mbyte空間,使得OMAPL138異步雙核雙系統能夠正常使用。該方案為通信部門提供了采用異步雙核處理器的數字中頻盤的解決方案,為數字中頻盤BSP系統設計從VXWORKS系統轉型為LINUX系統提供了堅實基礎。該系統已經應用于數字中頻盤,通過入網測試,性能指標良好。
[1]王輝.軟件無線電調制解調器的設計[D].南京:南京理工大學,2010.
[2]劉偉偉.嵌入式系統低功耗技術的研究和應用[D].鄭州:鄭州大學,2012.
[3]曹穎鵬.基于嵌入式Linux驅動程序的研究與設計[D].西安:西安電子科技大學,2010.
[4]賈小梨.實時操作系統內核研究及中斷管理的硬件實現[D].哈爾濱:哈爾濱理工大學,2011.
[5]楊瑞.操作系統實驗環境的設計與實現[D].呼和浩特:內蒙古大學,2012.
[6]林淦,劉建群,許東偉,等.OMAPL138的雙核通信設計[J].機床與液壓,2014(22):147-149.
[7]蔣建春,汪同慶.一種異構多核處理器嵌入式實時操作系統架構設計[J].計算機科學,2011(6):298-303.
[8]侯志偉,安麗霞,包理群,等.片上雙核數據并行采集及核間通信研究[J].計算機工程,2015(5):89-94.
[9]付浩,劉建群.基于OMAPL138的嵌入式運動控制器的設計與研究[J].科學技術與工程,2013(1):196-200.
[10]楊建,陽曄,嚴曉浪,等.片上雙核通信機制的設計與應用[J].微電子學,2007(1):28-32.
[11]俞靜,袁三男.基于OMAPL138雙核通信的測試與實現[J].上海電力學院學報,2016(1):64-68.
[12]郭盟,尹志輝,錢世俊.基于OMAPL138的雙核通信研究及應用[J].工業控制計算機,2015(11):56-57.
[13]趙學亮,姚慶明.ARM與DSP雙核系統中的通信接口設計[J].計算機工程與設計,2011(5):97-100.
[14]韋建威,孫俊杰.雙核通信軟件在OMAP5912上的應用研究[J].計算機工程與設計,2010(16):56-58.
[15]潘必超,曹彪.基于雙口RAM實現雙核通信模塊的驅動設計[J].電子器件,2014(1):54-58.
Design and Implementation of a Dual-Core Communication BSP System Based on LINUX
YE Jing1,ZHANG Yue-hua2
(1.School of Electronic Engineering, Wuhan Vocational College of Software and Engineering,Wuhan Hunan 430205,China;2.Siemens Ltd.,China Corporate Technology, Wuhan Hunan 430000,China)
With the development of wireless communication technology, the software and hardware of product costs are increasing. A BSP (Board Support Package) system based on LINUX for Digital Intermediate Frequency board can enrich the base station software resources, and reduce the costs. The system design analyzes the hardware structure, the software modules, describes the platform support module, the dual-core communication module, the digital signal processing module, design and implementation of the dual-core communication module. Data communication module is responsible for a set of access mechanism for inner communication between ARM and DSP on Digital Intermediate Frequency board. Since the CPU chip contains the ARM+DSP asynchronous dual core and shares all CPU resources, the data communication module could use shared memory to implement communication function. ARM and DSP could communicate by shared memory control, the integrality and validity of interact operation is ensured by signal operation. The system has been used in wireless communications, get a good performance.
BSP; embed; LINUX; dual-core communication; ARM; DSP
2017-01-09
湖北省教育廳科學研究計劃資助項目“圖像載體統計特性約束的信息隱藏模型研究”(Q20161508);武漢軟件工程職業學院技術服務項目“嵌入式平臺BSP技術開發研究”(2013J005)。
葉 莖(1983- ),女,講師,碩士,從事電子技術與自動化控制研究。
張躍華(1983- ),男,研究員,碩士,從事智能制造研究。
TN92
A
2095-7602(2017)04-0019-07