问题:
zynq 7030板卡使用usb设备驱动时,报错如题。
最终的定位:
硬件问题。
解决过程:
usb驱动在之前的一个7020板卡上使用过时没问题的,除了fsbl要更改,再换掉PL代码就可以的。当时也不怀疑自己,只是由于硬件工程师很忙,所以自己先定位。
查看各大佬和官方的论坛,搜集到一下方法:
1)驱动中增加USB控制器的复位
查看自己的最小系统,确实是reset管脚没有勾选,并硬件连接到PL一个比较随意的管脚上;
在内核中修改代码增加管脚控制,结果是无效,依然报上述错误。
附:增加复位的代码位置为/driver/usb/host/xilinx-dr-of.c。
2)修改fsbl中usb的mio管脚顺序(病急乱投医!!!)
修改后的顺序为:
EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU ,0x00001380U),
EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU ,0x00001380U),
EMIT_MASKWRITE(0XF80007B8, 0x00003FFFU ,0x00001200U),
EMIT_MASKWRITE(0XF80007BC, 0x00003F01U ,0x00001201U),
EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU ,0x00001380U),
EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU ,0x000002E1U),
EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU ,0x00001200U),
EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU ,0x00001200U),
EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU ,0x000002E0U),
EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU ,0x00001380U),
EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU ,0x00001380U),
EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU ,0x00001380U),
以上修改完,依然无效。
附:修改位置为ps7_init.c。
3)万般无奈之下看硬件
对比USB控制器手册上的原理图,有一处差异。
我们的图:
控制器的参考图:
VDD33手册说明为:
由于不懂硬件,将此问题高速硬件工程师后,他的说法是VDD33直接供Vbat可能带不动,给Vbat增加一个3.3v供电后,问题解决了。