修改某款lora固件库以支持接收错误数据包

为了研究LoRa在干扰下的数据包错误情况,本文介绍了如何修改sx1280芯片的固件库,使其能够记录未通过CRC校验的数据包。通过提取和分析固件库,找到了关键位置并提出修改方案,最终在SX1280::ProcessIrqs()函数中修改了一个字节,实现了接收错误数据包的功能。
摘要由CSDN通过智能技术生成

LoRa 固件

目前有一个 需求,为了研究lora 在不同干扰情况下数据包字节错误的情况,我必须将错误的数据包也记录下来,即没有通过CRC校验的数据包。但是现有的lora固件,会直接将没有通过CRC的数据包丢弃,无法查看错误的情况。因此,有了这个记录。

针对的芯片

研究的是lora 2.4的通信,因此针对的芯片是sx1280的,这里就不把集成了该芯片的厂商说出来了。下面主要介绍一些思路。
整体过程为:

  1. 提取共享库
  2. 结合网上开源的代码,找到关键位置,思考修改的方案
  3. 找到最优的修改方案,执行修改,并重新打包测试。

提取共享库

厂商提供的是一个封装起来的LIB库,利用ubuntu 的file工具发现是一个AR格式的打包文件,搜索的解包的方式:(参考AR解压缩
在这里插入图片描述

ar x name.lib

修改之后,可以用下面的方式打包回来:

ar cr dest.lib src1.o src2.o src3.o

其中后面的src1.o src2.o src3.o就是共享库。dest.lib是最终打包的文件名。

之后,我发现其中的sx1280.0的库比较关键,就尝试专注分析该库。
还有另外两个厂商提供的封装库,提供了一些MAC层的操作。这里就叫manufactory.o.

找到关键位置

我初步分析时,首先尝试分析manufactory.o.里面和MAC消息有关的操作。
我分析到两个关键的位置,1,正确接收到lora的消息时的操作

else if ( a2 & 0x40 ) 
   clear_event((unsigned __int8)s_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值