亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ZYNQ Linux 平臺的FPGA 外設(shè)控制研究

        2023-09-27 10:43:12赫忠天曾慶立芮天喆
        電子制作 2023年19期
        關(guān)鍵詞:外設(shè)內(nèi)核嵌入式

        赫忠天,曾慶立,芮天喆

        (吉首大學(xué) 通信與電子工程學(xué)院,湖南吉首,416000)

        0 引言

        目前FPGA 器件具有的并發(fā)處理數(shù)據(jù)的顯著優(yōu)勢,而且功耗低,可用于實時處理視頻圖像數(shù)據(jù).但是有外設(shè)控制能力不足的缺陷。本文介紹了Xilinx 公司推出的ZYNQ 高性能芯片[1],并指出了ZYNQ 系列芯片采用了ARM 處理器和FPGA 邏輯資源的高效結(jié)合,以及處理器與FPGA 之間通過高速的AXI 總線互聯(lián)的特性[2~3]。這些特點能夠最大化處理速度、控制能力和傳輸速率,并且通過Xilinx 官方的PetaLinux 工具可以更方便地移植Linux 系統(tǒng),F(xiàn)PGA 也可以在Linux 系統(tǒng)中作為可編程外設(shè)使用。ZYNQ 在單芯片內(nèi)實現(xiàn)了ARM+FPGA 架構(gòu),為應(yīng)用和設(shè)計帶來了諸多方便和優(yōu)點。

        綜上所述,ZYNQ 高性能芯片具有強大的處理能力和靈活的可編程性,是應(yīng)用和設(shè)計的理想選擇。對于設(shè)計人員來說,了解ZYNQ 芯片的架構(gòu)和特性,并掌握ARM 處理器和FPGA 之間的數(shù)據(jù)連通技術(shù),將有助于更好地利用ZYNQ 芯片的潛力,實現(xiàn)高效的系統(tǒng)設(shè)計。ZYNQ 面臨著有開發(fā)人員要求高,開發(fā)成本高的缺點。

        ARM 和FPGA 交互有三種接口,分別是GP,HP,ACP,這三個接口都是PS 端的接口[3]。而PS 與PL 最主要的連接方式則是一組AXI 接口。AXI 互聯(lián)接口作為MPSOC PS 和PL 之間的橋梁,能夠使兩者協(xié)同工作,進而形成一個完整的、高度集成的系統(tǒng)。在邏輯環(huán)境下,控制PL 端資源,需要通過硬件資源與參考的庫文件,操作寄存器來實現(xiàn),需要較多的知識儲備和對AXI 的理解。如果把PL 資源映射為Linux下的一個設(shè)備,方便用戶的控制。本文嘗試將在ARM 端移植Linux[4~5],并通過編寫設(shè)備樹與驅(qū)動文件,將PL 的PWM 邏輯塊映射為塊設(shè)備,有較大的靈活性。

        1 系統(tǒng)硬件環(huán)境設(shè)計

        ■1.1 MPSoC 簡介

        ZYNQ 是由賽靈思公司推出的新一代可拓展平臺,采用異構(gòu)架構(gòu),同時擁有ARM 端處理器的軟件可編程性與FPGA 端的硬件可編程性,并且雙核通過AXI 高速接口相連接,具備高效的系統(tǒng)性能與可擴展性。根據(jù)官方的信息,可以看到ZYNQ 可以大致分為三個系列,低端的7000 系列,中端的MPSoC 系列,高端的RFSoc 系列。

        Zynq UltraScale+MPSoC 屬于ZYNQ 的中端系類產(chǎn)品,主要針對控制、網(wǎng)絡(luò)和圖形這幾大領(lǐng)域,基于ZynqMPSoC的硬件系統(tǒng)在視頻監(jiān)視、物聯(lián)網(wǎng)、工廠自動化等領(lǐng)域有廣泛應(yīng)用,既能利用FPGA 的邏輯資源實現(xiàn)數(shù)據(jù)的高速并行處理,又能利用ARM 移植操作系統(tǒng)帶來的控制便利性與拓展性。Zynq MPSoC 在單個芯片上集成了四核Arm Cortex-A53 芯片與賽靈思可編程邏輯資源,采用這種交互式協(xié)同工作的方式具有顯著優(yōu)勢。其中一個優(yōu)勢是它可以大大縮小嵌入式系統(tǒng)的體積,同時提供適當(dāng)?shù)男阅芄谋群凸δ馨踩浴_@種方式可以增強系統(tǒng)的性能,方便嵌入式系統(tǒng)的設(shè)計。另一個優(yōu)勢是它可以提高系統(tǒng)的功能安全性。通過多個處理單元或處理器的協(xié)作,系統(tǒng)可以更加可靠地進行操作,從而增強系統(tǒng)的性能和可靠性。

        ■1.2 系統(tǒng)原理框圖

        由圖1 可知,在Vivado 下采用Block Design 的方式,連接IP 核,其中PWM 為Verilog 的IP 核,ZYNQ 為ARM 端,Processor System Reset 為復(fù)位控制模塊,AXI Interconnect為官方IP 核,通過AXI 協(xié)議實現(xiàn)ARM 與FPGA 的數(shù)據(jù)傳輸。生成硬件資源后,輸出xsa 文件。

        圖1 系統(tǒng)原理框圖

        ■1.3 PWM 的IP 核

        PWM 在嵌入式設(shè)備中使用很多,常用于控制電機、控制振動器件、調(diào)節(jié)背光、呼吸燈等等。可以通過調(diào)節(jié)脈沖的占空比來調(diào)節(jié) LED 的亮度。

        通過編寫Verilog 代碼,并把它封裝成IP 核的形式方便調(diào)用??刂芇WM 輸出有兩個關(guān)鍵參數(shù),一是頻率,二是占空比。自定義IP 可以理解為配置FPGA 的寄存器資源變成我們想要的設(shè)備,添加IP 后,我們就可以像操作ARM 資源一樣,通過操作寄存器來操作FPGA 的資源??驁D連接完成后,點擊Assign Address 實現(xiàn)地址的分配。

        圖2 PWM 配置模塊

        圖3 ZYNQ 硬核

        ■1.4 最小系統(tǒng)設(shè)計

        通過配置嵌入式最小系統(tǒng)生成需要的硬件環(huán)境,最小系統(tǒng)有兩個要求,第一它是以PS 端為主,是使系統(tǒng)正常工作的最小條件;第二它為其他系統(tǒng)建立起基礎(chǔ)。ZYNQ 硬核的架構(gòu)圖通過圖形界面配置,連接時鐘與信號后,設(shè)置自動連接,并點擊Validate Design 驗證連接圖。通過該圖形界面,配置PS 端口的DDR、串口、時鐘等模塊。

        2 軟件系統(tǒng)設(shè)計

        ■2.1 PetaLinux 介紹

        PetaLinux 操作系統(tǒng)是Xilinx 公司推出的全功能嵌入式Linux 操作系統(tǒng),將針對ZYNQ 定制的u-boot 源碼、Linux內(nèi)核源碼以及開發(fā)板相應(yīng)的硬件平臺配置,集成到一個對應(yīng)的開發(fā)包,方便開發(fā)人員生成、配置、編譯及自定義 Linux系統(tǒng)。PetaLinux 根據(jù)嵌入式開發(fā)的需求采用板級支持包,并且PetaLinux 包含部分常用IP 核的驅(qū)動程序,方便用戶移植,減少驅(qū)動編寫的工作量。通過PetaLinux 與Xilinx硬件設(shè)計工具Vivado 協(xié)同工作,幫助開發(fā)者簡化了ZYNQ移植Linux 系統(tǒng)的開發(fā)工作。

        虛擬機安裝PetaLinux 環(huán)境。利用Xilinx 公司的Vivado 軟件進行FPGA 開發(fā),然后使用PetaLinux 軟件構(gòu)建與硬件平臺適配的嵌入式Linux 系統(tǒng),最終將驅(qū)動軟件及應(yīng)用程序?qū)肭度胧絃inux 系統(tǒng)中。此外,通過配置zynq_altk_defconfig 文件與makefile 等文件來增加驅(qū)動模塊。

        ZYNQ 中MPSoC 系列的嵌入式軟件棧??梢砸評boot作為分界線,uboot 之前的與硬件的關(guān)系比較密切,我們借助PetaLinux 工具進行配置。先使ZYNQ UltraScale+MPSoC 上電,開始由BootROM 對ZYNQ 進行初始化啟動,進而加載fsbl 到OCM 用于啟動fsbl;fsbl 之后加載PMU Firmware,進而加載ARM Trusted Firmware 用于配置DDR,之后將uboot 加載到DDR 以啟動uboot。Uboot 配置與Linux 內(nèi)核與硬件平臺關(guān)系不大,可以參考類似的設(shè)計,采用uboot 來加載Linux 系統(tǒng)鏡像文件到DDR 成功啟動Linux。

        PetaLinux 的設(shè)計流程:通過Vivado 創(chuàng)建硬件平臺,得到xsa 文件。

        通過xsa 硬件配置文件獲取fsbl、uboot、內(nèi)核等的配置信息。使用Petalinux 開發(fā)工具,根據(jù)xsa 文件自動分析ZYNQ MPSoC PS 端的配置,從而自動配置uboot 和linux 內(nèi)核,相當(dāng)于自動移植了uboot 和linux 內(nèi)核。

        Uboot 介紹:這是一個常用的開源bootloader。在系統(tǒng)啟動過程中,bootloader 是一個重要的組成部分。它在操作系統(tǒng)運行之前執(zhí)行,通過初始化硬件設(shè)備,建立內(nèi)存空間的映射表,為操作系統(tǒng)內(nèi)核做好準(zhǔn)備。Uboot 是一款廣泛使用的bootloader,支持多種處理器架構(gòu)。它的主要功能是將Linux 內(nèi)核從閃存(如SD 卡、eMMC、NAND 和NOR FLASH 等)中復(fù)制到DDR 內(nèi)存中,初始化和配置硬件設(shè)備,然后啟動Linux 內(nèi)核。這使得Uboot 成為開發(fā)嵌入式系統(tǒng)的關(guān)鍵組成部分,可以在各種不同的硬件平臺上運行。在啟動過程中,Uboot 首先會初始化外設(shè)(如DDR、串口、網(wǎng)卡等),然后通過讀取閃存中的配置文件,將Linux 內(nèi)核加載到DDR 中,并將控制權(quán)交給Linux 內(nèi)核。在此過程中,Uboot 還提供了一些有用的功能,例如通過網(wǎng)絡(luò)或串口進行遠程調(diào)試和更新固件。

        Bootloader 不僅依賴于CPU 的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級設(shè)備的配置。這意味著即使兩個不同的嵌入式開發(fā)板使用相同的處理器,要想讓在一個板子上運行的bootloader 也能在另一個板子上運行,通常需要修改bootloader 的源代碼以適應(yīng)不同的硬件環(huán)境。因此,由于嵌入式系統(tǒng)中存在大量的不同的硬件平臺和處理器架構(gòu),建立通用的bootloader 幾乎是不可能的。每個嵌入式系統(tǒng)都需要定制的bootloader 來確保正確的初始化和配置硬件設(shè)備,并啟動操作系統(tǒng)內(nèi)核。

        總之,bootloader 是嵌入式系統(tǒng)中重要的組成部分,它確保了正確地初始化和配置硬件設(shè)備,并為操作系統(tǒng)內(nèi)核做好準(zhǔn)備。但由于嵌入式系統(tǒng)中存在大量的不同的硬件平臺和處理器架構(gòu),建立通用的bootloader 幾乎是不可能的。每個嵌入式系統(tǒng)都需要特定的bootloader 來滿足不同的硬件環(huán)境和要求。

        ■2.2 配置設(shè)備樹

        ps 端的基本配置使用設(shè)備樹來描述,pl 作為ps 的外設(shè),也是作為設(shè)備樹中的一部分。通過打開 system-user.dtsi文件,在根節(jié)點中添加pwm 的節(jié)點。配置compatible 節(jié)點兼容性與物理地址。設(shè)備樹devicetree,也稱作Open Firmware(OF)或FlattenedDevice Tree(FDT)。本質(zhì)上是一個字節(jié)碼格式的數(shù)據(jù)結(jié)構(gòu),其中包含信息在內(nèi)核啟動時非常有用。bootloader 在跳到內(nèi)核入口點之前將這一組數(shù)據(jù)復(fù)制到RAM 中的已知地址。

        設(shè)備樹的嚴(yán)格的規(guī)范,卻沒有規(guī)定哪些內(nèi)容可以放置其中以及放置的位置。內(nèi)核可以搜索設(shè)備樹中的任意路徑和參數(shù)。程序員來決定哪些配置作為參數(shù)放進設(shè)備樹里,以及放置在什么地方。采取標(biāo)準(zhǔn)的樹結(jié)構(gòu),則可用一套方便的APl來操作。例如,約定好如何定義總線上的外設(shè),那么API 可以獲取到驅(qū)動所需的基本信息:地址、中斷和自定義變量。后面會介紹更多。對于我們大多數(shù)人來說,我們用設(shè)備樹來向內(nèi)核描述對硬件的添加或刪除操作,作為響應(yīng),內(nèi)核就可以加載或卸載相應(yīng)的驅(qū)動。硬件的特殊信息也可以通過設(shè)備樹來向內(nèi)核傳達。

        ■2.3 驅(qū)動程序設(shè)計

        本文討論了硬件設(shè)備的分類以及它們在內(nèi)核中的驅(qū)動編寫和維護的問題。標(biāo)準(zhǔn)設(shè)備的驅(qū)動可以參考類似設(shè)計,作為主內(nèi)核源碼樹的一部分。與此同時,更多的非標(biāo)準(zhǔn)設(shè)備的驅(qū)動不屬于內(nèi)核子系統(tǒng),并且通常使用內(nèi)核內(nèi)部函數(shù)和宏,這增加了驅(qū)動的編寫和維護的復(fù)雜性,并且這些驅(qū)動不能進入主內(nèi)核源碼。為了解決這個問題,提出了用戶空間I/O 框架(Userspace I/O framework)。

        用戶空間I/O 框架采用用戶態(tài)驅(qū)動和uio 機制來實現(xiàn)FPGA 驅(qū)動的控制。用戶空間I/O 框架通過將設(shè)備的控制流程從內(nèi)核轉(zhuǎn)移到用戶空間,實現(xiàn)了驅(qū)動的解耦和靈活性,減少了驅(qū)動編寫和維護的復(fù)雜性,并且可以將這些驅(qū)動加入到主內(nèi)核源碼中。這種方法的一個優(yōu)點是可以利用用戶空間庫和工具,例如C 和C++庫和調(diào)試工具。另一個優(yōu)點是可以利用現(xiàn)有的用戶空間應(yīng)用程序和框架,例如網(wǎng)絡(luò)協(xié)議棧和文件系統(tǒng)。

        總之,用戶空間I/O 框架是一個解決驅(qū)動編寫和維護的復(fù)雜性問題的創(chuàng)新方法。它可以通過將設(shè)備的控制流程從內(nèi)核轉(zhuǎn)移到用戶空間,實現(xiàn)驅(qū)動的解耦和靈活性,并且可以將這些驅(qū)動加入到主內(nèi)核源碼中。這種方法不僅可以利用用戶空間庫和工具,還可以利用現(xiàn)有的用戶空間應(yīng)用程序和框架。

        使用 PetaLinux 新建名為“ax-pwm”的驅(qū)動程序,編寫ax-pwm.c 代碼。完成編寫后執(zhí)行PetaLinux-config-c rootfs 命令選上新增的驅(qū)動程序。本PWM 驅(qū)動按照字符設(shè)備編寫,使用結(jié)構(gòu)體alinx_char_dev,設(shè)置該字符設(shè)備號、設(shè)備地址與映射的虛擬地址。驅(qū)動完成后,可以通過操作/dev/ax-pwm 控制該驅(qū)動。pwm 的處理也很簡單,從設(shè)備樹中獲取地址,然后在操作函數(shù)中操作地址。也可在Vitis 中采用交叉編譯環(huán)境,生成Linux 下可執(zhí)行的elf 文件來測試。

        本文涉及了ARM 和FPGA 之間的互聯(lián)以及使用AXI總線來傳輸數(shù)據(jù)和外設(shè)控制數(shù)據(jù)的內(nèi)容。在這種互聯(lián)中,F(xiàn)PGA被視為ARM的外設(shè),需要通過AXI總線進行數(shù)據(jù)交互。為了完成這種交互,需要驅(qū)動兩者之間的總線。由于嵌入式軟件功能通常在Linux 系統(tǒng)上進行開發(fā),因此AXI 總線的驅(qū)動軟件開發(fā)需要遵循Linux 驅(qū)動框架。

        總之,ARM 和FPGA 的互聯(lián)非常重要,AXI 總線是實現(xiàn)這種互聯(lián)的關(guān)鍵。對于嵌入式軟件開發(fā)人員來說,熟悉Linux 驅(qū)動框架是必要的,因為這可以幫助他們開發(fā)出符合標(biāo)準(zhǔn)的AXI 總線驅(qū)動程序,從而實現(xiàn)ARM 和FPGA 之間的數(shù)據(jù)交互。

        3 實驗結(jié)果分析

        ■3.1 波形仿真

        本次設(shè)計使用的仿真工具為Vivado 自帶仿真器Simulate,通過編寫Testbench 文件仿真。在仿真文件中提供25MHz 時鐘信號,采用狀態(tài)機的方式,周期性的讓占空比在最小值最大值之間變化。圖4 為信號的變化圖。通過圖中波形可發(fā)現(xiàn),占空比隨著時鐘周期變換,仿真結(jié)果表明,該PWM 控制器邏輯功能正確,符合本次設(shè)計要求。

        圖4 PWM 波形仿真

        ■3.2 驅(qū)動調(diào)用測試

        本文提到了利用Xilinx 公司的Vivado 軟件完成FPGA側(cè)的開發(fā)并導(dǎo)出硬件平臺文件,然后使用PetaLinux 軟件構(gòu)建與硬件平臺適配的嵌入式Linux 系統(tǒng),最終將驅(qū)動軟件及應(yīng)用程序?qū)肭度胧絃inux 系統(tǒng)中,以完成嵌入式設(shè)備的開發(fā)。最后,需要重新給設(shè)備加電以使其生效。

        在這個過程中,F(xiàn)PGA 的開發(fā)需要使用Xilinx 公司的Vivado 軟件進行。Vivado 提供了許多工具和資源,可以幫助設(shè)計師完成從電路設(shè)計到綜合和驗證的各個步驟。在開發(fā)完成后,需要將硬件平臺文件導(dǎo)出,以便在PetaLinux 中使用。

        PetaLinux 是一個嵌入式Linux 系統(tǒng)開發(fā)工具,可以根據(jù)硬件平臺文件構(gòu)建與硬件平臺適配的嵌入式Linux 系統(tǒng)。使用PetaLinux 可以簡化Linux 系統(tǒng)的開發(fā)和調(diào)試,同時提高開發(fā)效率。完成系統(tǒng)移植后,需要將驅(qū)動軟件及應(yīng)用程序?qū)肭度胧絃inux 系統(tǒng)中。這可以通過文件傳輸協(xié)議(FTP)或者其他通信方式實現(xiàn)。在將驅(qū)動軟件和應(yīng)用程序?qū)胂到y(tǒng)之前,需要確保它們與硬件平臺和嵌入式Linux 系統(tǒng)的適配性。

        最后,在完成上述操作后需要重新給設(shè)備加電,以使其生效。這個步驟非常重要,因為只有重新加電才能使設(shè)備正確地加載并運行新的軟件和驅(qū)動程序。在QT 中編寫測試代碼,使得PL 端占空比不斷改變,操作/dev/ax_pwm 模塊,可以觀察到PL 端的LED 呼吸燈閃爍。

        4 結(jié)束語

        BOOT.BIN 的文件由fsbl、uboot、設(shè)備樹文件、linux內(nèi)核、根文件系統(tǒng)與PL 端的system.bit 組成。System.bit 為FPGA 配置文件,在啟動的第二階段FSBL 中,由BootROM 引導(dǎo)加載到片上RAM,配置FPGA。PeteLinux根據(jù)xsa 文件可以配置并生成設(shè)備樹文件,在/device-tree目錄,其中pl.dtsi 為部分IP 核的設(shè)備樹文件,systemuser.dtsi 是我們根據(jù)需要修改的用戶文件。

        本文首先對比分析MPSoC 裸機硬件平臺ZYNQ 的優(yōu)缺點,提出一種在Linux 下將FPGA 端作為可編程外設(shè)的方法。經(jīng)過測試,驗證了MPSoC 硬件平臺Linux 控制FPGA 端可行,并將映射到ARM 端的dev 設(shè)備。本方案的成功實現(xiàn)對后續(xù)ZYNQ 設(shè)計具有一定的指導(dǎo)意義,同時,對其他系統(tǒng)高性能、高實時的嵌入式應(yīng)用具有一定的參考價值。

        猜你喜歡
        外設(shè)內(nèi)核嵌入式
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        Microchip推出具備雙ADC外設(shè)的全新器件,擴展其低成本8位PIC?單片機產(chǎn)品線
        貼身呵護 必不可少的PSP外設(shè)
        亚洲人精品亚洲人成在线| 在线视频观看国产色网| 亚洲网站一区在线播放| 国产一区二区三区三区四区精品| 在厨房被c到高潮a毛片奶水| 国产老熟女网站| 熟女少妇在线视频播放| 亚洲av无码一区二区三区系列| 久久99国产亚洲高清观看韩国| 中文字幕一区二区三区人妻少妇| 欧美粗大无套gay| 国产综合色在线视频| 国产国拍亚洲精品永久69| 日韩精品国产一区在线| 91国产精品自拍视频| 水蜜桃精品视频在线观看| 国产精品情侣呻吟对白视频| 国产精品www夜色视频| 青青草97国产精品免费观看| 亚洲午夜精品久久久久久人妖| 在线观看亚洲精品国产| 性感人妻一区二区三区| 国产精品高湖呻呤久久av| 日本免费一区二区在线看片| 日本精品一区二区三区福利视频 | 久久精品中文字幕女同免费| 少妇性饥渴bbbbb搡bbbb| 狠狠人妻久久久久久综合| 欧美日韩国产亚洲一区二区三区| 少妇一级aa一区二区三区片| 开心五月激情五月天天五月五月天| 性无码一区二区三区在线观看| 东北妇女xx做爰视频| 日韩AV有码无码一区二区三区| 久久久婷婷综合五月天| 日本av一区二区三区四区| 大香焦av一区二区三区| 国产超碰人人做人人爽av大片 | 亚洲一区二区三区成人| 美女裸体无遮挡黄污网站| 国产av精品一区二区三区不卡 |