<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[www.wowothink.com的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/encourage2011</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; encourage2011]]></copyright><item><title><![CDATA[QNX800 run in Raspberry Pi]]></title><link>https://blog.csdn.net/encourage2011/article/details/145559027</link><guid>https://blog.csdn.net/encourage2011/article/details/145559027</guid><author>encourage2011</author><pubDate>Mon, 10 Feb 2025 21:56:41 +0800</pubDate><description><![CDATA[本文简单介绍如何使用QNX提供的树莓派BSP源码`BSP for Raspberry Pi BCM2711 R-PI4`编译出`ifs-rpi4.bin`文件，将其拷贝到SD卡中，在树莓派PI4上启动QNX800。
]]></description><category></category></item><item><title><![CDATA[QNX800 virtual machine]]></title><link>https://blog.csdn.net/encourage2011/article/details/145537055</link><guid>https://blog.csdn.net/encourage2011/article/details/145537055</guid><author>encourage2011</author><pubDate>Sun, 09 Feb 2025 21:02:47 +0800</pubDate><description><![CDATA[本文通过了在ubuntu使用了多种方式创建和运行qnx800 vm(Virtual Machine, 虚拟机) ，并比较了这几种方式的差异点。]]></description><category></category></item><item><title><![CDATA[通知：转移至个人博客站 http://wowothink.com/]]></title><link>https://blog.csdn.net/encourage2011/article/details/80639755</link><guid>https://blog.csdn.net/encourage2011/article/details/80639755</guid><author>encourage2011</author><pubDate>Sun, 10 Jun 2018 11:35:49 +0800</pubDate><description><![CDATA[hi，各位朋友。本博客已不再更新，后续的文章将发表至个人的博客站点：http://wowothink.com/  
秉持分享学习的态度，我将会继续分享出更多有意义的文章，欢迎朋友们相互交流指正。...]]></description><category></category></item><item><title><![CDATA[libusb_bulk_transfer() 阻塞长达60s的原因]]></title><link>https://blog.csdn.net/encourage2011/article/details/78760276</link><guid>https://blog.csdn.net/encourage2011/article/details/78760276</guid><author>encourage2011</author><pubDate>Sat, 09 Dec 2017 17:07:30 +0800</pubDate><description><![CDATA[以下内容，纯属记录。最近调查在通过libusb与Android手机进行AOA通信，当手机拔掉，在write线程中会去调用libusb_bulk_transfer()进行相关的动作。但是会出现调用这个函数block长达60s时间才退出返回，即使设置参数timeout也没用。截取到的log如下： 
write线程第 00:00:49.532 开始写，但是直到 00:01:49.728 才返回。但是rea]]></description><category></category></item><item><title><![CDATA[Multi-threaded applications and asynchronous I/O(翻译)]]></title><link>https://blog.csdn.net/encourage2011/article/details/78760169</link><guid>https://blog.csdn.net/encourage2011/article/details/78760169</guid><author>encourage2011</author><pubDate>Sat, 09 Dec 2017 16:58:00 +0800</pubDate><description><![CDATA[此文章使用Goolge进行翻译学习使用。原文网址为：http://libusb.sourceforge.net/api-1.0/mtasync.htmllibusb是一个线程安全的库，但是应用于与多线程中的libusb交互的应用程序必须要注意。必须解决的根本问题是，所有的libusb I/O 都围绕着通过poll()/select()系统调用来监视文件描述符。这是直接暴露在异步接口，但需要着重注意的]]></description><category></category></item><item><title><![CDATA[poll() 的用法]]></title><link>https://blog.csdn.net/encourage2011/article/details/78634413</link><guid>https://blog.csdn.net/encourage2011/article/details/78634413</guid><author>encourage2011</author><pubDate>Sat, 25 Nov 2017 21:46:32 +0800</pubDate><description><![CDATA[需求在某个xxxservice 里要持续读 /dev/sample_dev 节点。也就是在while循环里面，先poll是否可读，如果可读的话就去调用read，如果不可读的话就继续调用poll，如此循环。但是，如果与 /dev/sample_dev 节点相关的设备已不再提供数据了（比如说设备拔掉）。那么每次调用poll会timeout，如此循环，空耗CPU资源。此时底层驱动可以给应用层返回特定的值告]]></description><category></category></item><item><title><![CDATA[创建设备节点问题]]></title><link>https://blog.csdn.net/encourage2011/article/details/78634374</link><guid>https://blog.csdn.net/encourage2011/article/details/78634374</guid><author>encourage2011</author><pubDate>Sat, 25 Nov 2017 21:29:39 +0800</pubDate><description><![CDATA[在原先的文章中将了怎样创建一个设备节点供读写使用，Linux用户空间与内核空间交互方法，现在回过头去看，发现当时很多代码写法都有问题，在此作为一个反面教材来讲一讲。原先代码static int sample_init(void)  
{      /* 初始化 sample_dev 结构体 */
    sample_dev = kzalloc(sizeof(struct sample), GFP_]]></description><category></category></item><item><title><![CDATA[车载娱乐系统开发常用术语]]></title><link>https://blog.csdn.net/encourage2011/article/details/78452661</link><guid>https://blog.csdn.net/encourage2011/article/details/78452661</guid><author>encourage2011</author><pubDate>Sun, 05 Nov 2017 21:33:00 +0800</pubDate><description><![CDATA[B+B+是常电，要求一直要接在电源（电瓶）的正极，用来保存数据的；ACC车载系统供电；ILLilluminate，照明，即开车灯；IGignite，点火，启动发动机；PKBParking Break，停车闸；REVRear View System，倒车影像；DCUDoor Control Unit，车门控制单元。https://en.wikipedia.org/wiki/Door_control_u]]></description><category></category></item><item><title><![CDATA[通过 /proc/[pid]/ 查看进程状态]]></title><link>https://blog.csdn.net/encourage2011/article/details/78452487</link><guid>https://blog.csdn.net/encourage2011/article/details/78452487</guid><author>encourage2011</author><pubDate>Sun, 05 Nov 2017 21:23:40 +0800</pubDate><description><![CDATA[参考资料[/proc官方手册] http://man7.org/linux/man-pages/man5/proc.5.html 
