一、源码获取解压
1、 解压源码
不同的LoRa模块提供商也会因为硬件结构不同而提供他们适配的源码总体符合smetech官方源码框架,解压源码:Sx1302LinuxDriver.zip
2、 修改顶层目录下的Makefile,修改架构和交叉编译工具
3、编译源码
Make
4、因为我们的lora模块是连接在spi总线之上,所以查看spi测试代码,修改核心库源码libloragw/tst/test_loragw_spi.c
5、重新Make以后在开发板运行执行spi测试程序test_loragw_spi,提示如下:
6、通过打印提示发现缺少reset_lgw.sh这个文件,这个是通过GPIO复位集中器芯片的脚本文件,这个文件在上层目录tools底下,需要重新拷贝到和test_loragw_spi同级目录下才可以
7、执行spi测试程序发现报错 sleep:invalid number ‘0.1’,报sleep格式错误,因为在脚本中不能使用小数,将sleep 0.1改为usleep 10000
8、再次执行发现错误
7、 通过打印信息分析没有读到lora寄存器的地址,读写函数也没有得到具体的数据,所以
猜测是lora的reset还是没有复位成功,通过和硬件工程师确定,发现com335上的CN36(spi接口上边的reset是系统复位io口)。因为板子上有很多按键,原先想用按键的gpio给我使用,后来用了其他排针的gpio
通过loar源代码中的rest_lwg.sh复位脚本中的代码分析需要两根gpio,一根rest、一根power_en,当power_en一直保持高电平时,rest由高变低就可以启动lora。所以让硬件工程师将按键(gpio口)给我使用
发现按键的gpio口通过芯片之后再接到按键上,但是由于供应商提供的芯片手册缺失,不够完全,没有办法确认,只能通过能够确认的gpio口,所以选中了CN20(I2C接口)
8、通过杜邦线接(Lora:IO6 ----335:I2C5)、(Lora:rest-----335:I2C6),修改rest_lwg.sh脚本中的引脚定义
二、程序测试
1、、复位测试
2、spi测试
再执行之后结果如下:发现如下问题,主控板和loar模块之间的读写没有问题,但是连续读写有问题。
3、固件库版本和硬件平台兼容测试:
4、Lora主程序代码运行报错,猜测是网络问题,查看代码发现是主程序lora_pkt_fwd中连接NS server时候创建套接字失败,检查发现是开发板无法ping通外网(无法联通lora基站)
5、解决方法:
查看路由表:发现什么都没有,然后添加路由表route就可
route add 172.16.31.1 dev eth0
route add default gw 172.16.31.1 eth0