• IMX6Q开发板零基础学习笔记非设备树 Linux 系统Lora 配置及测试


    平台:迅为IMX6Q开发板

    配件:lora模块

    系统:Linux系统

    Lora 内核配置
    本小节我们将在非设备树源码中进行 Lora 内核配置。 Android4.4 源码是非设备树内核的源码, Linux 和Android 共用一套源码, 所以我们使用 Android4.4 源码即可。
    1 打开 Android4.4 内核源码, 我们使用以下命令编辑 board-mx6q_topeet.c 文件。
    cd kernel_imx/vi arch/arm/mach-mx6/board-mx6q_topeet.c

    查找“522” , 在后面添加代码:
    #ifdef CONFIG_SPI_SX127X
    static struct spi_board_info sx127x_plat_board[] __initdata = {
    [0] = {
    .modalias = "sx127x",
    .max_speed_hz = 100*1000

    .bus_num = 1,
    .chip_select = 0,
    .mode = 0,
    //.controller_data = &spi2_info,
    },
    };
    #endif
    修改完如下图所示:

     

    2 然后继续查找“522” , 后面添加如下代码
    #if defined(CONFIG_SPI_SX127X)
    spi_register_board_info(sx127x_plat_board,
    ARRAY_SIZE(sx127x_plat_board));
    #endif

    3 查找“TOPEET_ECSPI2_CS0” 并将其值修改为 NULL, 如下图所示。
    保存后退出。


    4 将驱动文件 sx127x.c 通过 ssh 传到内核目录下的“drivers/spi/” 下, 如下图所示。

     

    5 使用命令“vi Makefile” , 在最后添加如下代码

    obj-$(CONFIG_SPI_SX127X) += sx127x.o

    如下图所示, 修改完保存退出。

    6 使用命令“vi Kconfig” , 在最后添加代码:
    config SPI_SX127X
    tristate "SX127X Module driver support"
    depends on EXPERIMENTAL
    help
    This supports SX127X Module drivers.
    #end add
    修改完如下图所示。

     

    保存退出。
    7 回到源码目录。 使用以下命令配置内核
    cp -r config_for_iTOPiMX6_linux .config

    export ARCH=arm
    make menuconfig

    8 在 menuconfig 的配置界面, 配置 lora,取消配置 rc522
    -> Device Drivers
    -> SPI support (SPI [=y])
    选择“SX127X Module driver support” , 取消选择“RC522 Module driver support” 。 如下图所示。

     

    9 保存退出后, 回到内核源码目录下, 使用以下命令
    cp -r .config config_for_iTOPiMX6_linux
    ./build_android.sh qt
    编译内核, 烧写“uImage” 内核镜像。
    编译完以后, 重新烧写内核镜像到开发板。

     

    应用程序编写
    在测试例程中, 我们要用俩个开发板通过 lora 通信控制对方开发板上的 led 的亮灭。 我们将配置资料中的测试程序 lorares.c 拷贝 Ubuntu 上, 输入以下的命令编译可执行文件
    arm-none-linux-gnueabi-gcc -o lorares lorares.c -static
    编译完生成可执行程序 lorares, 将 lorares 通过 U 盘拷贝到开发板的/usr/bin 目录下, 在下一小节我们将进行测试。

    测试 lora
    1 在测试之前我们要连接好硬件, 我们将 Lora 模块连接开发板 GPIO 座子。 连接好硬件, 如下图所示:

     

    2 在上一小节, 我们编译好了可执行程序 lorares, 我们将 lorares 分别拷贝到俩个开发板的/usr/bin 目录下。
    3 俩个开发板分别连接串口终端, 如下图所示:

     

    4 在左边的串口终端输入以下命令接收, 第一个参数 0 代表接收模式
    cd /usr/bin/lorares 0

    5 在右边的串口终端输入以下命令发送, 第一个参数 1 代表发送模式, 第二个参数代表 led 的状态,为 1 代表 led 灯亮, 为 0 代表 led 灯灭
    cd /usr/bin/lorares 1 1
    6 在俩个开发板的串口终端分别运行命令, 如下图所示:


    接收端的开发板的 led 灯也变亮了, 如下图所示:

     

  • 相关阅读:
    Docker多主机互联
    数据结构
    广度优先算法走出迷宫
    golang反射
    waitGroup的使用
    golang中的mutex锁
    goroutine和channel
    如何优雅的关闭Golang Channel?
    使用context关闭协程以及协程中的协程
    golang对不同系统的编译
  • 原文地址:https://www.cnblogs.com/topeet/p/16330362.html
Copyright © 2020-2023  润新知