Cyclone V 启用的 SDRAM 桥被阻塞

Enabled SDRAM bridge of Cyclone V is blocked

我有一个 DE10-Nano Cyclone V 开发板,带有 1 GB 的外部 DDR3 RAM,我想实现一个驱动程序,它可以管理之间的通信Linux 运行在 ARM Cortex-A9 处理器和 Cyclone V 的 FPGA 架构上运行。
使用 dma_alloc_coherent 我分配一定数量的内存并将硬件地址写入我编程的 FPGA 模块。
然后我继续通过 SDRAM AXI 接口向给定地址写入任意数字,但显然 A​​WREADYWREADY 信号都没有得到由 SDRAM AXI-slave 断言。
我已将 SDRAM AXI 接口配置为 运行 325 MHz256 位 宽(数据长度),具有 32 位 寻址长度并成为 A​​XI3 从设备。 SDRAM 接口配置为 TrustZone-aware 设备(ARM TrustZone 设置)
我还将一些其他配置线硬连线到 AXI 从设备,我现在将列出:

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 桥接驱动程序时,状态显示为 'enabled'。
网桥仍然阻止通信的原因是什么?
感谢您的帮助。

问题已解决:
显然,即使 Linux 说网桥已启用,但实际上并没有。 必须将某些配置位写入 HPS 的配置结构,否则模块将无法工作。
1、用Quartusassemble步骤生成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)