VSF的visual Studio开发环境(二)USB主机开发环境搭建

[复制链接]
752|0
手机看帖
扫描二维码
随时随地手机跟帖
vsfopen|  楼主 | 2020-4-23 13:18 | 显示全部楼层 |阅读模式
本帖最后由 vsfopen 于 2020-5-9 12:48 编辑

VSF在PC上,可以使用winusb或者libusb实现一个usbhcd驱动,可以直接驱动接在电脑上的USB外设。使用的时候,外设驱动需要通过zadig换成winusb的驱动。当然,有一些USB设备,在PC上无法换成winusb的驱动(比如XBOX手柄),这个就不支持了。

1)winusb驱动安装
1. USB外设接入win10电脑
2. 打开zadig,找到对应的设备(可能需要选中Options->List All Devices)
3. 目标驱动里,选择WinUSB,点击Repleace Driver,等一下就会提示安装完成

2)VSF的配置
1. vsf_usr_cfg.h里,加入如下配置:
#   define VSF_USBH_CFG_ENABLE_ROOT_HUB                 DISABLED
#   define VSF_USE_USB_HOST_HUB                         DISABLED
#   define VSF_USE_USB_HOST_HCD_WINUSB                  ENABLED
#       define VSF_WINUSB_HCD_CFG_DEV_NUM 2
#       define VSF_WINUSB_HCD_DEV0_VID                  0x0A12      // CSR8510 bthci
#       define VSF_WINUSB_HCD_DEV0_PID                  0x0001
#       define VSF_WINUSB_HCD_DEV1_VID                  0x0A5C      // BCM20702 bthci
#       define VSF_WINUSB_HCD_DEV1_PID                  0x21E8
其中,VSF_WINUSB_HCD_CFG_DEV_NUM定义了要驱动的外设数量(每种只能驱动一个)。
VSF_WINUSB_HCD_DEVX_VID和VSF_WINUSB_HCD_DEVX_PID指定了对应的外设VID/PID。

2. 用户层代码:
struct usrapp_usbh_common_const_t {
    vk_winusb_hcd_param_t winusb_hcd_param;
};
typedef struct usrapp_usbh_common_const_t usrapp_usbh_common_const_t;

const usrapp_usbh_common_const_t usrapp_usbh_common_const = {
    .winusb_hcd_param   = {
        .priority       = APP_CFG_USBH_HW_PRIO,
    },
};

struct usrapp_usbh_common_t {
    vk_usbh_t host;
    vk_usbh_class_t bthci;
};
typedef struct usrapp_usbh_common_t usrapp_usbh_common_t;

usrapp_usbh_common_t usrapp_usbh_common = {
    .host.drv           = &vk_winusb_hcd_drv,
    .host.param         = (void*)&usrapp_usbh_common_const.winusb_hcd_param,

    .bthci.drv          = &vk_usbh_bthci_drv,
};

vsf_err_t usrapp_usbh_common_init(void)
{
    vk_usbh_init(&usrapp_usbh_common.host);
    vk_usbh_register_class(&usrapp_usbh_common.host, &usrapp_usbh_common.bthci);
}
这里定义了winusb_hcd_param,需要设置硬件优先级(即使在win10上运行,VSF的win10移植也实现了64个硬件优先级)。
然后,host.drv和host.param分别设置为vk_winusb_hcd_drv(winusb_hcd驱动)和前面的winusb_hcd_param(winusb_hcd参数)。

使用特权

评论回复

相关帖子

发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

324

帖子

8

粉丝