李靜
(陜西省建筑職工大學(xué)公共基礎(chǔ)教學(xué)科,陜西西安 710068)
不斷發(fā)展的網(wǎng)絡(luò)計(jì)算機(jī)與微電子等現(xiàn)代技術(shù)促使通信系統(tǒng)得到快速發(fā)展,而隨著通信系統(tǒng)規(guī)模的持續(xù)擴(kuò)大,系統(tǒng)中使用到的設(shè)備與涉及到的通信業(yè)務(wù)呈現(xiàn)出明顯的多樣化、復(fù)雜化及多元化特點(diǎn),對(duì)通信系統(tǒng)的高速化與實(shí)時(shí)化要求不斷提高,促使具備軟硬件優(yōu)勢(shì)的嵌入式系統(tǒng)在通信領(lǐng)域深入發(fā)展與應(yīng)用。嵌入式高速通信系統(tǒng)以電信號(hào)或光信號(hào)作為傳輸信號(hào),通常具有特定的功能,能夠高速傳輸大量數(shù)據(jù)信息,多個(gè)設(shè)備可通過(guò)系統(tǒng)提供的交換功能實(shí)現(xiàn)通信傳輸與信息交換過(guò)程。目前,嵌入式高速通信系統(tǒng)已應(yīng)用到眾多領(lǐng)域(包括通信、工業(yè)自動(dòng)化等),該系統(tǒng)通過(guò)使用相應(yīng)功能接口可顯著提升計(jì)算處理能力及通信性能等[1]。
高性能多處理器架構(gòu)是文中設(shè)計(jì)與實(shí)現(xiàn)高速通信系統(tǒng)的關(guān)鍵所在,該架構(gòu)是一種主流處理器系統(tǒng)結(jié)構(gòu),主要通過(guò)在計(jì)算機(jī)系統(tǒng)進(jìn)行高性能處理器集成,實(shí)現(xiàn)多個(gè)進(jìn)程的同時(shí)執(zhí)行,進(jìn)而使計(jì)算性能得到明顯提高;同時(shí),簡(jiǎn)化設(shè)計(jì)過(guò)程并有效降低系統(tǒng)功耗,但在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、總線管理維護(hù)、多任務(wù)管理調(diào)度、功耗等方面仍有待進(jìn)一步改進(jìn)[1]。文中在繼承現(xiàn)有架構(gòu)性能優(yōu)勢(shì)的基礎(chǔ)上,基于ASAAC、SEM-D等標(biāo)準(zhǔn),采用T2080(NXP 公司,PowerPC QorIQ 系列)對(duì)多處理器架構(gòu)進(jìn)行了優(yōu)化設(shè)計(jì),并結(jié)合運(yùn)用MPC8548 處理器實(shí)現(xiàn)了對(duì)系統(tǒng)內(nèi)高速通信網(wǎng)絡(luò)的維護(hù)與管理[1-2]。
系統(tǒng)總體架構(gòu)如圖1 所示,系統(tǒng)的核心處理芯片選用了兩顆高性能處理器T2080和兩片PowerPC處理器,提供4 個(gè)e6500 內(nèi)核的T2080 處理器,通信速率可達(dá)1 866 MT/s,并可提供高達(dá)1.8 GHz 的主頻。T2080 包 含16 個(gè)SerDes 端 口、72 位 的DDR3 控制接口和2 MB 二級(jí)緩存,支持多種協(xié)議(包括RapidIO、SATA、XFI、PCIE、Aurora 等),可使高速通信系統(tǒng)的接口需求得以有效滿(mǎn)足。T2080 處理器在系統(tǒng)中的并行處理功能通過(guò)RapidIO 與網(wǎng)絡(luò)交換實(shí)現(xiàn)[3-4]。

