iOS 11.4更新中,苹果为USB加上了第5个配置,在第4个的基础上,用ncm网卡换掉了性能不佳的ipheth。不过,貌似在读取字符串描述符的时候,会引起错误,从而引起内核崩溃,手机重启。
VSF最近正好做了脚本系统,可以通过脚本控制USB外设,就用这套脚本系统,测试以下iOS里的这个BUG。
这里,接上iPhone手机后(11.4+),系统检测到之后,会先读取product字符串和vendor字符串,这里没有问题,然后会读取配置5的配置字符串。读取配置5字符串的时候,脚本卡住,因为urb执行没返回,这个时候断开iPhone手机,然后urb出错返回,可以看到描述符数据是正常的,但是,这时手机重启。
贴上M484测试用的脚本代码:
- wait_dev(pid, vid)
- {
- var dev;
- while (1)
- {
- dev = usbhdev_find(pid, vid);
- if (dev != 0)
- {
- return dev;
- }
- timer_delayms(100);
- }
- }
- var usbhdev dev = wait_dev(0x05AC, 0x12A8);
- print('iPhone Connected\r\n');
- var vendor_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x0301, 0x0409, 255);
- print('vendor string: ', vendor_str, '\r\n');
- var dev_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x0302, 0x0409, 255);
- print('device string: ', dev_str, '\r\n');
- var config5_str = dev.transfer(0 | USBH_EPIN, USBH_TRANS_CTRL, 0x80, 0x06, 0x030C, 0x0409, 255);
- print('config5 string descriptor: ', config5_str, '\r\n');
想试一下的话,可以看这里:
https://bbs.21ic.com/icview-2530324-1-1.html
这个是GD32运行脚本系统的说明,如果是用M484(带USB主机口)的话,工程位于:vsf/example/vsfaio/proj/EWARM_M480/demo.eww
|