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