基本站2.0.6 2022年1月的文件

编译Lora Basics™站

有两种方法可以为特定的硬件平台编译Lora Basics™站:

  1. 直接在目标平台上编译

  2. 目标平台的跨编译

只有在平台上有足够的资源(例如Raspberry Pi)上,才有可能在目标平台上进行编译。对于其他资源有限的嵌入式网关(例如Kerlink),交叉编译是唯一可行的选择。

存储库结构

站存储库具有以下目录结构:

  • build- $ platform- $变体:生成的二进制目录

  • deps:必需的库

  • 例子:车站使用示例

  • Pysys:共享用于仿真和测试的Python脚本

  • src:核心源文件

  • SRC- $平台:特定于平台的源文件

制作环境

使用制作实用程序来创建二进制可执行文件。以下文件与制作环境。

  • makefile:构建可执行文件的核心规则

  • makefile.s2core:Makefile的核心规则

  • setup.gmk:用于制造环境的主设置文件。这控制了不同平台的配置

  • 设置 - $ platform.gmk:可选平台特定的规则和环境设置

通常,平台及其相应变体被指定为一个参数制作目标。基于这些参数,根据指定的规则设置构建环境setup.gmk或者设置 - $ platform.gmk

以下核心制作可以使用目标:

  • deps:建立所需的依赖关系

  • S-All:构建二进制电台,以及所有必需的对象文件

  • S-Clean:清洁与车站相关的对象文件和二进制文件

  • 干净的:清洁所有站点对象和依赖关系

  • 超级清洁:清洁依赖项以及所有站点对象和依赖项的所有GIT存储库

依赖性

Lora Basics Station具有以下第三方图书馆依赖性:

  • 麦芽TLS== 2.6;

  • SX1301libloragw== 5.01。用于V1.5和V2浓缩器设计。

  • SX1302libloragw== 1.0.5。用于Corecell浓缩器设计。

从源建立一个站,需要

  • 海湾合作委员会> = 4.8.1支持带有GNU扩展的C11;

  • gnu制作

  • bash

此外,git用于源代码版本控制和控制。

根据目标平台,特定的实现libloragw可能需要图书馆或其他库。依赖项在构建过程中从在线存储库中下载,通常使用git,应根据需要进行修补。

准备Libloragw

补丁

默认情况下,libloragw库是从在线存储库下载的,具体取决于特定平台。如果目标平台需要对标准进行修改libloragw库,可以将其添加为一个补丁(例如,dep/lgw/patch- $ platform.patch)。

更改库

如果目标平台需要不同的libloragw库,此依赖关系也可以在setup.gmkmakefile配置文件。

构建环境需要一个制造件,这使得libloragw档案和相应的文件包括build-platform-variant/lib构建平台变化/包括目录。

TD=../ ..包括$ {TD}/setup.gmktekui_lib=$ {TD}/$ {BD}/lib/libtekui.atekui_inc=$ {TD}/$ {BD}/包括/tekuitekui_version=3.5.6人工制品=$ {tekui_lib}$ {tekui_inc}全部准备$ {人工制品}准备@mkdir -p$ {TD}/$ {BD}/包括$ {TD}/$ {BD}/lib$ {tekui_lib}$ {tekui_version}/libsx1301ar/libsx1301ar一种CP $ <[电子邮件保护]$ {tekui_inc}$ {tekui_version}/libsx1301ar/api_incCP -R $ <[电子邮件保护]-temp rm -rf[电子邮件保护]MV[电子邮件保护]-temp[电子邮件保护]清洁超级清洁RM -RF$ {人工制品}。假准备全部干净的极好的-干净的

编译目标

在目标平台上编译需要安装海湾合作委员会编译器与制作在目标平台上构建工具。

例如:

  1. 要使用Raspberry Pi Linux系统作为主机和Semtech SX1302CXXXGW1编译Corecell平台的站点,请使用以下命令:

制作平台=Corecell变体=标准

要编译所需的依赖项,并在Raspberry Pi Linux系统上干净地重新编译一个站,请使用以下命令:

制作平台=Corecell变体=STD DEPS S-CLEAN S-ALL
  1. 要在Raspberry Pi Linux系统上编译站,请使用以下命令:

制作平台=RPI变体=标准

要编译所需的依赖项,并在Raspberry Pi Linux系统上干净地重新编译一个站,请使用以下命令:

制作平台=RPI变体=STD DEPS S-CLEAN S-ALL

看到setup.gmkMakeFile用于支持平台及其各自配置的列表。

特定目标的交叉编译

当针对特定目标平台进行交叉编译时,您需要一个匹配的交叉补充工具链。这制作规则将根据平台。因此,工具链必须安装在用户的$ home目录,遵循命名大会工具链平台

例如,要交叉编译到kerlink网关,请使用以下命令:

制作平台=kerlink变体=标准

笔记:对于Kerlink,toolchain_x86_64_v3.3是必须的。

添加一个新平台

添加一个新的目标平台NewCool作为平台标识符,必须将以下条目添加到setup.gmk文件。在大多数情况下,这些条目与现有平台非常相似。您可以使用这些灵感:

  • Arch.Newcool:指定跨编译器前缀;

  • cfg.newcool:定义基础操作系统,该操作系统是libloragw库和其他配置,例如LED等;

  • deps.newcool:指定库依赖关系。至少这些是libloragw图书馆(具有特殊的变体)和麦芽TLS;

  • cflags.newcool:在这里,如果需要,可以设置特殊的编译器标志;

  • libs.newcool:定义共享库要链接。

要简单地为新目标平台编译,您可以使用以下命令:

光盘$ station_repo制作平台=NewCool变体=标准

移植清单

在将电台移植到新平台时,请考虑以下内容:

1.准备确定网关参考体系结构:LGW1,LGW2,SMTCPICO创建一个平台特定的LGW补丁确定所需的硬件功能:GPS/PPS,微型板,多板重新定义平台特定于S2CONF.H中创建station.conf,反映所需的硬件功能和参数(TX LUT,RSSI偏移等)。2。跨编译Adapt设置。用于新$ Platform的gmk for New $ Platform集成工具链到构建环境中检查是否在编译过程中显示未显示错误或警告。3.集成确保正确的后霍尔网络管理(3G,以太网,DHCP,DNS等)安装创建系统启动脚本 -  initd,systemd create installation and升级软件包(例如OPKG,DPKG,dpkg,installer/installer/listgrade脚本等))促进个性化/供应(例如生成Cups-boot。{uri,crt,key,trust},sig-0.key)创建一个无线电重置脚本(可选)创建健康报告脚本4.测试该站正确派生是否适当派生。大门满足网络要求的方式ID测试(DHCP,DNS,防火墙规则)测试所有脚本:安装程序,重新启动后的启动,无线电重置,健康报告等。测试该站的硬件功能无线电(使用HAL进行的低级测试测试实用程序)GPS(NMEA/UBX解析,如果需要解决位置)PPS采集SPI SPI速度和交易设置设置延迟时钟漂移行为通过网络服务器和端设备进行端到端测试,以更新端到端测试使用CUPS协议微调S2Conf.H中的默认参数以获得最佳性能