《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于Zynq-7000的自動化監(jiān)測系統(tǒng)BSP設(shè)計與實現(xiàn)
基于Zynq-7000的自動化監(jiān)測系統(tǒng)BSP設(shè)計與實現(xiàn)
2018年電子技術(shù)應(yīng)用第9期
宋 凱1,2,高 寒1,2
1.北京工業(yè)大學(xué) 信息學(xué)部,北京100124;2.北京工業(yè)大學(xué) 北京市物聯(lián)網(wǎng)軟件與系統(tǒng)工程技術(shù)研究中心,北京100124
摘要: 實現(xiàn)一種基于Zynq-7000全可編程片上系統(tǒng)(AP SoC)的板級支持包(BSP)設(shè)計方法及應(yīng)用流程。該BSP設(shè)計主要面向工業(yè)自動化監(jiān)測領(lǐng)域,提供了一種行之有效的嵌入式系統(tǒng)BSP實現(xiàn)流程,有利于提高工業(yè)自動化監(jiān)測系統(tǒng)的開發(fā)效率。針對使用串行通信方式的工業(yè)監(jiān)測設(shè)備,設(shè)計面向小型自動化監(jiān)測系統(tǒng)的FPGA工程,并使用專門針對基于FPGA的片上系統(tǒng)而設(shè)計的PetaLinx工具構(gòu)建嵌入式Linux系統(tǒng)。最后通過自行研制的基于Zynq XC7Z010系列型號芯片的硬件平臺驗證了BSP設(shè)計的正確性及穩(wěn)定性。
中圖分類號: TP271+.5
文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.180600
中文引用格式: 宋凱,高寒. 基于Zynq-7000的自動化監(jiān)測系統(tǒng)BSP設(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.
Design and implementation of the BSP for automated monitoring system based on Zynq-7000
Song Kai1,2,Gao Han1,2
1.Faculty of Information Technology,Beijing University of Technology,Beijing 100124,China; 2.Beijing Engineering Research Center for IoT Software & Systems,Beijing 100124,China
Abstract: In this paper, the design method and application process of a Board Support Package(BSP) based on the Zynq-7000 All Programmable SoC(AP SoC) is implemented. The BSP design is mainly for the field of industrial automated monitoring. It provides an effective implementation process of embedded system BSP, which is beneficial to improve the development efficiency of industrial automated monitoring system. In this paper, In view of the industrial monitoring equipment that uses serial communication mode, the FPGA engineering for small automatic monitoring system is designed, and the embedded Linux system is built by PetaLinux tools, which are designed specifically for FPGA-based SoC. Finally, the correctness and stability of the BSP design are verified with the self-developed hardware platform based on Zynq XC7Z010 series model chip.
Key words : Zynq-7000;BSP;automated monitoring system;FPGA;PetaLinux

0 引言

    物聯(lián)網(wǎng)及嵌入式技術(shù)的發(fā)展推動了信息化與工業(yè)化的快速融合。作為一種新型產(chǎn)業(yè)模式,工業(yè)物聯(lián)網(wǎng)(Industrial Internet of Things,IIoT)在過去幾年的研究和實踐中受到很大關(guān)注[1-2]。IIoT的迅速發(fā)展使得自動化監(jiān)測系統(tǒng)的設(shè)計與研發(fā)成為新的科技熱點。IIoT將傳感器網(wǎng)絡(luò)與自動化系統(tǒng)相結(jié)合,已被用于多個行業(yè),以提高生產(chǎn)力和安全性[3-4]。自動化監(jiān)測系統(tǒng)在IIoT感知層與應(yīng)用層間起著重要作用,隨著涉及的業(yè)務(wù)需求日益復(fù)雜,它的實現(xiàn)也變得越來越具挑戰(zhàn)性。在工業(yè)應(yīng)用場景中軟件體系結(jié)構(gòu)設(shè)計對于自動化系統(tǒng)的高效運行非常重要。先進的軟件工程解決方案對自動化系統(tǒng)設(shè)計的效率影響很大[5]。Xilinx Zynq AP SoC通過集成處理器的軟件可編程性與FPGA的硬件可編程性,實現(xiàn)了優(yōu)異的設(shè)計靈活性,可提供面向嵌入式領(lǐng)域可重配置的軟件工程解決方案,從而加速生產(chǎn)力。

    BSP在嵌入式系統(tǒng)中扮演著關(guān)鍵角色,主要用來適配特定類型的硬件平臺。它通常包含了用來配置可定制電路的硬件比特流、引導(dǎo)加載操作系統(tǒng)的基礎(chǔ)支持代碼以及主板上所有設(shè)備的驅(qū)動程序。BSP開發(fā)目的在于屏蔽底層硬件,提供操作系統(tǒng)與硬件驅(qū)動,使操作系統(tǒng)能穩(wěn)定運行于主板環(huán)境[6-7]。由于傳統(tǒng)BSP設(shè)計存在不可或不易修改、難以復(fù)用以及設(shè)計流程復(fù)雜等問題,本文面向工業(yè)監(jiān)測領(lǐng)域中的自動化系統(tǒng),采用Xilinx提供的Vivado集成開發(fā)套件及用于構(gòu)建和部署嵌入式系統(tǒng)到Xilinx全可編程處理器平臺的PetaLinux工具,完成了基于Zynq-7000 AP SoC的BSP設(shè)計與實現(xiàn)。

1 BSP總體結(jié)構(gòu)

    BSP設(shè)計最終生成對應(yīng)用層提供支撐的鏡像文件為BOOT.BIN和image.ub。BSP的總體架構(gòu)如圖1所示。BOOT.BIN啟動鏡像主要負責(zé)系統(tǒng)硬件部分配置,用于上電后配置Zynq芯片的處理器系統(tǒng)(Processing System,PS)及可編程邏輯(Programmable Logic,PL),并為Linux操作系統(tǒng)準備運行環(huán)境。image.ub支持內(nèi)核升級,功能可裁剪,由PeteLinux工具編譯打包生成。

qrs3-t1.gif

    第一階段引導(dǎo)加載器(First Stage Boot Loader,F(xiàn)SBL)在啟動存儲區(qū)之后運行,啟動存儲區(qū)在ARM核上電啟動時自動執(zhí)行,負責(zé)加載FSBL至片上存儲器(On Chip Memory,OCM)或在線性Flash存儲介質(zhì)上直接運行。對于運行在Zynq平臺的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各個組成部分對應(yīng)的功能說明如下:

    (1)FSBL。FSBL負責(zé)初始化Zynq AP SoC PS端資源并使用硬件比特流文件配置PL端資源。

    (2)硬件比特流。硬件比特流由Vivado集成開發(fā)工具構(gòu)建的FPGA系統(tǒng)生成,包含F(xiàn)PGA編程信息,用于配置FPGA器件。

    (3)SSBL。SSBL負責(zé)初始化內(nèi)存和必要的外設(shè)資源,設(shè)置Linux內(nèi)核的啟動參數(shù)以及加載Linux系統(tǒng)到內(nèi)存中運行。

    (4)Linux內(nèi)核鏡像。Linux內(nèi)核鏡像是Linux操作系統(tǒng)的核心,提供硬件抽象層、進程及內(nèi)存管理、磁盤與文件系統(tǒng)控制等功能。

    (5)根文件系統(tǒng)。根文件系統(tǒng)基于BusyBox源碼構(gòu)建,負責(zé)管理Linux系統(tǒng)啟動及運行時所必需的目錄和關(guān)鍵性文件。

    (6)設(shè)備樹。設(shè)備樹文件用于描述部分硬件信息并在Linux系統(tǒng)加載設(shè)備驅(qū)動時傳遞配置參數(shù)。

2 FPGA工程設(shè)計

    傳統(tǒng)工業(yè)監(jiān)測設(shè)備中很多是符合RS232、RS422或RS485等串行數(shù)據(jù)通信標(biāo)準的設(shè)備。對于自動化監(jiān)測系統(tǒng)而言,如何面向這些監(jiān)測設(shè)備提供可重配置的接口,成為一個需要解決的關(guān)鍵問題。許多傳統(tǒng)工業(yè)設(shè)備所提供的功能在出廠時便已在固件中完成燒錄定義,無法面向新的業(yè)務(wù)需求進行修改或擴展。然而,對于許多應(yīng)用場景,固定功能的硬件會因為難以進行資源復(fù)用而導(dǎo)致成本提升。FPGA器件因為具有動態(tài)可重構(gòu)的特性,被認為是數(shù)字可演化硬件系統(tǒng)一個很好的平臺[8]。Xilinx使用硅片堆疊技術(shù)設(shè)計出了高容量的FPGA,用于滿足低功耗、低延時及高帶寬的應(yīng)用需求。

2.1 工程構(gòu)建

    在進行FPGA系統(tǒng)設(shè)計時往往需要重用已有的功能模塊,于是類似于軟件開發(fā)庫文件的IP核應(yīng)運而生。IP核通常是預(yù)先設(shè)計好的電路功能模塊,主要被用于ASIC或FPGA系統(tǒng)。Xilinx提供了可連接到高級可擴展接口(Advanced eXtensible Interface,AXI)的通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)Lite。每一個AXI UART Lite IP核都可以實際對應(yīng)一個串行通信接口,為工業(yè)監(jiān)測設(shè)備接入自動化監(jiān)測系統(tǒng)提供支持。AXI UART Lite IP核可以為異步串行數(shù)據(jù)傳輸提供控制器接口。它的設(shè)計目的在于和 AXI4-Lite協(xié)議實現(xiàn)連接。AXI UART Lite的主要性能和優(yōu)勢[9]如下:

    (1)基于AXI4-Lite 規(guī)格的AXI 接口;

    (2)一個發(fā)送通道和一個接收通道(全雙工);

    (3)16個字符的發(fā)送和接收先進先出隊列(First Input First Output,F(xiàn)IFO);

    (4)單個字符的數(shù)據(jù)比特位(5~8)數(shù)量可配置;

    (5)校驗位(奇偶或無)可配置;

    (6)波特率可配置。

    Xilinx提供了Zynq7處理器系統(tǒng)IP封裝,用于加速嵌入式系統(tǒng)的設(shè)計與配置。在Vivado集成開發(fā)環(huán)境中搭建基于Zynq-7000的小型自動化監(jiān)測系統(tǒng)FPGA工程,工程結(jié)構(gòu)如圖2所示。工程中添加了ZYNQ7處理器系統(tǒng)模塊、3個AXI UART Lite模塊以及AXI互聯(lián)模塊等IP核,AXI Interconnect IP負責(zé)將一個或多個AXI存儲器映射的主器件連接到一個或多個存儲器映射的從器件。在進行FPGA系統(tǒng)設(shè)計時還預(yù)留了部分GPIO接口資源,方便對系統(tǒng)功能進行擴展。