圖1 嵌入式高速通信系統(tǒng)架構(gòu)圖
核心處理電路的主要構(gòu)成為兩片T2080(支持DDR3、DDR3L 接口)及相應(yīng)周邊存儲(chǔ)器。文中選用了低電壓的工作頻率為800 MHz 的DDR3L 接口,訪問(wèn)速率為1 600 MT/s,以有效降低系統(tǒng)運(yùn)行的功耗。兩片T2080 均包含256 MB 大小的NOR FLASH 存儲(chǔ)器,主要用于完成操作系統(tǒng)程序的啟動(dòng)及應(yīng)用的存放。此外,各處理器均配置一片256 MB容量的FLASH芯片,用于存儲(chǔ)系統(tǒng)軟件版本等信息,以供上電后的操作系統(tǒng)自動(dòng)讀取使用,F(xiàn)LASH 空間支持文件系統(tǒng)。為及時(shí)保存掉電情況下的重要數(shù)據(jù),將1 MB的NVSRAM 存儲(chǔ)器分別配置到各T2080 上。各處理器分別配置了DDR3L(72 位,包含8 位的ECC 校驗(yàn)位),采用4 片SDRAM 芯片,用戶(hù)具有超過(guò)3 GB 的可使用空間,處理器和RapidIO 接口均具有訪問(wèn)存儲(chǔ)器的權(quán)限,可根據(jù)實(shí)際需要對(duì)FLASH 進(jìn)行編程,具體由各處理器通過(guò)調(diào)試以太網(wǎng)實(shí)現(xiàn)[5-6]。
管理維護(hù)模塊的維護(hù)處理器選用了MPC8548處理器(NXP 公司),該處理器具有千兆以太網(wǎng)接口和高速通信接口,主要負(fù)責(zé)管理和維護(hù)系統(tǒng)中網(wǎng)絡(luò)及RapidIO 的交換,內(nèi)嵌e500v2 核心的MPC8548 主頻可達(dá)1.33 GHz,MPC8548E 能夠通過(guò)外部IO 配置成均為x4 的RapidIO 和PCIE 模式各一個(gè),支持PCIE和RapidIO 接口,可通PCIE 接口,采用外部處理器借助PCIE 來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)接口的管理以及自身配置的設(shè)置。系統(tǒng)中RapidIO 交換的自身端口模式及速率的配置可通過(guò)外部處理器采用RapidIO 接口實(shí)現(xiàn)。實(shí)現(xiàn)系統(tǒng)管理維護(hù)工作的MPC8548E 功能設(shè)計(jì)具體包括:①配置x4 的PCIE 接口和RapidIO 接口,分別用于實(shí)現(xiàn)與以太網(wǎng)交換芯片及RapidIO 交換芯片間的互聯(lián);②單線傳輸速率均為2.5 Gbps,在此基礎(chǔ)上實(shí)現(xiàn)對(duì)以太網(wǎng)和RapidIO 兩種交換芯片的上電配置加載、端口模式與端口速率配置等的控制,網(wǎng)絡(luò)交換的端口及網(wǎng)絡(luò)模式等可采用相應(yīng)軟件完成設(shè)置過(guò)程;③配置了以太網(wǎng)交換芯片作為調(diào)試網(wǎng)絡(luò)使用的GMII 接口[7-8]。
系統(tǒng)RapidIO 交換網(wǎng)絡(luò)負(fù)責(zé)實(shí)現(xiàn)內(nèi)外部的RapidIO 高速數(shù)據(jù)傳輸,主要由RapidIO 交換芯片構(gòu)成,分別同T2080、MPC8548E 及外部端節(jié)點(diǎn)相連,通過(guò)底板連接器實(shí)現(xiàn)了4x 的RapidIO(共4 個(gè))同1x 端口(共6 個(gè))間的互連以及各端口的對(duì)外輸出。配置和管理RapidIO 交換網(wǎng)絡(luò)的實(shí)現(xiàn)方式包括兩種:1)將I2C PROM(一種獨(dú)立的引導(dǎo))配置于交換芯片上,用于完成初始化配置信息的存儲(chǔ),系統(tǒng)開(kāi)始運(yùn)行時(shí)會(huì)對(duì)其中的配置信息進(jìn)行自動(dòng)加載,據(jù)此完成交換網(wǎng)絡(luò)的初始化處理。2)配置過(guò)程可以通過(guò)實(shí)時(shí)管理來(lái)實(shí)現(xiàn),系統(tǒng)的Host主節(jié)點(diǎn)和Agent 節(jié)點(diǎn)具有一定的輔助作用,在系統(tǒng)實(shí)現(xiàn)過(guò)程中,由Host實(shí)現(xiàn)RapidIO網(wǎng)絡(luò)的動(dòng)態(tài)配置與實(shí)時(shí)監(jiān)管過(guò)程,并為擴(kuò)展、重構(gòu)等功能提供技術(shù)支撐[9-10]。RapidIO 網(wǎng)絡(luò)設(shè)計(jì)如圖2 所示。

