与狗做网站,企业网站托管常见问题,seo 网站换程序,做视频网站需要哪些手续在调试LTE模块#xff0c;有两个模块#xff0c;碰到两种4字节对齐问题#xff0c;其错误提示都是类似如下的内容#xff1a;
DWC_OTG: dwc_otg_hcd_urb_enqueue urb-transfer_buffer address not align to 4-byte 0xee419e8e 都是USB控制器处理的数据时需要4字节对齐… 在调试LTE模块有两个模块碰到两种4字节对齐问题其错误提示都是类似如下的内容
DWC_OTG: dwc_otg_hcd_urb_enqueue urb-transfer_buffer address not align to 4-byte 0xee419e8e 都是USB控制器处理的数据时需要4字节对齐要求。 第一种情况是驱动时处理GPS数据时出现上面的错误提示处理方法如下 将原来的
const char startMessage[] $GPS_START;
const char stopMessage[] $GPS_STOP; 修改为
const char startMessage[] __attribute__((aligned (4))) $GPS_START;
const char stopMessage[] __attribute__((aligned (4))) $GPS_STOP; 第二种情况是模块上网后收发数据时均提示对齐问题这样模块根本就无法上网了相应的处理如下 将相应的rx_submit函数中的skb_reserve (skb, NET_IP_ALIGN);函数注释掉 在相应的xxxx_start_xmit函数的变量定义后添加如下内容
length ((unsigned long)skb-data) 0x3;
if (length) {if (skb_cloned(skb) ||((skb_headroom(skb) length) (skb_tailroom(skb) (4-length)))) {struct sk_buff *skb2;skb2 skb_copy_expand(skb, 0, 4, GFP_ATOMIC);dev_kfree_skb_any(skb);skb skb2;if (!skb)goto drop;} else {length ((skb_headroom(skb) length) ? 0 : 4)-length;memmove(skb-datalength, skb-data, skb-len);skb_reserve(skb, length);}
} 至此驱动部分的4字节对齐问题就处理好了。