本帖最后由 翠花儿 于 2021-7-22 09:47 编辑
本章介绍在iTOP-4418开发板最小linux系统上测试lora模块的步骤,非设备树系统可参考此文档,需要的资料在网盘“iTOP-4418-lora模块测试例程”文件夹内。本章需要的资料包在网盘“iTOP6818开发板资料汇总(不含光盘内容)\09_iTOP-4418开发板最小linux_Qt_Ubuntu扩展文档\lora测试模块”下载。 1 硬件连接测试中使用两块iTOP-4418开发板通信,将lora模块分别插在两个开发板的GPIO/CAN/485扩展口,如下图: 2 驱动修改进到源码目录,执行命令“vi kernel/arch/arm/plat-s5p4418/topeet/device.c”打开文件,以rc522为基准 添加lora模块。 搜索rc522,在后面添加如下内容: #ifdef CONFIG_SPI_SX127X static struct spi_board_info sx127x_plat_board[] __initdata = { [0] = { .modalias = "sx127x", .max_speed_hz = 100*1000, .bus_num = 2, .chip_select = 0, .mode = 0, .controller_data = &spi2_info, }, }; #endif 添加完后如下图: 继续查找rc522,添加对宏定义的判断: || defined(CONFIG_SPI_SX127X) 如下图: 然后继续查找“522”,后面添加代码: #if defined(CONFIG_SPI_SX127X) spi_register_board_info(sx127x_plat_board,ARRAY_SIZE(sx127x_plat_board)); printk("plat: register sx127x\n"); #endif 如下图所示。 保存后退出。 在内核目录下,使用命令“vi arch/arm/plat-s5p4418/topeet/include/cfg_main.h”如下图所示。 查找“CFG_SPI2_CS_GPIO_MODE”并将其值修改为0,如下图所示。 保存后退出。 将驱动文件sx127x.c通过ssh传到内核目录下的“drivers/spi/”下,如下图所示。 使用命令“vi Makefile”,在最后添加代码: obj-$(CONFIG_SPI_SX127X) += sx127x.o 如下图所示。 保存退出。 使用命令“vi Kconfig”,在最后添加代码: config SPI_SX127X tristate "SX127X Module driver support" depends on EXPERIMENTAL help This supports SX127X Module drivers. 如下图所示。 保存退出。 回到源码目录。使用以下命令配置内核。 cp -r config_for_iTOP4418_linux_RTL8211 .config export ARCH=arm make menuconfig 如下图。 Device Drivers -> SPI support (SPI [=y]) 选择“SX127X Module driver support”,取消选择“RC522 Module driver support”。如下图所示。 保存退出后,回到android源码目录下,使用命令“./build_android.sh qt”编译,完成后烧写“boot.img”内核镜像。 3 测试软件使用 我们的开发板GPIO座子外接lora模块。将“lora_test”目录下可执行文件“lorares”,“lorasend1”,“lorasend2”分别拷贝到三块开发板。 两个发送机端分别使用命令“./lorasend1 1 &”,“./lorasend2 1 &”,每三十秒发送一次数据。 另一个接收机端使用命令“./lorares 0 &”,然后就可以打印出发送机id号,并打印接收到的值。 接收到正确数值说明两个lora模块通信成功。
|