F1C100S只有一个USB接口,在实际应用中加hub成为必须,最近在调试使用4G模块进行联网,发现把4G模块直接接到OTG接口上使用正常,经过USB Hub之后就不正常了,现象是设备正常枚举,但往 ttyUSB 发AT命令没任何响应,测试了SIM7600和EC200S结果都一样。系统是主线linux-5.2,使用V3S(也是主线linux-5.2)进行测试却没有出现类似问题,是否可以确定是F1C100S芯片的问题?被这个问题困扰好久了,应该怎么定位和解决?希望各路大神帮忙分析指点一下,非常感谢!
离线
你试一下你现在的内核,HUB可不可以接2个U盘或者usb转串口模块
试了通过hub接3个U盘或者USB转串口模块都可以正常枚举和读写,因为V3S相同的内核以及配置都能正常使用,所以我不太怀疑是内核配置的问题,试过把OTG关掉只作HOST也是不行。我还对比了一下V3S和F1C100S中USB驱动源码(sunxi-usb.c和phy-sun4i-usb.c),里面对于USB端点数的配置两者也是一样的。我也怀疑过芯片USB端点数量的问题,看了F1C600的芯片手册,USB端点数和V3S是一样有8个,所以买了F1C200S和F1C600来替换,结果都一样,真是不知道怎么办了。
离线
如果真的是芯片硬件不支持,至少希望能够知道问题是出在哪里,哪个地方导致它不支持,不然我不甘心就这样放弃。
离线
下面是F1C200S手册和V3S手册中关于OTG部分的说明
V3S说自己的USB HOST是EHCI和OHCI并且给了寄存器,
而F1C200S并未提及USB是啥,而且也没有给寄存器。
都说自己8个端点可配置。
感觉不能用可能是分配的问题
在 kernel/drivers/usb/musb/sunxi.c 中有定义端点数,这个数不知道是怎么得到的:
对于V3S:
/* H3/V3s OTG supports only 4 endpoints */
#define SUNXI_MUSB_MAX_EP_NUM_H3 5
对于其它(包括F1C100S):
/* Allwinner OTG supports up to 5 endpoints */
#define SUNXI_MUSB_MAX_EP_NUM 6
离线
经过测试发现,通过ttyUSB给4G模块发AT指令,模块是能收到的,只是出于某种原因F1C100S没收到模块的回复。用真实串口去给模块拨号,发现也连不上网,说明不止tttyUSB有问题,连网卡驱动也受到hub的影响,这就麻烦了。
离线
你的ttyUSB是4G模块生成的吗?
还是说F1C200S外接的USB转串口?用真实串口去给模块ppp无法上网?????这是什么操作??不是应该没有影响吗?也没通过USB呀
4G模块是RNDIS拨号上网,不是PPP,当4G模块通过USB接到HOST时,会生成几个ttyUSB设备和一个网卡接口,ttyUSB接口走调试log和AT命令,网卡接口走网络数据。AT命令也可以直接通过真实串口来控制4G模块,用法和虚拟出来的串口是一样的。
离线