Hi3516d平台的usb功能调试记录

其他平台类似,但与海思sdk版本和内核版本有关,相关配置位置和形式不一样。hi3516av100内核版本为3.4.35

一、USB用作从机device

  1. usb大容量存储

作为大容量存储设备时内核配置如下:

1)启用海思DMA(默认开启)

Device Drivers  --->

<*> Hisilicon DMAC Controller support

2)usb配置

Device Drivers  --->

[*] USB support  --->

<*>   Support for Host-side USB

[*]    hiusb2.0 usb device support  --->

<*>   hisilicon highspeed device controller version 3.00a driver /*地址信息与寄存器地址一致*/

<*>   USB Mass Storage support /* 选上后,gadget中才有对应选项 */

<*>   USB Gadget Support  --->  /* 目的是dwc_otg编译进来 */

<M>   USB Peripheral Controller

<*>   USB Gadget Drivers (Mass Storage Gadget)  --->

其他配置使用默认即可,建议使用DMA模式。编译后,可以查看内核启动信息(或dmesg查看):

console [ttyAMA0] enabled

uart:1: ttyAMA1 at MMIO 0x20090000 (irq = 41) is a PL011 rev2

bio: create slab <bio-0> at 0

SCSI subsystem initialized

... ...

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

... ...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

dwc_otg: version 3.00a 10-AUG-2012

Core Release: 3.10a

Setting default values for core params

Using Buffer DMA mode

Periodic Transfer Interrupt Enhancement - disabled

Multiprocessor Interrupt Enhancement - disabled

OTG VER PARAM: 0, OTG VER FLAG: 0

Dedicated Tx FIFOs mode

g_mass_storage gadget: Mass Storage Function, version: 2009/09/11

g_mass_storage gadget: Number of LUNs=1

lun0: LUN: removable file: (no medium)

g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11

g_mass_storage gadget: userspace failed to provide iSerialNumber

g_mass_storage gadget: g_mass_storage ready

主要有usb核心驱动、otg驱动、大容量存储驱动

此时接入电脑USB,可以在电脑的设备管理器中查看到“USB大容量存储设备”,运行正常。

如果电脑仍没有识别到设备插入的话,检查usb线序是否有问题;检查外设控制寄存器MISC_CTRL30配置是否正确[bit31] 0 -- host,1 -- device

说明:上面配置中将驱动编译进内核,也可以编译成模块.ko文件,然后加载。

编译过一次内核之后,编译成模块时可以通过命令单独编译:

make -C /home/wigewige/linux-3.4.y M=/home/wigewige/linux-3.4.y/drivers/usb/gadget ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-

-C:指定.config文件路径

M:指定要编译的模块路径

ARCH:指定交叉编译工具

  1. usb文件存储(u盘)

用作u盘时,把上面gadget中的“Mass Storage Gadget”改成“File-backed Storage Gadget (DEPRECATED)”即可,

生成的驱动文件为“g_file_storage.ko”,该部分建议以模块形式编译,然后手动加载,因为要制定存储介质,加载的时候制定对应参数。详细使用参考海思《外围设备驱动 操作指南.pdf》。

驱动加载后可以在电脑中识别为U盘,但操作U盘还需要做其他配置(没有测试验证)。

  1. uvc设备端

作为uvc设备是内核配置如下:

  1. 多媒体配置

Device Drivers  --->

<*> Multimedia support  --->

[*]   Media Controller API (EXPERIMENTAL)

<*>   Video For Linux

[*]    V4L2 sub-device userspace API (EXPERIMENTAL)

[*]   Video capture adapters (NEW)  --->

[*]   V4L USB devices (NEW)  --->

<*>   USB Video Class (UVC)

[*]     UVC input events device support (NEW)

<*>   CPiA2 Video For Linux

[*]   V4L platform devices  --->

<*>   SoC camera support

<*>     platform camera support

2)usb配置

Device Drivers  --->

[*] USB support  --->

<*>   Support for Host-side USB

[*]    USB announce new devices

[*]    USB device class-devices (DEPRECATED)

[*]    hiusb2.0 usb device support  --->

<*>   hisilicon highspeed device controller version 3.00a driver /*地址信息与寄存器地址一致*/

<*>   USB Gadget Support  --->  /* 目的是dwc_otg编译进来 */

