Zynqmp Linux Freezes When Loaded via JTAG
0x0 问题
连接 JTAG 调试 Xilinx 板子的时候,板子上的 Linux 系统有时会挂住,失去响应。
对于这个问题,这里是一些有用的链接:
- Petalinux on Ultrascale+ freezes when loaded via XVC JTAG interface @ https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-on-Ultrascale-freezes-when-loaded-via-XVC-JTAG/td-p/833985
- zcu102 linux hung after jtag scan @ https://forums.xilinx.com/t5/Evaluation-Boards/zcu102-linux-hung-after-jtag-scan/td-p/829604
总结下来,这个问题的原因,是因为 cpu idle 时,cpu 会被 Linux 关电,从而导致调试器无法工作。
0x1 解决办法
在 Linux 启动参数里,加上 cpuidle.off=1
,可以解决这个问题。
比如,在 u-boot 里这样配置:
setenv bootargs 'console=ttyPS0,115200n8 earlycon clk_ignore_unused cpuidle.off=1'
然后启动 Linux 即可。
0x2 参考
- AR# 69143
- 2017.x-2018.x Zynq UltraScale+ MPSoC: Connecting XSDB to Linux CPU idle
- https://www.xilinx.com/support/answers/69143.html