ZYNQ-ZedBoard USB HOST问题初探

在用Vivado (2015.4.2)在ZedBoard上搭建如图所示的PS最小系统时,USB-OTG无法正常使用且在启动LOG中报错。

经过与原厂的各个启动文件进行对比替换,最后确定是Vivado工程生成的bit流出了问题。也就是说建立的工程不对。

USB 启动错误提示信息:外置PHY芯片初始化失败,载入模块失败。

ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
e0002000.usb supply vbus not found, using dummy regulator
ci_hdrc ci_hdrc.0: unable to init phy: -110
ci_hdrc: probe of ci_hdrc.0 failed with error -110
mousedev: PS/2 mouse device common for all mice

由于已经排除了fsbl,uboot,内核镜像的问题,那么剩下来看,最可能与硬件配置有关。在查阅USB-PHY部分电路时发现,PHY芯片除了与MIO信号线连接之外,还有两条线:复位OTG-RESETN和5V电源控制线OTG-VBUSOC。其中OTG-VBUSOC已经正常引出,因此只剩下一条就是OTG-RESETN信号线,实际上并未从系统引出。

那么问题会不会出现在这里呢?

首先,查看sysfs中gpio相关信息

root@linaro-ubuntu-desktop:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 906-1023, parent: platform/e000a000.gpio, zynq_gpio:

显示为空,即不存在包括otg-resetn这个引脚在内的任何gpio的调用信息。

再看看综合后的RTL网表

也未找到关于OTG-RESETN的任何信息,看来OTG-RESETN确实是没有的。

 

下面是官方样板工程,打开.xdc文件查看,确实有OTG-RESETN输出,对应G17引脚,网络名称是gpio_bd[31]

set_property  -dict {PACKAGE_PIN  H15   IOSTANDARD LVCMOS25} [get_ports gpio_bd[27]]      ; ## XADC-GIO0
set_property  -dict {PACKAGE_PIN  R15   IOSTANDARD LVCMOS25} [get_ports gpio_bd[28]]      ; ## XADC-GIO1
set_property  -dict {PACKAGE_PIN  K15   IOSTANDARD LVCMOS25} [get_ports gpio_bd[29]]      ; ## XADC-GIO2
set_property  -dict {PACKAGE_PIN  J15   IOSTANDARD LVCMOS25} [get_ports gpio_bd[30]]      ; ## XADC-GIO3

set_property  -dict {PACKAGE_PIN  G17   IOSTANDARD LVCMOS25} [get_ports gpio_bd[31]]      ; ## OTG-RESETN

 在回头查看gpio_bd, 在顶层实例文件中找到相关信息

再查找与gpio_bd相关联的模块,在ad_iobuf 模块中做了例化。

  ad_iobuf #(
    .DATA_WIDTH(32)
  ) i_iobuf (
    .dio_t(gpio_t[31:0]),
    .dio_i(gpio_o[31:0]),
    .dio_o(gpio_i[31:0]),
    .dio_p(gpio_bd));

那么这个ad_iobuf又是做什么的呢?

module ad_iobuf (

  dio_t,
  dio_i,
  dio_o,
  dio_p);

  parameter     DATA_WIDTH = 1;              //参数可配置,总共例化DATA_WIDTH个实例

  input   [(DATA_WIDTH-1):0]  dio_t;
  input   [(DATA_WIDTH-1):0]  dio_i;
  output  [(DATA_WIDTH-1):0]  dio_o;
  inout   [(DATA_WIDTH-1):0]  dio_p;

  genvar n;
  generate
  for (n = 0; n < DATA_WIDTH; n = n + 1) begin: g_iobuf
  assign dio_o[n] = dio_p[n];
  assign dio_p[n] = (dio_t[n] == 1'b1) ? 1'bz : dio_i[n];
  end
  endgenerate

endmodule

这是ADI公司自己写的一个模块,实际上是实现了一个通用gpio的功能,通过EMIO原有的输入(dio_i),输出(dio_o),高阻(dio_t)组合而成一个标准的双向可编程gpio。并由顶层实例中的32个gpio_bd引脚。(注意ad_iobuf

中的多重例化)

 

 实际上它对应的正是EMIO的第31位。

再结合之前xdc文件中的描述我们可以知道,OTG-RESETN引脚即是gpio_bd[31].

在自己建立的工程中加入EMIO后,并为OTG-RESETN分配好引脚和网络

set_property  -dict {PACKAGE_PIN  G17   IOSTANDARD LVCMOS25} [get_ports gpio_bd[31]]      ; ## OTG-RESETN

重新生成bit流文件,和BOOT.BIN,启动后一切正常。

转载于:https://www.cnblogs.com/qiantuo1234/p/6665361.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UG585-Zynq-7000-TRM是一份关于Xilinx Zynq-7000 SoC处理器的技术参考手册。Zynq-7000 SoC处理器是一款配备ARM Cortex-A9双核处理器和Xilinx可编程逻辑部分(PL)的可扩展平台,旨在为嵌入式系统开发者提供卓越的灵活性和可编程性。 TRM代表Technical Reference Manual(技术参考手册),其中包含了该处理器的体系结构和功能特性的详细描述,包括处理器内部的各种模块、外设、总线结构等等。该手册的主要目的是为开发者提供全面的指导和支持,从而加速其系统设计和开发应用,减少错误和风险。 UG585-Zynq-7000-TRM手册的内容包括Zynq-7000的基本特征、处理器硬件和软件架构、可编程逻辑PL和PS之间的通信、外设接口和寄存器映射、中断控制等内容。开发者可以根据手册中的详细说明,了解Zynq-7000的构成和功能,从而基于此设计和实现自己的应用。 总之,UG585-Zynq-7000-TRM手册是一份非常重要的技术参考资料,为开发者提供全面的指导和支持,促进了Zynq-7000处理器的应用和拓展,也为未来的嵌入式系统设计提供了参考和借鉴。 ### 回答2: UG585是Xilinx公司发布的Zynq-7000系列技术手册,全称为“Zynq-7000 All Programmable SoC Technical Reference Manual”。Zynq-7000系列是Xilinx公司推出的一款功能强大的FPGA芯片,集成了双核ARM Cortex-A9处理器和可编程逻辑资源,支持高性能中间件、操作系统和外围设备的支持。该手册详细介绍了Zynq-7000系列SoC的架构、功能、性能、测试和验证、软件和硬件开发等方面的知识。他对于学习、使用和开发Zynq-7000 SoC具有非常重要的意义,使得开发人员能够深入了解这个芯片的细节,掌握它的特性和功能,以便更加高效地使用它进行开发。如果你想要学习和使用Zynq-7000 SoC,UG585是一个非常重要的参考文献,值得认真阅读和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值