部分AllWin 平台Android4.4 车机 USB兼容性

     最近的项目遇到一个问题:我们的USB方案在部分allwin Android4.4车机上面挂载不上。开始的时候怀疑是文件系统的原因,以往的经验来看au:32KB - Partitioning rule:SFD - fat32 的文件系统在车机的识别率非常高,在修改了fatfs里面的f_mkfs接口之后,顺利得到了上面规格的文件系统,但还是无法识别。期间用我们另一个方案FDISK分区规则的产品插到这台车机上却能识别,当时猜想可能不是文件系统的问题。 

      正好我们拿到的这台车机可以连接adb调试,而且居然有root权限,以试试看的心态查看了下插入usb时的内核log :cat proc/kmsg :

部分AllWin 平台Android4.4 车机 USB兼容性_第1张图片

一看直下果然有蹊跷:如框中圈出有"invalid interface",对比了可以正常挂载的方案,确实没有这两个明显的错误提示的。当时心下暗喜,有可能就是这里有问题:这应该是我们这个方案的 USB设备描述符 不符合规范,于是在网上搜了下这段打印,还真有:http://blog.chinaunix.net/uid-13321460-id-2902430.html 。

dev_warn(ddev, "config %d has an invalid interface number: %d but max is %d\n",cfgno, inum, nintf_orig - 1);"
有点遗憾的是只是个警告信息,如果直接return error那就确定无疑了。但生活还是要继续,详细对比了两个方案的设备描述符部分,发现了不一样的地方:无法挂载的bInterfaceNumber这个参数是0x04,和车机内核的打印详细相比简直太相似了,果断改成0x00.编译烧录顺利挂载...
0x00,//0x04,// bInterfaceNumber         0 index of this interface


如果这次找bug经历有什么值得记录的话那就是:

1.得益于之前弄过一段时间的安卓,对于adb使用和基本log查看还算熟悉

2.正好拿到的车机能够调试还有root权限可以查看内核log

3.手头有能够正常挂载的方案,不光有方案还有方案源码

以上三点都是这次能够快速找出bug的关键点



你可能感兴趣的:(部分AllWin 平台Android4.4 车机 USB兼容性)