qrs3-t2.gif

2.2 資源配置

2.2.1 PS端資源配置

    根據(jù)實際應(yīng)用需求配置Zynq XC7Z010處理器系統(tǒng),并規(guī)劃XC7Z010的PS端MIO資源。MIO是I/O外設(shè)連接的基礎(chǔ)。XC7Z010芯片通過MIO最多可以引出54個三態(tài)通用輸入輸出(General Purpose Input Output,GPIO)引腳。這些GPIO引腳都是在程序上可控的,并且支持動態(tài)修改配置。它們可以單獨配置為輸入、輸出或中斷的功能。PS端部分資源規(guī)劃結(jié)果如表1所示。

qrs3-b1.gif

2.2.2 PL端資源配置

    Zynq中的PL主要用于擴展功能。通過使用多個特殊引腳和信號,可以將Zynq-7000內(nèi)的PS和PL緊密或松散地耦合在一起[10]。XC7Z010主芯片包含用于連接外設(shè)和某些特殊功能引腳的IO接口資源。 特殊引腳最主要用于實現(xiàn)復(fù)位、狀態(tài)指示、系統(tǒng)配置、模式配置等功能,通過特定引腳和功能復(fù)用引腳來實現(xiàn)。XC7Z010的主要特殊引腳的配置說明如表2所示。

