該筆記主要記錄HPS端如何經過AXI Bridge控制FPGA端口的GPIO,主要是如何操做FPGA側的Ledshell
一、AXI Bridge
AXIB主要包括H2FB、F2HB、LWH2FB(Light Weight Bridge)
H2FB 的AXI地址位寬是30Bit,數據位寬3二、6四、128可配置,ID位寬爲12Bit
F2HB 的AXI地址位寬是32Bit ,數據位寬3二、6四、128可配置,ID爲8Bit
LWH2FB的地址位寬是21Bit,數據位寬是32bit,ID爲8Bit,適用於作控制總線
二、HPS控制FPGA端的GPIO
(1) Hardware:在qsys下把GPIO Core鏈接到LWBridge Master下
1)下載sof文件
2)執行generate_hps_qsys_header.sh文件生成有關硬件信息的供軟件使用的頭文件,其實就是一個shell命令寫在了文件裏面,便於執行
sopc-create-header-files \
"./soc_system.sopcinfo" \
--single hps_0.h \
--module hps_0
(2) Software:spa
1)映射GPIO組件的物理地址到應用程序能夠操做的虛擬地址
前面還有兩步分別是打開內存設備和虛擬地址映射mmap獲得 virtual_addr
LWAXI總線相對於其虛擬基地址的偏移量
(ALT_LWFPGASLVS_OFST & (unsigned long) HW_REGS_MASK)
FPGA外設相對於LWAXi的地址爲PIO_LED_BASE
最終的虛擬地址入口地址爲:
h2p_lw_led_addr = virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + PIO_LED_BASE) & (unsigned long)(HW_REGS_MASK));
應用程序經過獲得的虛擬地址入口控制FPGA端的Led
三、最後經過操做h2p_lw_led_addr就能夠對FPGA端的GPIO操做