<M>   USB Peripheral Controller

<*>   USB Gadget Drivers (USB Webcam Gadget)  --->  /* 配置了多媒体后才有该选项 */

其他配置使用默认即可,建议使用DMA模式。

可以根据实际情况选择编译进内核或模块。编译成模块则有以下模块:

dwc_otg.ko    /* usb作为从设备相关的驱动 */

g_webcam.ko

uvcvideo.ko

videobuf2-core.ko

videobuf2-memops.ko

videobuf2-vmalloc.ko

videodev.ko

手动加载驱动时如果有报错可以通过dmesg查看,一般出错的原因是有依赖关系,加载顺序不正确导致的。加载顺序如下:

insmod dwc_otg.ko

insmod videobuf2-core.ko

insmod videobuf2-memops.ko

insmod videobuf2-vmalloc.ko

insmod videodev.ko

insmod uvcvideo.ko

insmod g_webcam.ko

编译进内核的模块或手动加载的模块,在内核启动后通过命令可以查看:ls /sys/module/

查看设备信息:cat /proc/devices

查看usb设备信息:lsusb 或 lsusb -v

如果驱动加载成功且没有报错的话,在电脑端应该能识别到UVC camera。但由于3516av100可用的usb 端点数量有限,g_webcam加载时报错:

g_webcam gadget: uvc_function_bind

g_webcam gadget: Unable to allocate streaming EP

himm 0x10080044  ---> 0x00000024

himm 0x10080048  ---> 0x2288C8D4

读取硬件配置寄存器GHWCFG1和GHWCFG2,可以查看到除了ep0(双向)之外,只有两个可用端点,一个in一个out。Usb协议中ep0为必备端点,上电即可使用,而其他端点需要通过ep0和主机建立连接时进行配置,配置后才可以使用。UVC协议中需要使用两个IN ep,一个用作视频控制VC,一个用作视频流VS,因此在加载该驱动时获取ep失败,在绑定uvc功能模块时报的错。(海思方面答复是3516av100不支持)

注意:驱动本身最大支持到16个端点(含ep0),但是实际可用的受限于硬件,通过读取寄存器获取到可用端点总数和in/out端点数。

理论上可以复用ep0作为uvc的VC端点,因为ep0是双向的;但实际验证行不通,为此做了如下修改尝试:

  1. VC复用ep0
  2. VC为空
  3. VC和VS共用端点

主要修改f_uvd.c中uvc_function_bind函数。

上面的修改均行不通,修改后再host对设备进行配置时,setup报错。

实际查看代码,关于uvc的描述符中定义了uvc控制类和uvc视频流类:uvc_control_cls和uvc_fs_streaming_cls,还有一个uvc_hs_streaming_cls类。

如果要修改还需要对uvc协议和驱动代码深入的了解,时间有限,没有深入去理解。

二、USB用作主机host

作为大容量存储设备时内核配置如下:

Device Drivers  --->

[*] USB support  --->

<*>   Support for Host-side USB

[*]     USB announce new devices

[*]   hiusb2.0 usb host support  --->

<*>   hisilicon highspeed device controller version 3.00a driver /*地址信息与寄存器地址一致*/

[*]   hisilicon usb host controller support

[*]   hiusb-ehci usb host device support

[*]   hiusb-ohci usb host device support

其他配置使用默认即可,建议使用DMA模式。

注意:用作主机时没有实际验证,如有问题还需要检查其他配置。另外,3516av200和3519的sdk中加入了主从自动切换的驱动,在gadget中配置。内核版本为3.18.20.

