LoRa 固件
目前有一个 需求,为了研究lora 在不同干扰情况下数据包字节错误的情况,我必须将错误的数据包也记录下来,即没有通过CRC校验的数据包。但是现有的lora固件,会直接将没有通过CRC的数据包丢弃,无法查看错误的情况。因此,有了这个记录。
针对的芯片
研究的是lora 2.4的通信,因此针对的芯片是sx1280的,这里就不把集成了该芯片的厂商说出来了。下面主要介绍一些思路。
整体过程为:
- 提取共享库
- 结合网上开源的代码,找到关键位置,思考修改的方案
- 找到最优的修改方案,执行修改,并重新打包测试。
提取共享库
厂商提供的是一个封装起来的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.

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

被折叠的 条评论
为什么被折叠?



