linux调试LTE模块驱动

在调试LTE模块驱动时,遇到`ifconfig eth1 up`命令执行失败,错误提示为`No space left on device`。通过分析驱动代码发现,问题可能出在`usbnet_open`函数中`usb_submit_urb`导致的中断状态错误。进一步跟踪到`musb_host.c`的`musb_schedule()`函数,发现可能是USB控制器的endpoint资源不足。最后,通过增加`mode_2_cfg`配置中的endpoint数量,解决了问题。然而,对USB协议的不熟悉使得问题的原理尚未完全理解。
摘要由CSDN通过智能技术生成

调试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, },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值