• 基于RT1052 Aworks使能U盘功能(十九)


    本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发

    前置知识,一般来说访问U盘,软件上需要满足如下几点功能。

    1. USB host 驱动
    2. USB host stack 协议栈
    3. 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        /**< rief 使能 I/O 子系统 */
    #define AW_COM_FS_ROOTFS        /**< rief 使能根文件系统 */
    #define AW_COM_FS_FATFS         /**< rief 使能 FAT 文件系统 */
    #define AW_COM_MOUNT            /**< rief 存储卷挂载点管理 */
    
    #define AW_COM_USBH             /**< rief USB协议栈裁(Host)组件 */
    

    即可注册相关的设备资源与设备驱动。

    /** 
    ame USB协议栈裁剪配置
     * @{
     */
    #ifdef AW_COM_USBH
    #define AW_DRV_USBH_MASS_STORAGE               /**< rief 大容量存储驱动(U盘&硬盘) */
    #define AW_DRV_USBH_UVC                        /**< rief USB通用摄像头类*/
    //#define AW_DRV_USBH_HID                        /**< rief USB人体接口设备类*/
    //#define AW_DRV_USBH_CDC_ECM                    /**< rief USB通讯设备类:网络控制模型驱动 */
    #define AW_DRV_USBH_CDC_SERIAL                 /**< rief USB通信设备类:USB转串口驱动*/
    #endif
    
    #if defined(AW_COM_USBH) || defined(AW_COM_USBD)
    #define AW_CFG_USB_MEM_SIZE          (128 * 1024)  /**< rief 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)  /**< rief 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               /* 格式化使能,格式化一次即可 */
    
  • 相关阅读:
    Let Us Adore 让我们来敬拜祂 中文歌词
    Way Maker 开路者 歌词
    Great Things 伟大的事 歌词
    永活盼望 Living Hope 歌词
    TP 控制器和模型里面order 写法不同
    服务器安全记录
    NOTIC: [8] Trying to get property of non-object
    Declaration of AdminControllerGameController::delete() should be compatible with。。
    vi编辑器操作 快捷键
    Camtasia如何录制小文件视频
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/15169491.html
Copyright © 2020-2023  润新知