我已经在 Altera DE1-SoC 开发板上工作了 8 个月。我正在处理的系统包括一个 Cyclone V FPGA 芯片,尤其是 5CSEMA5F31C6N。它在芯片上运行嵌入式 Linux 操作系统。
一切都很好,开发正在进行中。两周前,公司的一名硬件工程师组装了一块新的定制板。设计和组件与开发板的大部分相似。所有与 HPS 相关的引脚都以相同的方式连接,一个主要区别是默认控制台端口是 UART1。这个问题已经解决,我现在可以通过 UART1 接收 U-boot 和内核消息。
但是系统并没有完全启动。我已将此归因于多种原因。首先,我有一个 init.d 脚本可以导出 GPIO LED 并创建一个 sysfs 文件。导出 gpio pin 有效,但是,改变方向,或改变值,或从中读取,会导致系统冻结。我在 init.d 脚本上禁用了该功能并重新启动了设备。这次引导在另一个 init.d 脚本行上失败。该行将更改轻量级桥中寄存器的值。命令是devmem 0xFF200XXX 32 1
,其中 XXX 是特定的寄存器。
我尝试在所有网桥上使用 devmem,但所有尝试都会冻结 Linux。我尝试在 HPS 的 UART 寄存器、HPS 的 SDCard 寄存器(此处引用)上使用 devmem ,但它没有冻结。
我可以通过读取每个桥的状态 sysfs 文件来验证桥是否已启用: fpga_bridge state returns enabled
我还可以通过此 dmesg 输出验证网桥是否链接到驱动程序: dmesg output
我使用 Quartus Platform Designer 在 hps 配置中启用了所有三个桥接器。我的 u-boot.scr 中也有以下几行:
fatload mmc 0:1 $fpgadata soc_system.rbf;
fpga load 0 $fpgadata $filesize;
setenv fdtimage soc_system.dtb;
run bridge_enable_handoff;
run mmcload;
run mmcboot;
我还尝试按照这些说明通过 U-boot 命令行启用网桥。
但是,我无法将任何内容写入 $l3regs: 写入 l3regs
我正在使用带有 4.4 Linux 内核的 Buildroot 2016.05 构建操作系统。要创建 .rbf、.dts、.dtb、preloader-mkpimage.bin 和 u-boot 文件,我使用的是 SoC EDS 18.1 [Build 625]。
我已经没有什么可以尝试的了。
如果我能够使用 sysfs 文件从 Linux 操作系统打开和关闭 LED,我会认为问题已解决。
假设硬件是正确的,还有什么可能是原因,我该如何解决?