qrs3-b2.gif

3 PetaLinux工程設(shè)計

    使用PetaLinux工具構(gòu)建基于Zynq AP SoC的嵌入式Linux操作系統(tǒng)。PetaLinux工具包括定制的BSP生成工具、Linux配置工具以及軟件開發(fā)工具。使用這些工具可以實現(xiàn)引導(dǎo)加載程序、Linux內(nèi)核以及Linux應(yīng)用程序的靈活配置,有利于開發(fā)者在Xilinx處理系統(tǒng)上定制、構(gòu)建和調(diào)配嵌入式Linux解決方案。

3.1 系統(tǒng)頂層配置

    基于Zynq工程模板創(chuàng)建PetaLinux工程,導(dǎo)入固件工程生成的硬件描述文件并進行系統(tǒng)頂層配置,系統(tǒng)頂層配置項包括Linux組件選擇、自動配置項設(shè)置、子系統(tǒng)硬件自動配置項設(shè)置、內(nèi)核引導(dǎo)參數(shù)設(shè)置、U-Boot設(shè)置、鏡像文件打包配置等。其中子系統(tǒng)硬件自動配置項設(shè)置為必選項,允許自定義系統(tǒng)范圍的硬件設(shè)置,如:以太網(wǎng)卡設(shè)置、Flash設(shè)置、串口設(shè)置、實時時鐘(Real-Time Clock,RTC)芯片設(shè)置、SD卡設(shè)置等。Petalinux工具將根據(jù)系統(tǒng)頂層配置解析硬件描述文件,以便更新設(shè)備樹所需的硬件信息。

