当前位置: 代码迷 >> 驱动开发 >> uboot代码移植了usb驱动,但找不到usb设备,usb灯不亮解决方案
  详细解决方案

uboot代码移植了usb驱动,但找不到usb设备,usb灯不亮解决方案

热度:88   发布时间:2016-04-28 11:01:55.0
uboot代码移植了usb驱动,但找不到usb设备,usb灯不亮
uboot代码移植了usb驱动,但找不到usb设备,usb灯不亮,请问这是怎么回事?有没有人遇见过?

谢谢!

------解决方案--------------------
驱动没移植好啊
------解决方案--------------------
你确定硬件连接是好的?建议先把USB的电源一直给上,然后检查下你的U盘格式对不对,是不是FAT的
------解决方案--------------------
执行usb start,输出是什么?
------解决方案--------------------
USB等都没亮,就有可能外围电源没给上,具体说来就是VBUS那根线
------解决方案--------------------
我没看过UBOOT里面的相关代码。我这边的一般做法是无论有没有U盘,都给VBUS供电
------解决方案--------------------
看看你自己硬件的原理图,看usb slave的使能管脚有没有给使能信号
------解决方案--------------------
usb_get_descriptor() 读取usb设备的描述符失败
C/C++ code
usb_get_configuration() --> usb_get_descriptor()usb_get_device_descriptor() --> usb_get_descriptor()/usr/src/linux-2.6.21.5/drivers/usb/core/message.c读取usb设备dev的描述符(具体描述符类型由参数type决定), 并将读取的描述符信息保存于buf所指的空间中设备中的描述符(type):#define USB_DT_DEVICE                0x01    设备描述符#define USB_DT_CONFIG                0x02    配置描述符#define USB_DT_STRING                0x03    字符描述符    #define USB_DT_INTERFACE             0x04    接口描述符#define USB_DT_ENDPOINT              0x05    端口描述符#define USB_DT_DEVICE_QUALIFIER      0x06#define USB_DT_OTHER_SPEED_CONFIG    0x07#define USB_DT_INTERFACE_POWER       0x08-------------------------int usb_get_descriptor(    struct usb_device *dev,     unsigned char     type, //主机要求获取数据的类型 (设备描述符; 接口描述符; 配置描述符)    unsigned char     index,//描述符的索引号     void              *buf, //获取数据的存放位置    int               size) //获取数据的大小{    int i;    int result;    memset(buf,0,size);     for (i = 0; i < 3; ++i) {        result = usb_control_msg(dev,                 usb_rcvctrlpipe(dev, 0),                USB_REQ_GET_DESCRIPTOR,                 USB_DIR_IN,                (type << 8) + index,                 0,     buf,     size,                USB_CTRL_GET_TIMEOUT);        if (result == 0 || result == -EPIPE)            continue;        if (result > 1 && ((u8 *)buf)[1] != type) {            result = -EPROTO;            continue;        }        break;    }    return result;}
------解决方案--------------------
看下 到 Linux系统下 能不能认出来 先确保硬件是好的 在到u-boot下 量下D+信号有没有
  相关解决方案