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

[复制链接]
 楼主| 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里,加入如下配置:
  1. #   define VSF_USBH_CFG_ENABLE_ROOT_HUB                 DISABLED
  2. #   define VSF_USE_USB_HOST_HUB                         DISABLED
  3. #   define VSF_USE_USB_HOST_HCD_WINUSB                  ENABLED
  4. #       define VSF_WINUSB_HCD_CFG_DEV_NUM 2
  5. #       define VSF_WINUSB_HCD_DEV0_VID                  0x0A12      // CSR8510 bthci
  6. #       define VSF_WINUSB_HCD_DEV0_PID                  0x0001
  7. #       define VSF_WINUSB_HCD_DEV1_VID                  0x0A5C      // BCM20702 bthci
  8. #       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. 用户层代码:
  1. struct usrapp_usbh_common_const_t {
  2.     vk_winusb_hcd_param_t winusb_hcd_param;
  3. };
  4. typedef struct usrapp_usbh_common_const_t usrapp_usbh_common_const_t;

  5. const usrapp_usbh_common_const_t usrapp_usbh_common_const = {
  6.     .winusb_hcd_param   = {
  7.         .priority       = APP_CFG_USBH_HW_PRIO,
  8.     },
  9. };

  10. struct usrapp_usbh_common_t {
  11.     vk_usbh_t host;
  12.     vk_usbh_class_t bthci;
  13. };
  14. typedef struct usrapp_usbh_common_t usrapp_usbh_common_t;

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

  18.     .bthci.drv          = &vk_usbh_bthci_drv,
  19. };

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

90

主题

325

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部