[解读/proc/$PID/status中各种参数] https://my.oschina.net/aiguozhe/blog/125477 
[查看Linux &amp;amp; Android中内存占用方法] http://blog.csdn.net/myarrow/article]]></description><category></category></item><item><title><![CDATA[Android 开放配件 (AOA)调试]]></title><link>https://blog.csdn.net/encourage2011/article/details/78450995</link><guid>https://blog.csdn.net/encourage2011/article/details/78450995</guid><author>encourage2011</author><pubDate>Sun, 05 Nov 2017 18:33:50 +0800</pubDate><description><![CDATA[车载导航的开发中，有可能需要开发支持Android CarLife或者Android Weblink等功能，而这些功能需要使用AOA协议的支持。因此，下面的文章将简单介绍AOA的相关知识。简介Google 官方AOA 的定义： 
https://source.android.com/accessories/protocol.htmlGoogle 官方提供了 adk2012 开发套件（包含 Andro]]></description><category></category></item><item><title><![CDATA[USB设备无响应]]></title><link>https://blog.csdn.net/encourage2011/article/details/78450180</link><guid>https://blog.csdn.net/encourage2011/article/details/78450180</guid><author>encourage2011</author><pubDate>Sun, 05 Nov 2017 17:41:38 +0800</pubDate><description><![CDATA[Device No Response 测试介绍

在USB认证中，otgeh_compliance_plan_1_2.pdf 测试文档有一项关于连接超时显示Device No Response的测试。 
描述如下： 


测试步骤如下： 




