10 www.wowothink.com

尚未进行身份认证

我要认证

分享!!!

等级
TA的排名 1w+

通知:转移至个人博客站 http://wowothink.com/

hi,各位朋友。本博客已不再更新,后续的文章将发表至个人的博客站点:http://wowothink.com/ 秉持分享学习的态度,我将会继续分享出更多有意义的文章,欢迎朋友们相互交流指正。...

2018-06-10 11:35:49

libusb_bulk_transfer() 阻塞长达60s的原因

以下内容,纯属记录。最近调查在通过libusb与Android手机进行AOA通信,当手机拔掉,在write线程中会去调用libusb_bulk_transfer()进行相关的动作。但是会出现调用这个函数block长达60s时间才退出返回,即使设置参数timeout也没用。截取到的log如下: write线程第 00:00:49.532 开始写,但是直到 00:01:49.728 才返回。但是rea

2017-12-09 17:07:30

Multi-threaded applications and asynchronous I/O(翻译)

此文章使用Goolge进行翻译学习使用。原文网址为:http://libusb.sourceforge.net/api-1.0/mtasync.htmllibusb是一个线程安全的库,但是应用于与多线程中的libusb交互的应用程序必须要注意。必须解决的根本问题是,所有的libusb I/O 都围绕着通过poll()/select()系统调用来监视文件描述符。这是直接暴露在异步接口,但需要着重注意的

2017-12-09 16:58:00

poll() 的用法

需求在某个xxxservice 里要持续读 /dev/sample_dev 节点。也就是在while循环里面,先poll是否可读,如果可读的话就去调用read,如果不可读的话就继续调用poll,如此循环。但是,如果与 /dev/sample_dev 节点相关的设备已不再提供数据了(比如说设备拔掉)。那么每次调用poll会timeout,如此循环,空耗CPU资源。此时底层驱动可以给应用层返回特定的值告

2017-11-25 21:46:32

创建设备节点问题

