文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.180600
中文引用格式: 宋凱,,高寒. 基于Zynq-7000的自動(dòng)化監(jiān)測(cè)系統(tǒng)BSP設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2018,44(9):67-70,,74.
英文引用格式: Song Kai,,Gao Han. Design and implementation of the BSP for automated monitoring system based on Zynq-7000[J]. Application of Electronic Technique,,2018,44(9):67-70,,74.
0 引言
物聯(lián)網(wǎng)及嵌入式技術(shù)的發(fā)展推動(dòng)了信息化與工業(yè)化的快速融合,。作為一種新型產(chǎn)業(yè)模式,,工業(yè)物聯(lián)網(wǎng)(Industrial Internet of Things,IIoT)在過(guò)去幾年的研究和實(shí)踐中受到很大關(guān)注[1-2],。IIoT的迅速發(fā)展使得自動(dòng)化監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與研發(fā)成為新的科技熱點(diǎn),。IIoT將傳感器網(wǎng)絡(luò)與自動(dòng)化系統(tǒng)相結(jié)合,已被用于多個(gè)行業(yè),,以提高生產(chǎn)力和安全性[3-4],。自動(dòng)化監(jiān)測(cè)系統(tǒng)在IIoT感知層與應(yīng)用層間起著重要作用,隨著涉及的業(yè)務(wù)需求日益復(fù)雜,,它的實(shí)現(xiàn)也變得越來(lái)越具挑戰(zhàn)性,。在工業(yè)應(yīng)用場(chǎng)景中軟件體系結(jié)構(gòu)設(shè)計(jì)對(duì)于自動(dòng)化系統(tǒng)的高效運(yùn)行非常重要。先進(jìn)的軟件工程解決方案對(duì)自動(dòng)化系統(tǒng)設(shè)計(jì)的效率影響很大[5],。Xilinx Zynq AP SoC通過(guò)集成處理器的軟件可編程性與FPGA的硬件可編程性,,實(shí)現(xiàn)了優(yōu)異的設(shè)計(jì)靈活性,可提供面向嵌入式領(lǐng)域可重配置的軟件工程解決方案,,從而加速生產(chǎn)力,。
BSP在嵌入式系統(tǒng)中扮演著關(guān)鍵角色,主要用來(lái)適配特定類(lèi)型的硬件平臺(tái),。它通常包含了用來(lái)配置可定制電路的硬件比特流,、引導(dǎo)加載操作系統(tǒng)的基礎(chǔ)支持代碼以及主板上所有設(shè)備的驅(qū)動(dòng)程序。BSP開(kāi)發(fā)目的在于屏蔽底層硬件,,提供操作系統(tǒng)與硬件驅(qū)動(dòng),,使操作系統(tǒng)能穩(wěn)定運(yùn)行于主板環(huán)境[6-7],。由于傳統(tǒng)BSP設(shè)計(jì)存在不可或不易修改、難以復(fù)用以及設(shè)計(jì)流程復(fù)雜等問(wèn)題,,本文面向工業(yè)監(jiān)測(cè)領(lǐng)域中的自動(dòng)化系統(tǒng),,采用Xilinx提供的Vivado集成開(kāi)發(fā)套件及用于構(gòu)建和部署嵌入式系統(tǒng)到Xilinx全可編程處理器平臺(tái)的PetaLinux工具,完成了基于Zynq-7000 AP SoC的BSP設(shè)計(jì)與實(shí)現(xiàn),。
1 BSP總體結(jié)構(gòu)
BSP設(shè)計(jì)最終生成對(duì)應(yīng)用層提供支撐的鏡像文件為BOOT.BIN和image.ub,。BSP的總體架構(gòu)如圖1所示。BOOT.BIN啟動(dòng)鏡像主要負(fù)責(zé)系統(tǒng)硬件部分配置,,用于上電后配置Zynq芯片的處理器系統(tǒng)(Processing System,,PS)及可編程邏輯(Programmable Logic,PL),,并為L(zhǎng)inux操作系統(tǒng)準(zhǔn)備運(yùn)行環(huán)境,。image.ub支持內(nèi)核升級(jí),功能可裁剪,,由PeteLinux工具編譯打包生成,。
第一階段引導(dǎo)加載器(First Stage Boot Loader,F(xiàn)SBL)在啟動(dòng)存儲(chǔ)區(qū)之后運(yùn)行,,啟動(dòng)存儲(chǔ)區(qū)在ARM核上電啟動(dòng)時(shí)自動(dòng)執(zhí)行,,負(fù)責(zé)加載FSBL至片上存儲(chǔ)器(On Chip Memory,OCM)或在線性Flash存儲(chǔ)介質(zhì)上直接運(yùn)行,。對(duì)于運(yùn)行在Zynq平臺(tái)的Linux系統(tǒng)而言,,第二階段引導(dǎo)加載器(Second Stage Boot Loader,SSBL)即為通用引導(dǎo)加載器(Universal Boot Loader,,U-Boot),。Xilinx提供了用于適配不同系列Zynq主板的U-Boot?;赯ynq-7000 AP SoC的BSP各個(gè)組成部分對(duì)應(yīng)的功能說(shuō)明如下:
(1)FSBL,。FSBL負(fù)責(zé)初始化Zynq AP SoC PS端資源并使用硬件比特流文件配置PL端資源。
(2)硬件比特流,。硬件比特流由Vivado集成開(kāi)發(fā)工具構(gòu)建的FPGA系統(tǒng)生成,,包含F(xiàn)PGA編程信息,用于配置FPGA器件,。
(3)SSBL,。SSBL負(fù)責(zé)初始化內(nèi)存和必要的外設(shè)資源,設(shè)置Linux內(nèi)核的啟動(dòng)參數(shù)以及加載Linux系統(tǒng)到內(nèi)存中運(yùn)行,。
(4)Linux內(nèi)核鏡像,。Linux內(nèi)核鏡像是Linux操作系統(tǒng)的核心,提供硬件抽象層,、進(jìn)程及內(nèi)存管理,、磁盤(pán)與文件系統(tǒng)控制等功能,。
(5)根文件系統(tǒng)。根文件系統(tǒng)基于BusyBox源碼構(gòu)建,,負(fù)責(zé)管理Linux系統(tǒng)啟動(dòng)及運(yùn)行時(shí)所必需的目錄和關(guān)鍵性文件,。
(6)設(shè)備樹(shù)。設(shè)備樹(shù)文件用于描述部分硬件信息并在Linux系統(tǒng)加載設(shè)備驅(qū)動(dòng)時(shí)傳遞配置參數(shù),。
2 FPGA工程設(shè)計(jì)
傳統(tǒng)工業(yè)監(jiān)測(cè)設(shè)備中很多是符合RS232,、RS422或RS485等串行數(shù)據(jù)通信標(biāo)準(zhǔn)的設(shè)備。對(duì)于自動(dòng)化監(jiān)測(cè)系統(tǒng)而言,,如何面向這些監(jiān)測(cè)設(shè)備提供可重配置的接口,,成為一個(gè)需要解決的關(guān)鍵問(wèn)題。許多傳統(tǒng)工業(yè)設(shè)備所提供的功能在出廠時(shí)便已在固件中完成燒錄定義,,無(wú)法面向新的業(yè)務(wù)需求進(jìn)行修改或擴(kuò)展,。然而,對(duì)于許多應(yīng)用場(chǎng)景,,固定功能的硬件會(huì)因?yàn)殡y以進(jìn)行資源復(fù)用而導(dǎo)致成本提升,。FPGA器件因?yàn)榫哂袆?dòng)態(tài)可重構(gòu)的特性,,被認(rèn)為是數(shù)字可演化硬件系統(tǒng)一個(gè)很好的平臺(tái)[8],。Xilinx使用硅片堆疊技術(shù)設(shè)計(jì)出了高容量的FPGA,用于滿足低功耗,、低延時(shí)及高帶寬的應(yīng)用需求,。
2.1 工程構(gòu)建
在進(jìn)行FPGA系統(tǒng)設(shè)計(jì)時(shí)往往需要重用已有的功能模塊,于是類(lèi)似于軟件開(kāi)發(fā)庫(kù)文件的IP核應(yīng)運(yùn)而生,。IP核通常是預(yù)先設(shè)計(jì)好的電路功能模塊,,主要被用于ASIC或FPGA系統(tǒng)。Xilinx提供了可連接到高級(jí)可擴(kuò)展接口(Advanced eXtensible Interface,,AXI)的通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,,UART)Lite。每一個(gè)AXI UART Lite IP核都可以實(shí)際對(duì)應(yīng)一個(gè)串行通信接口,,為工業(yè)監(jiān)測(cè)設(shè)備接入自動(dòng)化監(jiān)測(cè)系統(tǒng)提供支持,。AXI UART Lite IP核可以為異步串行數(shù)據(jù)傳輸提供控制器接口。它的設(shè)計(jì)目的在于和 AXI4-Lite協(xié)議實(shí)現(xiàn)連接,。AXI UART Lite的主要性能和優(yōu)勢(shì)[9]如下:
(1)基于AXI4-Lite 規(guī)格的AXI 接口,;
(2)一個(gè)發(fā)送通道和一個(gè)接收通道(全雙工);
(3)16個(gè)字符的發(fā)送和接收先進(jìn)先出隊(duì)列(First Input First Output,,F(xiàn)IFO),;
(4)單個(gè)字符的數(shù)據(jù)比特位(5~8)數(shù)量可配置;
(5)校驗(yàn)位(奇偶或無(wú))可配置,;
(6)波特率可配置,。
Xilinx提供了Zynq7處理器系統(tǒng)IP封裝,,用于加速嵌入式系統(tǒng)的設(shè)計(jì)與配置。在Vivado集成開(kāi)發(fā)環(huán)境中搭建基于Zynq-7000的小型自動(dòng)化監(jiān)測(cè)系統(tǒng)FPGA工程,,工程結(jié)構(gòu)如圖2所示,。工程中添加了ZYNQ7處理器系統(tǒng)模塊、3個(gè)AXI UART Lite模塊以及AXI互聯(lián)模塊等IP核,,AXI Interconnect IP負(fù)責(zé)將一個(gè)或多個(gè)AXI存儲(chǔ)器映射的主器件連接到一個(gè)或多個(gè)存儲(chǔ)器映射的從器件,。在進(jìn)行FPGA系統(tǒng)設(shè)計(jì)時(shí)還預(yù)留了部分GPIO接口資源,方便對(duì)系統(tǒng)功能進(jìn)行擴(kuò)展,。
2.2 資源配置
2.2.1 PS端資源配置
根據(jù)實(shí)際應(yīng)用需求配置Zynq XC7Z010處理器系統(tǒng),,并規(guī)劃XC7Z010的PS端MIO資源。MIO是I/O外設(shè)連接的基礎(chǔ),。XC7Z010芯片通過(guò)MIO最多可以引出54個(gè)三態(tài)通用輸入輸出(General Purpose Input Output,,GPIO)引腳。這些GPIO引腳都是在程序上可控的,,并且支持動(dòng)態(tài)修改配置,。它們可以單獨(dú)配置為輸入、輸出或中斷的功能,。PS端部分資源規(guī)劃結(jié)果如表1所示,。
2.2.2 PL端資源配置
Zynq中的PL主要用于擴(kuò)展功能。通過(guò)使用多個(gè)特殊引腳和信號(hào),,可以將Zynq-7000內(nèi)的PS和PL緊密或松散地耦合在一起[10],。XC7Z010主芯片包含用于連接外設(shè)和某些特殊功能引腳的IO接口資源。 特殊引腳最主要用于實(shí)現(xiàn)復(fù)位,、狀態(tài)指示,、系統(tǒng)配置、模式配置等功能,,通過(guò)特定引腳和功能復(fù)用引腳來(lái)實(shí)現(xiàn),。XC7Z010的主要特殊引腳的配置說(shuō)明如表2所示。
3 PetaLinux工程設(shè)計(jì)
使用PetaLinux工具構(gòu)建基于Zynq AP SoC的嵌入式Linux操作系統(tǒng),。PetaLinux工具包括定制的BSP生成工具,、Linux配置工具以及軟件開(kāi)發(fā)工具。使用這些工具可以實(shí)現(xiàn)引導(dǎo)加載程序,、Linux內(nèi)核以及Linux應(yīng)用程序的靈活配置,,有利于開(kāi)發(fā)者在Xilinx處理系統(tǒng)上定制、構(gòu)建和調(diào)配嵌入式Linux解決方案,。
3.1 系統(tǒng)頂層配置
基于Zynq工程模板創(chuàng)建PetaLinux工程,,導(dǎo)入固件工程生成的硬件描述文件并進(jìn)行系統(tǒng)頂層配置,系統(tǒng)頂層配置項(xiàng)包括Linux組件選擇、自動(dòng)配置項(xiàng)設(shè)置,、子系統(tǒng)硬件自動(dòng)配置項(xiàng)設(shè)置,、內(nèi)核引導(dǎo)參數(shù)設(shè)置、U-Boot設(shè)置,、鏡像文件打包配置等,。其中子系統(tǒng)硬件自動(dòng)配置項(xiàng)設(shè)置為必選項(xiàng),允許自定義系統(tǒng)范圍的硬件設(shè)置,,如:以太網(wǎng)卡設(shè)置,、Flash設(shè)置、串口設(shè)置,、實(shí)時(shí)時(shí)鐘(Real-Time Clock,,RTC)芯片設(shè)置、SD卡設(shè)置等,。Petalinux工具將根據(jù)系統(tǒng)頂層配置解析硬件描述文件,,以便更新設(shè)備樹(shù)所需的硬件信息。
3.2 Linux內(nèi)核配置
Linux內(nèi)核主要提供五大功能,,分別為虛擬文件系統(tǒng),、網(wǎng)絡(luò)服務(wù)、內(nèi)存管理,、進(jìn)程管理和設(shè)備管理,。Xilinx 提供了免費(fèi)的PetaLinux開(kāi)發(fā)工具,使開(kāi)發(fā)人員可以輕松在Zynq AP SoC上配置,、構(gòu)建和部署Linux系統(tǒng)及應(yīng)用,,提高軟硬件設(shè)計(jì)開(kāi)發(fā)效率。Linux內(nèi)核配置基于Linux 4.6.0內(nèi)核進(jìn)行,,主要包括USB串口驅(qū)動(dòng)配置、以太網(wǎng)驅(qū)動(dòng)配置,、GSM和CDMA調(diào)制解調(diào)器的USB驅(qū)動(dòng)配置,、Xilinx-uartlite串口驅(qū)動(dòng)配置、DS18B20溫度傳感器驅(qū)動(dòng)配置,、GPIO支持等,。PetaLinux工程基于開(kāi)源的協(xié)作軟件Yocto創(chuàng)建。Yocto致力于創(chuàng)建可定制的嵌入式產(chǎn)品和統(tǒng)一嵌入式Linux系統(tǒng)的開(kāi)發(fā)標(biāo)準(zhǔn),,它提供了許多模板,、工具和方法,使得開(kāi)發(fā)者無(wú)需關(guān)心硬件體系,,避免許多重復(fù)工作,,從而提高開(kāi)發(fā)效率和產(chǎn)品質(zhì)量。Linux內(nèi)核的更新以打補(bǔ)丁的方式實(shí)現(xiàn),內(nèi)核源碼的更新不影響已修改的系統(tǒng)配置項(xiàng),。
3.3 設(shè)備樹(shù)配置
Linux內(nèi)核通過(guò)設(shè)備樹(shù)文件獲取板級(jí)硬件的細(xì)節(jié)信息從而加載設(shè)備驅(qū)動(dòng),。設(shè)備樹(shù)可以對(duì)硬件進(jìn)行規(guī)范化描述,支持多平臺(tái)內(nèi)核鏡像,,具備簡(jiǎn)化的板卡端口,,使用更少的平臺(tái)描述代碼以及更精簡(jiǎn)的設(shè)備驅(qū)動(dòng)代碼[11]。PetaLinux設(shè)備樹(shù)配置關(guān)聯(lián)文件主要有pcw.dtsi,、plnx_aarch64-system.dts,、system.dts、system-conf.dtsi,、system-top.dts,。這些文件統(tǒng)一由PetaLinux工程自動(dòng)生成,開(kāi)發(fā)者通過(guò)修改system-top.dts文件來(lái)滿足特定的系統(tǒng)需求,?;赯ynq-7000的小型自動(dòng)化監(jiān)測(cè)系統(tǒng)具備網(wǎng)口調(diào)試、RTC時(shí)鐘支持,、溫濕度監(jiān)測(cè),、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)裙δ堋P枰趕ystem-top.dts文件中進(jìn)行相應(yīng)節(jié)點(diǎn)信息的修改或添加新的硬件描述節(jié)點(diǎn),。例如在設(shè)備樹(shù)配置文件system-top.dts中添加RTC時(shí)鐘硬件描述信息及修改后的網(wǎng)卡芯片節(jié)點(diǎn)信息如下:
&i2c0 {
status = "okay";
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
&gem0 {
compatible = "cdns,zynq-gem", "cdns,gem";
status = "okay";
phy-mode = "rgmii-id";
xlnx,ptp-enet-clock = <0x69f6bcb>;
local-mac-address = [00 0a 35 00 1e 53];
};
4 BSP總體測(cè)試
在基于XC7Z010的硬件平臺(tái)中對(duì)BSP進(jìn)行總體測(cè)試,,設(shè)備上電后,處理器自動(dòng)執(zhí)行片內(nèi)BootROM中的代碼,,初始化CPU和一些外圍設(shè)備,,以便讀取燒錄在NOR Flash中的BOOT.BIN引導(dǎo)鏡像,BOOT.BIN引導(dǎo)鏡像加載存儲(chǔ)在eMMC上image.ub到DDR3中運(yùn)行,。然后,,文件系統(tǒng)中的mystartup.sh腳本啟動(dòng)存儲(chǔ)在eMMC中的系統(tǒng)初始化腳本文件,執(zhí)行系統(tǒng)初始化配置,。PetaLinux系統(tǒng)部分啟動(dòng)信息如圖3所示,。
圖3(a)為PL部分?jǐn)U展的AXI UART Lite模塊注冊(cè)加載信息,在Linux下作為標(biāo)準(zhǔn)串口分別對(duì)應(yīng)設(shè)備文件描述符ttyUL1,、ttyUL2及ttyUL3,。圖3(b)為內(nèi)存技術(shù)設(shè)備(Memory Technology Device,MTD)驅(qū)動(dòng)加載信息,,MTD是用于訪問(wèn)存儲(chǔ)介質(zhì)的Linux的子系統(tǒng),,此處表示NOR Flash存儲(chǔ)器,共創(chuàng)建了boot,、bootenv,、kernel以及spare 4個(gè)MTD子分區(qū),其中spare分區(qū)為空閑分區(qū),可用于燒錄設(shè)備唯一序列號(hào),。圖3(c)為GSM模塊USB接口連接檢測(cè)信息及網(wǎng)口芯片啟動(dòng)狀態(tài)信息,,其中GSM模塊對(duì)應(yīng)Linux系統(tǒng)下的設(shè)備文件描述符ttyUSB0、ttyUSB1,、ttyUSB2,、ttyUSB3及ttyUSB4。
5 結(jié)論
本文實(shí)現(xiàn)一種面向自動(dòng)化監(jiān)測(cè)系統(tǒng)的BSP設(shè)計(jì)方法,,并完成了面向小型微型自動(dòng)化監(jiān)測(cè)系統(tǒng)的BSP設(shè)計(jì)與實(shí)踐,。用于評(píng)測(cè)BSP功能及性能的硬件平臺(tái)選用Xilinx Zynq XC7Z010芯片作為硬件系統(tǒng)主控制器,BSP部分針對(duì)自動(dòng)化監(jiān)測(cè)系統(tǒng)應(yīng)具備的基本功能在嵌入式Linux系統(tǒng)中添加了相應(yīng)的設(shè)備驅(qū)動(dòng),,可充分滿足工業(yè)監(jiān)測(cè)領(lǐng)域的業(yè)務(wù)需求,。實(shí)際測(cè)試結(jié)果表明,該BSP具有開(kāi)發(fā)便捷,、通用性強(qiáng),、便于進(jìn)行功能擴(kuò)展和Linux內(nèi)核升級(jí)、運(yùn)行穩(wěn)定等特點(diǎn),,驗(yàn)證了基于Zynq-7000的自動(dòng)化監(jiān)測(cè)系統(tǒng)BSP設(shè)計(jì)的可行性與正確性,,對(duì)于工業(yè)自動(dòng)化系統(tǒng)的BSP設(shè)計(jì)與實(shí)現(xiàn)有一定的參考價(jià)值和實(shí)際指導(dǎo)意義。由于自動(dòng)化監(jiān)測(cè)系統(tǒng)的功能日益復(fù)雜,,該BSP設(shè)計(jì)仍需在實(shí)踐中不斷進(jìn)行完善,。
參考文獻(xiàn)
[1] ZHOU C,DAMIANO N,,WHISNER B,,et al.Industrial Internet of Things(IIoT) applications in underground coal mines[J].Mining Engineering,2017,,69(12):50-56.
[2] ARNOLD C.The industrial Internet of Things from a management perspective:a systematic review of current literature[J].Journal of Emerging Trends in Marketing & Management,,2017,1(1):8-21.
[3] KIEL D,,ARNOLD C,,COLLISI M,et al.The impact of the industrial Internet of things on established business models[C].International Association for Management of Technology Conference,,2016.
[4] ZHONG D,LV H,,HAN J,,et al.A practical application combining wireless sensor networks and Internet of Things:safety management system for tower crane groups[J].Sensors,2014,,14(8):13794-13814.
[5] VYATKIN V,,ZOITL A.Advanced software engineering in industrial automation[J].IEEE Transactions on Industrial Informatics,2013,9(3):1234-1249.
[6] 房澤欣.S3C2440處理器的嵌入式Linux系統(tǒng)的BSP設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),,2016.
[7] 凌約雷,,邱愛(ài)華,席隆,,等.國(guó)產(chǎn)高可靠控制器BM3803MG的BSP設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2012,38(1):24-27.
[8] DOBAI R,,SEKANINA L.Towards evolvable systems based on the Xilinx Zynq platform[C].2013 IEEE International Conference on Evolvable Systems.IEEE,,2013:89-95.
[9] Xilinx,Inc.AXI UART Lite v2.0 LogiCORE IP Product Guide[EB/OL].(2017-05-05)[2018-02-01].https://china.xilinx.com/support/documentation/ip_documentation/axi_uartlite/v2_0/pg142-axi-uartlite.pdf.
[10] 何賓.Xilinx All Programmable Zynq-7000 SoC設(shè)計(jì)指南[M].北京:清華大學(xué)出版社,,2013.
[11] 張茂天,,張磊,郭曉,,等.基于設(shè)備樹(shù)的MPC8247嵌入式Linux系統(tǒng)開(kāi)發(fā)[J].計(jì)算機(jī)應(yīng)用,,2013,33(5):1485-1488.
作者信息:
宋 凱1,,2,,高 寒1,2
(1.北京工業(yè)大學(xué) 信息學(xué)部,,北京100124,;2.北京工業(yè)大學(xué) 北京市物聯(lián)網(wǎng)軟件與系統(tǒng)工程技術(shù)研究中心,北京100124)