说白了，就是说连接一个无法识别的USB设备到Embedded Host上，判断其能否在30s内给出“Device No Response”的提示，如果有]]></description><category></category></item><item><title><![CDATA[Data Center Software 协议分析工具的使用]]></title><link>https://blog.csdn.net/encourage2011/article/details/78170213</link><guid>https://blog.csdn.net/encourage2011/article/details/78170213</guid><author>encourage2011</author><pubDate>Sat, 07 Oct 2017 16:26:50 +0800</pubDate><description><![CDATA[有一个 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]]></description><category></category></item><item><title><![CDATA[最全USB 接口类型]]></title><link>https://blog.csdn.net/encourage2011/article/details/78170084</link><guid>https://blog.csdn.net/encourage2011/article/details/78170084</guid><author>encourage2011</author><pubDate>Sat, 07 Oct 2017 16:09:09 +0800</pubDate><description><![CDATA[本文全部转载自以下网站： 
https://www.cablestogo.com/learning/connector-guides/usb总览USB A-TypeUSB B-TypeUSB C-TypeMicro-USB AMicro-USB BMicro-USB AB：前两个公头的母头USB Mini-b(5-pin)USB Mini-b(4-pin)USB 3.0 A-TypeUSB 3.0]]></description><category></category></item><item><title><![CDATA[i.MX6 pinctrl解析]]></title><link>https://blog.csdn.net/encourage2011/article/details/77145445</link><guid>https://blog.csdn.net/encourage2011/article/details/77145445</guid><author>encourage2011</author><pubDate>Sun, 13 Aug 2017 15:58:57 +0800</pubDate><description><![CDATA[Pin Controller主要工作
pin multiplexing：基于ARM core的嵌入式处理器一般会提供丰富的功能，例如camera interface、LCD interface、USB、I2C、SPI等等。虽然处理器有几百个pin，但是这些pin还是不够分配，因此有些pin需要复用。
pin configuration：这些配置参数包括：pull-up/down电阻的设定， tri-]]></description><category></category></item><item><title><![CDATA[i.MX6 GPIO配置]]></title><link>https://blog.csdn.net/encourage2011/article/details/77144474</link><guid>https://blog.csdn.net/encourage2011/article/details/77144474</guid><author>encourage2011</author><pubDate>Sun, 13 Aug 2017 15:29:54 +0800</pubDate><description><![CDATA[原理图假设有如下原理图，比如说我们要控制 USB_H1_EN 管脚，该管脚与 GPIO_0 的pad连接，因此后面所有的关于该引脚的配置都要围绕pad GPIO_0 展开。在这里，我们将GPIO_0做为一个普通的GPIO口使用。 
i.MX6 的pad在i.MX6上，pad是唯一存在的，一个pad可以通过复用为多个功能。如下是i.MX6芯片上的管脚图，蓝色框框里面的就是pad的名称。查看pad的复用]]></description><category></category></item><item><title><![CDATA[怎么查看调用栈关系]]></title><link>https://blog.csdn.net/encourage2011/article/details/76780612</link><guid>https://blog.csdn.net/encourage2011/article/details/76780612</guid><author>encourage2011</author><pubDate>Sun, 06 Aug 2017 17:59:01 +0800</pubDate><description><![CDATA[前言最近在学习Linux USB Composite Framework的内容，经常看到函数指针跳转来跳转去。比如说会看到很多结构体中的.bind函数指针，但又不知道他们之间的调用关系。此时，就可以用dump_stack()这个函数来追踪函数调用关系。当然，还是要自己尝试学习理解这个框架结构，不然纯粹的知道函数调用关系意义不大。另外，dump_stack()可用来定位Kernel Panic和Oop]]></description><category></category></item><item><title><![CDATA[Linux kernel U盘识别流程]]></title><link>https://blog.csdn.net/encourage2011/article/details/76407232</link><guid>https://blog.csdn.net/encourage2011/article/details/76407232</guid><author>encourage2011</author><pubDate>Sun, 06 Aug 2017 15:11:11 +0800</pubDate><description><![CDATA[一、正常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]]]></description><category></category></item><item><title><![CDATA[USB设备插入和拔出的波形]]></title><link>https://blog.csdn.net/encourage2011/article/details/76377242</link><guid>https://blog.csdn.net/encourage2011/article/details/76377242</guid><author>encourage2011</author><pubDate>Sun, 30 Jul 2017 13:44:08 +0800</pubDate><description><![CDATA[下面测试了iPhone和U盘插入/拔出时D+和D-上的波形。黄色为D+，绿色为D-。iPhone插入的波形整体波形
1 处的波形只有iPhone插入连接CarPlay或者是Android手机插入连接Carlife才会有，还不知道这里的波形是怎么产生的。
2 处的波形是枚举阶段速度的判定，即握手检测阶段。
3 处的波形与2 处的类似，像是Host再做一次reset。
4 处的波形是连接CarPlay做]]></description><category></category></item><item><title><![CDATA[Androidadb驱动实现原理]]></title><link>https://blog.csdn.net/encourage2011/article/details/75944295</link><guid>https://blog.csdn.net/encourage2011/article/details/75944295</guid><author>encourage2011</author><pubDate>Sun, 23 Jul 2017 18:36:23 +0800</pubDate><description><![CDATA[Androidadb的驱动由androidadb.c和f_adb.c实现，androidadb.c的开头会#include “f_adb.c”，最终编译出来的是g_androidadb.ko文件。这里涉及到Linux USB Composite Framework的知识，下次再整理一下这方面的知识。创建struct usb_composite_driverAndroidadb属于USB复合设备，注册]]></description><category></category></item><item><title><![CDATA[Androidadb的编译配置及常见问题]]></title><link>https://blog.csdn.net/encourage2011/article/details/75807945</link><guid>https://blog.csdn.net/encourage2011/article/details/75807945</guid><author>encourage2011</author><pubDate>Sat, 22 Jul 2017 23:13:32 +0800</pubDate><description><![CDATA[Androidadb驱动的代码在以下两个文件中实现，这部分的内容属于Linux USB Gadget的范畴了。<Kernel_Dir>/drivers/usb/gadget/androidadb.c
<Kernel_Dir>/drivers/usb/gadget/f_adb.c关于Androidadb驱动的实现原理可以参照我的另外一篇文章：应用层的实现代码在以下目录： 
<Project_Dir>/]]></description><category></category></item></channel></rss>