1

我有一个来自 Terasic 的带有 1 GB 外部 DDR3 RAM 的 DE10-Nano Cyclone V开发板,我想实现一个驱动程序,它可以管理在 ARM Cortex-A9 处理器上运行的 Linux 和 FPGA 架构之间的通信Cyclone V.
使用dma_alloc_coherenti 分配一定数量的内存并将硬件地址写入我编程的 FPGA 模块。
然后,我继续通过 SDRAM AXI 接口将任意数字写入给定地址,但显然AWREADYWREADY信号都不会被 SDRAM AXI-slave 断言。
我已将 SDRAM AXI 接口配置为以325 MHz运行,为256 位宽(数据长度),具有32 位寻址长度并成为AXI3 从机。SDRAM 接口配置为TrustZone-aware设备(ARM TrustZone 设置)

assign axm_m0_arburst = 'd0;
assign axm_m0_arcache = 'd0;
assign axm_m0_arid = 'd0;
assign axm_m0_arlen = 'd0;
assign axm_m0_arlock = 'd0;
assign axm_m0_arprot = 'd0;
assign axm_m0_arsize = 'b101;

assign axm_m0_awburst = 'd0;
assign axm_m0_awcache = 'd0;
assign axm_m0_awid = 'd0;
assign axm_m0_awlen = 'd0;
assign axm_m0_awlock = 'd0;
assign axm_m0_awprot = 'd0;
assign axm_m0_awsize = 'b101;
assign axm_m0_wid = 'd0;
assign axm_m0_wstrb = 'hFFFFFFFF;

在 Linux (/sys/class/fpga-bridge/br4) 中查看 FPGA 桥驱动程序时,状态显示为“启用”。
网桥仍然阻止通信的原因可能是什么?
谢谢你的帮助。

4

1 回答 1

1

问题已解决:
显然,即使 Linux 表示已启用网桥,但实际上并未启用。必须将某些配置位写入 HPS 的配置结构,否则模块将无法工作。
1. 使用 Quartus assemble 步骤生成一个 handoff 文件夹。这会生成所有网桥的配置描述等。
2. 使用 bsp-editor 生成并编译第一阶段引导加载程序,该引导加载程序将包含一些全局变量,用于存储配置值并使它们可用于引导脚本。
3. 生成包含以下内容的引导脚本:

echo -- Programming FPGA --
fatload mmc 0:1 $fpgadata soc_system.rbf;
fpga load 0 $fpgadata $filesize;

run bridge_enable_handoff;
mw $fpgaintf $fpgaintf_handoff;
mw $fpga2sdram $fpga2sdram_handoff;
go $fpga2sdram_apply;
mw $axibridge $axibridge_handoff;
mw $l3remap $l3remap_handoff;
#md $fpgaintf;
#md $fpga2sdram;
#md $axibridge;

setenv fdtimage soc_system.dtb;
setenv mmcroot /dev/mmcblk0p2;
setenv mmcload 'mmc rescan;${mmcloadcmd} mmc 0:${mmcloadpart} ${loadaddr} ${bootimage};${mmcloadcmd} mmc 0:${mmcloadpart} ${fdtaddr} ${fdtimage};';
setenv mmcboot 'setenv bootargs console=ttyS0,115200 root=${mmcroot} rw rootwait; bootz ${loadaddr} - ${fdtaddr}';

run mmcload;
run mmcboot;

注释的行会导致崩溃,因为显然数据未对齐,并且处理器不允许此类访问。我会就这个问题做进一步的调查。

为了进一步阅读这些主题,我推荐以下页面:
Cyclone V HPS Memory Map (Altera)
Tutorial on FPGA soft programming (Rocketboards)
How to enable HPS bridges (Altera)

于 2017-10-01T12:08:26.563 回答