圖2 系統(tǒng)RapidIO網(wǎng)路交換設(shè)計(jì)
嵌入式通信系統(tǒng)的靈活性及統(tǒng)一性在不斷提升,所以要求總線網(wǎng)絡(luò)具有較高的數(shù)據(jù)傳輸能力,支持多種上層協(xié)議的光纖通道(FC)在傳輸距離、帶寬、延遲、拓?fù)潇`活性等方面具有明顯的優(yōu)勢(shì),可有效滿(mǎn)足高性能數(shù)據(jù)傳輸需求。各T2080 均配置一路雙余度FC 接口,實(shí)現(xiàn)了兩個(gè)相同的FC 節(jié)點(diǎn),接口與T2080 間的通信過(guò)程使用PCIE 總線實(shí)現(xiàn),節(jié)點(diǎn)通過(guò)4xPCIE 總線連接T2080,傳輸速率為5 Gbps,兩路FC電路實(shí)現(xiàn)了FC 協(xié)議處理。各T2080 均包含2 路SGMII,系統(tǒng)的以太網(wǎng)交換通過(guò)交換芯片完成,千兆網(wǎng)的端口數(shù)量可根據(jù)實(shí)際需要進(jìn)行靈活配置(最多為24 個(gè),支持SGMII 接口),T2080 和網(wǎng)絡(luò)交換芯片使用SGMII 接口連接;MPC8548 通過(guò)其所配置的一路GMII接口實(shí)現(xiàn)與網(wǎng)絡(luò)交換芯片間的互連,提供2路可通過(guò)PHY 轉(zhuǎn)換SGMII 得到的Base-T 網(wǎng)絡(luò)接口[11]。
分別將一個(gè)64 GB 的電子盤(pán)配置到各T2080(僅支持SATA2.0)上,以保證系統(tǒng)具有大容量存儲(chǔ)功能,采用SATA 接口的電子盤(pán)僅能在SATA2.0 上工作,電子盤(pán)的實(shí)測(cè)寫(xiě)速度和讀速度分別可達(dá)160 MB/s和240 MB/s 以上。考慮到系統(tǒng)內(nèi)元器件涉及到多種工作電壓,而系統(tǒng)外部輸入電壓為直流28 V,因此使用電源轉(zhuǎn)換電路完成輸入電壓到各元器件所需電壓的轉(zhuǎn)換,28 V 輸入到5 V 輸出的轉(zhuǎn)換需要通過(guò)DCDC 轉(zhuǎn)換器來(lái)完成。以各電壓所需的不同電流為依據(jù),結(jié)合運(yùn)用不同型號(hào)的DC-DC 轉(zhuǎn)換器(Linear 公司),實(shí)現(xiàn)其他規(guī)格電壓的轉(zhuǎn)換[12]。
整體系統(tǒng)軟件主要由分別負(fù)責(zé)啟動(dòng)、BSP 驅(qū)動(dòng)、IO 驅(qū)動(dòng)功能的3 個(gè)軟件配置項(xiàng)構(gòu)成,啟動(dòng)軟件中包含CPU 初始化、啟動(dòng)模式選擇、對(duì)模塊參數(shù)進(jìn)行設(shè)置、在線編輯等功能。BSP 驅(qū)動(dòng)軟件能夠完成中斷控制器的驅(qū)動(dòng)、系統(tǒng)時(shí)鐘驅(qū)動(dòng)、以太網(wǎng)驅(qū)動(dòng)、Flash 驅(qū)動(dòng)等。IO 驅(qū)動(dòng)軟件可以實(shí)現(xiàn)外部中斷驅(qū)動(dòng)、定時(shí)器驅(qū)動(dòng)、PCIE 總線驅(qū)動(dòng)、看門(mén)狗驅(qū)動(dòng)等。系統(tǒng)軟件如圖3 所示。系統(tǒng)軟件還包括網(wǎng)絡(luò)交換軟件(具體由以太網(wǎng)和FC 網(wǎng)絡(luò)的通訊程序構(gòu)成)、操作系統(tǒng)軟件(配置了多核操作系統(tǒng)VxWorks)和應(yīng)用軟件。系統(tǒng)加電后,操作系統(tǒng)開(kāi)始運(yùn)行并調(diào)用相關(guān)應(yīng)用軟件。文中系統(tǒng)具有運(yùn)行和維護(hù)兩種狀態(tài):①運(yùn)行狀態(tài)指在任務(wù)正常執(zhí)行過(guò)程中的狀態(tài),在系統(tǒng)接通電源之后,會(huì)自行進(jìn)行操作并且完成相關(guān)應(yīng)用軟件的啟動(dòng);②維護(hù)狀態(tài)指工作人員對(duì)軟件進(jìn)行開(kāi)發(fā)或調(diào)試時(shí)的狀態(tài)。通過(guò)離散量開(kāi)關(guān)完成對(duì)系統(tǒng)狀態(tài)的識(shí)別,當(dāng)對(duì)系統(tǒng)進(jìn)行調(diào)試或維護(hù)時(shí),會(huì)自動(dòng)進(jìn)入到維護(hù)菜單,實(shí)現(xiàn)參數(shù)的設(shè)置、模式的選擇等操作[13]。

圖3 系統(tǒng)軟件構(gòu)成
為了有效簡(jiǎn)化系統(tǒng)的連接與操作過(guò)程,將硬件設(shè)備轉(zhuǎn)換為相應(yīng)的設(shè)備文件,具體通過(guò)設(shè)置設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)操作系統(tǒng)內(nèi)核同相應(yīng)硬件的有效連接,通過(guò)設(shè)備驅(qū)動(dòng)程序的使用免去了系統(tǒng)掌握硬件細(xì)節(jié)的流程。
對(duì)于系統(tǒng)存儲(chǔ)器和外設(shè)部分,文中主要將其分為字符、塊和網(wǎng)絡(luò)3 類(lèi)設(shè)備,字符設(shè)備采用HPI,根據(jù)字符設(shè)備驅(qū)動(dòng)在嵌入式系統(tǒng)中的實(shí)現(xiàn)流程,驅(qū)動(dòng)HPI 接口的主要步驟如下。
1)獲取設(shè)備文件和設(shè)備號(hào):通過(guò)動(dòng)態(tài)分配方式獲取主設(shè)備號(hào),具體申請(qǐng)時(shí)以設(shè)備號(hào)位“0”進(jìn)行,由系統(tǒng)返回一個(gè)主設(shè)備號(hào)[14]。
2)字符設(shè)備的注冊(cè):將字符設(shè)備驅(qū)動(dòng)程序添加到系統(tǒng)中,即將包括讀取、寫(xiě)入、打開(kāi)、關(guān)閉、其他硬件配置等在內(nèi)的各操作對(duì)應(yīng)的代碼添加到驅(qū)動(dòng)程序模塊中,將數(shù)據(jù)寫(xiě)入設(shè)備HPI,ioctl 表示其他包括配置HPI 等在內(nèi)的硬件控制,mmap 負(fù)責(zé)完成設(shè)備HPI地址到實(shí)際進(jìn)程地址的映射。HPI 接口驅(qū)動(dòng)程序的文件操作結(jié)構(gòu)如下[15]:


字符型設(shè)備驅(qū)動(dòng)程序的注冊(cè)過(guò)程通過(guò)調(diào)用如下函數(shù)實(shí)現(xiàn):
int register_chrdev (unsigned int major,constchar*name,struct file_operation*fops);
卸載函數(shù)如下:
int unregister_chrdev(unsigned int major,constchar*name);
3)中斷函數(shù)的注冊(cè):在應(yīng)用中斷前需先完成中斷處理程序的注冊(cè),硬件中斷請(qǐng)求傳送至系統(tǒng)后,由系統(tǒng)完成對(duì)相應(yīng)中斷處理程序的調(diào)用并執(zhí)行操作命令。中斷處理程序的注冊(cè)通過(guò)調(diào)用request_irq 完成[16],釋放則通過(guò)調(diào)用free_irq 函數(shù)完成。
在嵌入式通信系統(tǒng)的內(nèi)核中添加編寫(xiě)后的設(shè)備驅(qū)動(dòng)程序,此過(guò)程需對(duì)系統(tǒng)的源碼進(jìn)行修改與重新編譯:
1)在驅(qū)動(dòng)目錄下,保存字符型設(shè)備的驅(qū)動(dòng)程序,并將hpi.c 源碼復(fù)制到該目錄下。
2)修改Kconfig 文件并在頂層目錄中打開(kāi)后,將語(yǔ)句commen‘tCharacterdevice’+boo“l(fā)hpi_dev”CON FIG HPI_DEV 添加到該文件中。
3)在hpi_dev 項(xiàng)中進(jìn)行配置并將配置結(jié)果體現(xiàn)出來(lái),通過(guò)添加語(yǔ)句CONFIG_HPI_DEV=y.config實(shí)現(xiàn)。
4)在make-file 中添加語(yǔ)句obj-S(CONFIG_HPI_DEV)+=hpi.o,編譯hpi.c 生成hpi.o 文件。
5)編譯內(nèi)核,在內(nèi)核源代碼頂層目錄中執(zhí)行male zImage
ARCH=arm CROSS_COMPILE=arm-Linux。
文中設(shè)計(jì)了一種嵌入式高速通信系統(tǒng),通過(guò)多種高速總線組成通信網(wǎng)絡(luò),實(shí)現(xiàn)總線的網(wǎng)絡(luò)融合與協(xié)議轉(zhuǎn)換,可支持多種異構(gòu)總線,有效提升系統(tǒng)的并行計(jì)算處理性能,進(jìn)而實(shí)現(xiàn)了高速數(shù)據(jù)傳輸通信過(guò)程。該高速通信系統(tǒng)可適用于不同環(huán)境的嵌入式計(jì)算、通信領(lǐng)域,具有一定的實(shí)際應(yīng)用價(jià)值。