在原先的文章中将了怎样创建一个设备节点供读写使用,Linux用户空间与内核空间交互方法,现在回过头去看,发现当时很多代码写法都有问题,在此作为一个反面教材来讲一讲。原先代码static int sample_init(void) { /* 初始化 sample_dev 结构体 */ sample_dev = kzalloc(sizeof(struct sample), GFP_

2017-11-25 21:29:39

车载娱乐系统开发常用术语

B+B+是常电,要求一直要接在电源(电瓶)的正极,用来保存数据的;ACC车载系统供电;ILLilluminate,照明,即开车灯;IGignite,点火,启动发动机;PKBParking Break,停车闸;REVRear View System,倒车影像;DCUDoor Control Unit,车门控制单元。https://en.wikipedia.org/wiki/Door_control_u

2017-11-05 21:33:00

通过 /proc/[pid]/ 查看进程状态

参考资料[/proc官方手册] http://man7.org/linux/man-pages/man5/proc.5.html [解读/proc/$PID/status中各种参数] https://my.oschina.net/aiguozhe/blog/125477 [查看Linux & Android中内存占用方法] http://blog.csdn.net/myarrow/article

2017-11-05 21:23:40

Android 开放配件 (AOA)调试

车载导航的开发中,有可能需要开发支持Android CarLife或者Android Weblink等功能,而这些功能需要使用AOA协议的支持。因此,下面的文章将简单介绍AOA的相关知识。简介Google 官方AOA 的定义: https://source.android.com/accessories/protocol.htmlGoogle 官方提供了 adk2012 开发套件(包含 Andro

2017-11-05 18:33:50

USB设备无响应

Device No Response 测试介绍在USB认证中,otgeh_compliance_plan_1_2.pdf 测试文档有一项关于连接超时显示Device No Response的测试。 描述如下: 测试步骤如下: 说白了,就是说连接一个无法识别的USB设备到Embedded Host上,判断其能否在30s内给出“Device No Response”的提示,如果有

2017-11-05 17:41:38

Data Center Software 协议分析工具的使用

有一个 Beagle™ USB 480 Protocol Analyzer 协议分析工具(https://www.totalphase.com/media/datasheet/TP_Beagle_USB_480_Protocol_Analyzer-Datasheet.pdf),可以抓取USB总线上的数据。配合Data Center Software可以抓取分析USB总线上的数据。软件下载地址http

2017-10-07 16:26:50

最全USB 接口类型

本文全部转载自以下网站:https://www.cablestogo.com/learning/connector-guides/usb总览USBA-TypeUSBB-TypeUSBC-TypeMicro-USBAMicro-USBBMicro-USBAB:前两个公头的母头USBMini-b(5-pin)USBMini-b(4-pin)USB3.0A-TypeUSB3.0

2017-10-07 16:09:09

i.MX6 pinctrl解析

Pin Controller主要工作pin multiplexing:基于ARM core的嵌入式处理器一般会提供丰富的功能,例如camera interface、LCD interface、USB、I2C、SPI等等。虽然处理器有几百个pin,但是这些pin还是不够分配,因此有些pin需要复用。pin configuration:这些配置参数包括:pull-up/down电阻的设定, tri-

2017-08-13 15:58:57

i.MX6 GPIO配置

原理图假设有如下原理图,比如说我们要控制 USB_H1_EN 管脚,该管脚与 GPIO_0 的pad连接,因此后面所有的关于该引脚的配置都要围绕pad GPIO_0 展开。在这里,我们将GPIO_0做为一个普通的GPIO口使用。 i.MX6 的pad在i.MX6上,pad是唯一存在的,一个pad可以通过复用为多个功能。如下是i.MX6芯片上的管脚图,蓝色框框里面的就是pad的名称。查看pad的复用

2017-08-13 15:29:54

怎么查看调用栈关系

前言最近在学习Linux USB Composite Framework的内容,经常看到函数指针跳转来跳转去。比如说会看到很多结构体中的.bind函数指针,但又不知道他们之间的调用关系。此时,就可以用dump_stack()这个函数来追踪函数调用关系。当然,还是要自己尝试学习理解这个框架结构,不然纯粹的知道函数调用关系意义不大。另外,dump_stack()可用来定位Kernel Panic和Oop

2017-08-06 17:59:01

Linux kernel U盘识别流程

一、正常USB枚举及断开的log正常U盘插入和拔掉Kernel log的打印消息如下:[ 220.836836] usb 2-1: new high-speed USB device number 4 using xxx-ehci[ 220.984187] usb-storage 2-1:1.0: USB Mass Storage device detected[ 220.990977]

2017-08-06 15:11:11

USB设备插入和拔出的波形

下面测试了iPhone和U盘插入/拔出时D+和D-上的波形。黄色为D+,绿色为D-。iPhone插入的波形整体波形1 处的波形只有iPhone插入连接CarPlay或者是Android手机插入连接Carlife才会有,还不知道这里的波形是怎么产生的。2 处的波形是枚举阶段速度的判定,即握手检测阶段。3 处的波形与2 处的类似,像是Host再做一次reset。4 处的波形是连接CarPlay做

2017-07-30 13:44:08

Androidadb驱动实现原理

Androidadb的驱动由androidadb.c和f_adb.c实现,androidadb.c的开头会#include “f_adb.c”,最终编译出来的是g_androidadb.ko文件。这里涉及到Linux USB Composite Framework的知识,下次再整理一下这方面的知识。创建struct usb_composite_driverAndroidadb属于USB复合设备,注册

2017-07-23 18:36:23

Androidadb的编译配置及常见问题

Androidadb驱动的代码在以下两个文件中实现,这部分的内容属于Linux USB Gadget的范畴了。<Kernel_Dir>/drivers/usb/gadget/androidadb.c<Kernel_Dir>/drivers/usb/gadget/f_adb.c关于Androidadb驱动的实现原理可以参照我的另外一篇文章:应用层的实现代码在以下目录: <Project_Dir>/

2017-07-22 23:13:32

USB设备状态设置-- usb_gadget_set_state()

一、USB设备状态在USB 2.0协议中第 9.1 USB Device States 章节规定了USB设备的6种状态,包括: Attached/Powered/Default/Address/Configured/Suspended其状态迁移图如下: 在 Linux Kernel ch9.h 文件中用 enum usb_device_state 来标记这几种状态。// <kernel_dir>

2017-07-22 13:08:06

Linux Kernel gpio export功能

一、前言在正常情况下,假设我们在控制usb使能相关gpio脚的时候,代码中通常我们会做如下调用:#define USB_EN_GPIO 11gpio_request(USB_EN_GPIO, "usb_en");gpio_direction_output(USB_EN_GPIO, 1);gpio_export(USB_EN_GPIO, false);上述执行完毕之后就可以给 GPI

2017-06-28 23:33:18

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!