当前位置: 首页 > news >正文

调试LTE模块碰到的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->data+length, skb->data, skb->len);skb_reserve(skb, length);}
}

   至此,驱动部分的4字节对齐问题就处理好了。

http://www.lryc.cn/news/444710.html

相关文章:

  • 一篇讲完HTML核心内容
  • 2024icpc(Ⅱ)网络赛补题 G
  • AIGC时代!AI的“iPhone时刻”与投资机遇
  • Kubernetes调度单位Pod
  • C语言指针篇
  • Unity 使用Editor工具查找 Prefab 中的指定脚本
  • Frida-JSAPI:Interceptor使用
  • 【深度学习】(3)--损失函数
  • git学习报告
  • Spring MVC的应用
  • JavaEE: 深入探索TCP网络编程的奇妙世界(六)
  • 探秘 Web Bluetooth API:连接蓝牙设备的新利器
  • Kubernetes Pod调度基础(kubernetes)
  • Angular由一个bug说起之十:npm Unsupported engine
  • Android 开发高频面试题之——Flutter
  • 视频单目标跟踪研究
  • 若依vue3.0表格的增删改查文件封装
  • 【已解决】如何使用JAVA 语言实现二分查找-二分搜索折半查找【算法】手把手学会二分查找【数据结构与算法】
  • ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded
  • .NET 6.0 WebAPI 使用JWT生成Token的验证授权
  • M9410A VXT PXI 矢量收发信机,300/600/1200MHz带宽
  • 用工厂模式演示springboot三种注入方式 | @Autowired
  • es查询语法
  • LabVIEW提高开发效率技巧----合理使用数据流与内存管理
  • 如何在 ECharts 中设置轴标签
  • 怎么用gitee做一个图片仓库,在md文档中用这个图片网络地址,然后显示图片
  • Thinkphp(TP)
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • IT行业的未来:技术变革与创新的持续推动
  • Python PDF转图片自定义输出