调试LTE模块驱动
碰到问题:命令“ifconfig eth1 up”打开网卡,出现错误,错误信息“ifconfig: SIOCSIFFLAGS: No space left on device”
问题定位:
1)走读LTE驱动代码,发现在usbnet_open函数里调用usb_submit_urb函数发送中断状态返错导致网卡无法打开,直接将这部分代码
注释掉,调试发送网卡能打开,并且也能连上外网,但是串口无法发送AT命令。
2)跟进usb_submit_urb函数,发现到musb_host.c文件里的musb_schedule()函数返错,在条件判断if (hw_ep == musb->bulk_ep)处
continue了。把musb->bulk_ep打印出来值为2,分析可能是usb控制器的endpoint不够用,所以才导致“No space left on device”。
3)走读musb控制器代码,在musb_core.c文件的musb_core_init()函数里调用ep_config_from_table()函数配置,打印musb->fifo_mode=2,
查看mode_2_cfg的配置,里面只有1个endnum的2种配置,修改成6个后测试验证OK,修改代码如下:
/* mode 2 - fits in 4KB */
static struct musb_fifo_cfg __devinitdata mode_2_cfg[] = {
#if 1
{ .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, },
{ .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, },
{ .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, },
{ .hw_
linux调试LTE模块驱动
最新推荐文章于 2021-05-13 22:17:17 发布