3.2 Linux內(nèi)核配置

    Linux內(nèi)核主要提供五大功能,分別為虛擬文件系統(tǒng)、網(wǎng)絡(luò)服務(wù)、內(nèi)存管理、進程管理和設(shè)備管理。Xilinx 提供了免費的PetaLinux開發(fā)工具,使開發(fā)人員可以輕松在Zynq AP SoC上配置、構(gòu)建和部署Linux系統(tǒng)及應(yīng)用,提高軟硬件設(shè)計開發(fā)效率。Linux內(nèi)核配置基于Linux 4.6.0內(nèi)核進行,主要包括USB串口驅(qū)動配置、以太網(wǎng)驅(qū)動配置、GSM和CDMA調(diào)制解調(diào)器的USB驅(qū)動配置、Xilinx-uartlite串口驅(qū)動配置、DS18B20溫度傳感器驅(qū)動配置、GPIO支持等。PetaLinux工程基于開源的協(xié)作軟件Yocto創(chuàng)建。Yocto致力于創(chuàng)建可定制的嵌入式產(chǎn)品和統(tǒng)一嵌入式Linux系統(tǒng)的開發(fā)標(biāo)準,它提供了許多模板、工具和方法,使得開發(fā)者無需關(guān)心硬件體系,避免許多重復(fù)工作,從而提高開發(fā)效率和產(chǎn)品質(zhì)量。Linux內(nèi)核的更新以打補丁的方式實現(xiàn),內(nèi)核源碼的更新不影響已修改的系統(tǒng)配置項。

