前置知识,一般来说访问U盘,软件上需要满足如下几点功能。
USB host 驱动USB host stack 协议栈File system 文件系统。1. 首先阅读原理图在这里插入图片描述
2. 设备资源及驱动适配2.1 设备资源的注册硬件上有两个USB口,在硬件设计上只使用USB1,其资源文件在awbl_hwconf_imx1050_usbh1.h当。
电脑在这里插入图片描述
2.2 设备驱动的注册在aw_prj_config.c文件当中
#ifdef AW_DRV_IMX1050_USBH awbl_imx10xx_usbh_drv_register();#endif#电脑ifdef AW_COM_USBH extern void awbl_usbh_bus_init (void); awbl_usbh_bus_init(); awbl_usbh_hub_drv_register();#endif#ifdef AW_DRV_USBH_MASS_STORAGE extern void awbl_usbh_mass_storage_drv_register (int buffer_size); awbl_usbh_mass_storage_drv_register(AW_CFG_USB_MS_BUF_SIZE);#endif
2.3 设备宏开关
只需要在aw_prj_params.h打开如下定义
aw_prj_params.h#define AW_COM_IO_SYSTEM /**< \brief 使能 I/O 子系统 */#define AW_COM_FS_ROOTFS /**< \brief 使能根文件系统 */#define AW_COM_FS_FATFS /**< \brief 使能 FAT 文件系统 */#define AW_COM_MOUNT 电脑 /**< \brief 存储卷挂载点管理 */#define AW_COM_USBH /**< \brief USB协议栈裁(Host)组件 */
即可注册相关的设备资源与设备驱动。
/** \name USB协议栈裁剪配置 * @{ */#ifdef AW_COM_USBH#define AW_DRV_USBH_MASS_STORAGE /**< \brief 大容量存储驱动(U盘电脑&硬盘) */#define AW_DRV_USBH_UVC /**< \brief USB通用摄像头类*///#define AW_DRV_USBH_HID /**< \brief USB人体接口设备类*///#define AW_DRV_USBH_CDC_ECM /**< \brief USB通讯设备类:网络控制模型驱动 */#define AW_DRV_USBH_CDC_SERIAL /**< \brief USB通信设备类:USB转串口驱动*/#endif#if defined(AW_COM_USBH) || defined(AW_COM_USBD)#define AW_CFG_USB_MEM_SIZE (128 * 1024) /**< \brief USB协议栈内存使用空间大小 */#endif#ifdef AW_DRV_USBH_MASS_STORAGE#ifndef AW_COM_BLOCK_DEV#define AW_COM_BLOCK_DEV#endif#define AW_CFG_USB_MS_BUF_SIZE (16 * 1024) /**< \brief U盘数据交互缓存,占用AW_CFG_USB_MEM_SIZE空间,影响U盘读写性能,推荐16k */#endif
一旦使能相关宏开关,对应的驱动就会被选上。
3. 如何测试使用SDK自带的测试样例demo_udisk_fs.c即可进行测试.
电脑在这里插入图片描述
4. 总结在使用样例进行测试时,需指定USB的设备名称及是否格式化U盘。
#define __BLK_NAME DE_USB_BLK_NAME /* USB设备名 */#define __FORMAT_ENABLE 1 /* 格式化使能,格式化一次即可 */
电脑