Hi3516d平台的usb功能调试记录相关推荐

  1. RK3188 5.1平台PCM2708 USB声卡调试

    RK3188 5.1平台PCM2708 USB声卡调试 [1]底层要支持usb sound,通过make menuconfig 找到如下配置: [2]设置CONFIG_SND_RAWMIDI=y 和C ...

  2. Nvidia Xavier平台CAN收发控制器调试记录

    1. 前言 由于需要接收车辆的CAN信息,就需要CAN收发功能: 正好xavier平台自带两路CAN控制器: 以下是驱动调试记录 2. 硬件连接 CAN总线获得数据使用OBD2; 连接2个CAN收发器 ...

  3. Nvidia Xavier Nx平台PCIE速率调整调试记录

    1. 前言 如何增加最大速度的pcie上的jetson xavier? 因为被限制在2.5 GT/s Xavier似乎可以增加到8 GT/s. 使用Jetpack 4.5 0004:00:00.0 P ...

  4. Android USB Camera(1) : 调试记录

    1. 前言 前段时间调试了一个uvc摄像头,这里做下记录.硬件平台为mt6735,软件平台为android 5.0 2. 底层配置 UVC全称是usb video class,一种usb视频规范.所有 ...

  5. [调试记录]3288 7.1平台上移植美格 SLM790 4G模块

    [调试记录]3288 7.1平台上移植美格 SLM790 4G模块 一 驱动配置 1.1 PPP 配置 需要配置 Android 内核来支持 PPP 功能,按照以下步骤来配置 PPP 选项 Devic ...

  6. nvidia xavier平台无PD控制器USB接口调试

    NVIDIA英伟达 1. 前言 问题: 基于nvidia xavier核心板,设计载板,但是USB功能无法使用: 硬件: OTG连接器使用Micro B VBUS_ID=GPIO30(B55) pin ...

  7. nvidia nx平台GStreamer pipeline异常问题调试记录2

    1.前言 承接上文 nvidia nx平台GStreamer pipeline异常问题调试记录1_bingdund的博客-CSDN博客 2. 设置gst调试级别为3 这是我在崩溃发生前得到的唯一消息 ...

  8. Nvidia Agx Xavier平台无PD控制器USB接口调试

    1. 前言 问题: 基于nvidia xavier核心板,设计载板,但是USB功能无法使用: 硬件: OTG连接器使用Micro B VBUS_ID=GPIO30(B55) pin VBUS Dete ...

  9. 展讯平台功耗调试记录

    展讯平台功耗调试记录 1.查看应用持有锁:dumpsys power | grep LOCK 2.查看内核持有锁:cat /d/wakeup_sources 休眠后查看唤醒源:串口 log 打印 Wa ...

  10. Nvidia Xavier Nx平台GMSL接口imx390相机驱动调试记录

    1.前言 使用GMSL的串行器和解串器9295 9296 两路imx390相机 有两种采集方式, 一种是在前端拼接好作为一路采集: 另一种是独立采集,使用MIPI的虚拟通道. 下面为调试记录 2. 搭 ...

最新文章

  1. Android Linux 9,linux学习(一)(ubuntu9.10 玩转android)
  2. 国内外有名的安全扫描工具,你知道几个?
  3. 河北工业机器人夹爪生产厂家_电动夹爪会成为“标配”吗?
  4. executequery方法_在IDEA的maven项目中连接使用MySQL8.0方法教程
  5. sublime text3 按F5运行python代码
  6. Latex快速入门系列 -- 在TexStudio中正确插入参考文献的基本操作
  7. 宁波Uber优步司机奖励政策(12月14日到12月20日)
  8. OLW (Open Live Writer)安装代码高亮插件方法(简明)
  9. 很多人都爱玩的lol..
  10. Tcl Tutorial 笔记8 · proc
  11. 利率市场化改革 增大银行风险管理挑战
  12. 实时高清渲染:Shadows
  13. 【C++背包】稀奇古怪的多重背包问题
  14. python 实时股票行情_python 实时获取股票行情脚本
  15. 音创a55怎么安装系统_怎么安装系统|教你怎样安装系统教程
  16. 【js】不间断空格 特殊的空格-ASCII码值160
  17. 哪些数码好物值得在开学季入手,推荐几款数码好物
  18. StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全
  19. 专访三维力控科解读实时数据库的发展
  20. FinTech头条丨祝贺国家电投全球司库管理系统成功上线!

热门文章

  1. Arduino 传感器: 使用FSR402压力传感器检测压力
  2. linux centos7 录屏,centos7在线安装视频录制软件
  3. 如何恢复误删SD卡文件?SD卡误删除数据恢复
  4. python人民币转大写_python将人民币转换大写的脚本代码
  5. 三维模型重建(1):关于三维模型重建的一些简介
  6. 3种常用的图片压缩方法
  7. 车牌识别对于智慧城市的重要性
  8. python 多继承 MRO
  9. 【实验】【视图】使用v$bgprocess视图获得所有后台进程信息
  10. 阅读图像显著性检测论文三:Saliency Detection A Spectral Residual Approach