3.3 設(shè)備樹配置

    Linux內(nèi)核通過設(shè)備樹文件獲取板級硬件的細節(jié)信息從而加載設(shè)備驅(qū)動。設(shè)備樹可以對硬件進行規(guī)范化描述,支持多平臺內(nèi)核鏡像,具備簡化的板卡端口,使用更少的平臺描述代碼以及更精簡的設(shè)備驅(qū)動代碼[11]。PetaLinux設(shè)備樹配置關(guān)聯(lián)文件主要有pcw.dtsi、plnx_aarch64-system.dts、system.dts、system-conf.dtsi、system-top.dts。這些文件統(tǒng)一由PetaLinux工程自動生成,開發(fā)者通過修改system-top.dts文件來滿足特定的系統(tǒng)需求?;赯ynq-7000的小型自動化監(jiān)測系統(tǒng)具備網(wǎng)口調(diào)試、RTC時鐘支持、溫濕度監(jiān)測、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)裙δ?。需要在system-top.dts文件中進行相應(yīng)節(jié)點信息的修改或添加新的硬件描述節(jié)點。例如在設(shè)備樹配置文件system-top.dts中添加RTC時鐘硬件描述信息及修改后的網(wǎng)卡芯片節(jié)點信息如下:

    &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總體測試

    在基于XC7Z010的硬件平臺中對BSP進行總體測試,設(shè)備上電后,處理器自動執(zhí)行片內(nèi)BootROM中的代碼,初始化CPU和一些外圍設(shè)備,以便讀取燒錄在NOR Flash中的BOOT.BIN引導(dǎo)鏡像,BOOT.BIN引導(dǎo)鏡像加載存儲在eMMC上image.ub到DDR3中運行。然后,文件系統(tǒng)中的mystartup.sh腳本啟動存儲在eMMC中的系統(tǒng)初始化腳本文件,執(zhí)行系統(tǒng)初始化配置。PetaLinux系統(tǒng)部分啟動信息如圖3所示。

qrs3-t3.gif

    圖3(a)為PL部分擴展的AXI UART Lite模塊注冊加載信息,在Linux下作為標(biāo)準串口分別對應(yīng)設(shè)備文件描述符ttyUL1、ttyUL2及ttyUL3。圖3(b)為內(nèi)存技術(shù)設(shè)備(Memory Technology Device,MTD)驅(qū)動加載信息,MTD是用于訪問存儲介質(zhì)的Linux的子系統(tǒng),此處表示NOR Flash存儲器,共創(chuàng)建了boot、bootenv、kernel以及spare 4個MTD子分區(qū),其中spare分區(qū)為空閑分區(qū),可用于燒錄設(shè)備唯一序列號。圖3(c)為GSM模塊USB接口連接檢測信息及網(wǎng)口芯片啟動狀態(tài)信息,其中GSM模塊對應(yīng)Linux系統(tǒng)下的設(shè)備文件描述符ttyUSB0、ttyUSB1、ttyUSB2、ttyUSB3及ttyUSB4。

5 結(jié)論

    本文實現(xiàn)一種面向自動化監(jiān)測系統(tǒng)的BSP設(shè)計方法,并完成了面向小型微型自動化監(jiān)測系統(tǒng)的BSP設(shè)計與實踐。用于評測BSP功能及性能的硬件平臺選用Xilinx Zynq XC7Z010芯片作為硬件系統(tǒng)主控制器,BSP部分針對自動化監(jiān)測系統(tǒng)應(yīng)具備的基本功能在嵌入式Linux系統(tǒng)中添加了相應(yīng)的設(shè)備驅(qū)動,可充分滿足工業(yè)監(jiān)測領(lǐng)域的業(yè)務(wù)需求。實際測試結(jié)果表明,該BSP具有開發(fā)便捷、通用性強、便于進行功能擴展和Linux內(nèi)核升級、運行穩(wěn)定等特點,驗證了基于Zynq-7000的自動化監(jiān)測系統(tǒng)BSP設(shè)計的可行性與正確性,對于工業(yè)自動化系統(tǒng)的BSP設(shè)計與實現(xiàn)有一定的參考價值和實際指導(dǎo)意義。由于自動化監(jiān)測系統(tǒng)的功能日益復(fù)雜,該BSP設(shè)計仍需在實踐中不斷進行完善。

參考文獻

[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è)計與實現(xiàn)[D].濟南:山東大學(xué),2016.

[7] 凌約雷,邱愛華,席隆,等.國產(chǎn)高可靠控制器BM3803MG的BSP設(shè)計[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è)計指南[M].北京:清華大學(xué)出版社,2013.

[11] 張茂天,張磊,郭曉,等.基于設(shè)備樹的MPC8247嵌入式Linux系統(tǒng)開發(fā)[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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。