1

我一直在使用 Petalinux 在 Zynq 芯片上开发一个系统。对我来说一直是个谜的一件事是从 petalinux 向芯片的逻辑端发出复位的方法。在 Vivado 中,当添加内存映射外设时,会自动插入处理器复位模块,并且复位连接到 FCLK_ARESETx_N 引脚。有没有办法从用户空间驱动这个重置?我可以很高兴地从内存映射模块控制逻辑复位,但我一直对此感到好奇。

4

1 回答 1

2

slcr.c中曾经有一个 sysfs 接口正是为了这个目的,但它在这个提交中被删除了。删除的原因是因为“永远不应使用外围设备的重置控件,因为设备驱动程序控制外围设备”......

当时您可以通过将 1 写入 来断言 FCLK_ARESETx_N 信号/sys/class/xslcr_reset/fpgax_out/reset

如果您仍想使用来自用户空间的复位信号,您可以使用devmem命令(或mmap等)手动与 SLCR 寄存器通信。对我来说,合适的寄存器是 0xf8000240。这来自...

  • .dts 中的 SLCR 基地址为 0xf8000000
  • 来自 slcr.c 的 FPGA 复位偏移量为 0x240

第 n 位将控制第 n 个复位信号。要从用户空间重置所有行,请使用:

devmem 0xf8000240 32 0xf #Raise reset
devmem 0xf8000240 32 0x0 #Lower reset

希望这可以帮助!

于 2016-01-29T12:16:29.817 回答