Windows环境搭建
配套工具要求
- Git工具(可选)
下载SDK代码,可以使用git软件。下载地址:https://git-scm.com/downloads
- CMake工具
CMake工具可以动态生成Makefile文件,下载地址:https://cmake.org/
- 交叉编译工具
交叉编译工具可以选择gcc或armcc,SDK目前支持NucleoL073RZ开发板,交叉编译基于gcc来搭建。
开发板对应的gcc下载地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads 使用其他开发板,可以选择自己对应的开发板交叉编译工具。
- Makefile执行环境
Windows下执行makefile文件可以通过下载MinGW软件。
第一步:下载SDK代码
SDK托管在github上,地址:https://github.com/h3c-iot/oasis-lorawan-demo 可以直接下载master分支代码或对应的历史发布版本,建议下载最新的master代码。
第二步:搭建编译环境
a) 下载安装CMake工具,并把CMake安装路径加入到PATH环境变量中,打开命令行执行环境,执行cmake --version
查看是否生效,如下图。
图: Cmake工具检测
b) 下载MinGW软件,安装完成后,把MinGW软件安装路径加入到PATH环境变量中,打开命令行执行环境,执行make --version
查看是否生效,如下图。
图: Make工具检测
c) 搭建交叉编译环境,本文用的是arm-none-eabi交叉编译工具链,安装完成后,把安装路径加入到PATH环境变量中,打开命令行执行环境,执行arm-none-eabi-gcc --version
查看是否生效,如下图。
图: 交叉编译工具检测
第三步:CMake制作Makefile
进入SDK工程目录,进入build目录,执行cmake命令,例如下面命令。
cmake -DCMAKE_TOOLCHAIN_FILE="I:/oasis-lorawan-demo/cmake/toolchain-arm-none-eabi.cmake" -DTOOLCHAIN_PREFIX="C:/Program Files (x86)/GNU Tools ARM Embedded/8 2019-q3-update" -DCMAKE_MAKE_PROGRAM="C:/MinGW/bin/make.exe" -G "MinGW Makefiles" -DMBED_RADIO_SHIELD="SX1278ACSIPS78F" -DREGION_EU868="OFF" -DREGION_CN470="ON" -DACTIVE_REGION=" LORAMAC_REGION_CN470" ..
- -DCMAKE_TOOLCHAIN_FILE
定义指定CMake的脚本文件,配置交叉编译工具相关参数,详细请查阅cmake/toolchain-arm-none-eabi.cmake
文件
- -DTOOLCHAIN_PREFIX
定义交叉编译工具路径,配合CMAKE_TOOLCHAIN_FILE
指定的文件找到对应的交叉编译工具。
- -DCMAKE_MAKE_PROGRAM
定义cmake执行的make工具。
- -G "MinGW Makefiles"
指定编译生成的Makefile类型为MinGW Makefiles
- -DMBED_RADIO_SHIELD="SX1278ACSIPS78F"
定义编译的开发板为群登的S78F模组,其他开发板参数定义参考Cmake编译参数。
- -DREGION_EU868="ON" -DREGION_CN470="OFF"
定义SDK支持的国家码,详细定义参考Cmake编译参数。
- -DACTIVE_REGION="LORAMAC_REGION_EU868"
定义当前工作激活的国家码,详细定义参考Cmake编译参数。
执行后结果如下图。
图: Cmake执行结果
注意:如果需要修改编译参数执行cmake,需要先删除build目录下的CMakeCache.txt
文件后再重新执行命令。
第四步:执行Makefile
执行完cmake命令后,会在当前目录下生成cmake的相关临时文件和Makefile文件,编译执行make,最后链接生成可执行文件。
执行结果如下图
图: Make执行结果
由于cmake执行未指定-DAPPLICATION="XXXXXX"
进行应用的选择,所以默认编译newclassA应用案例,参考ClassA案例。最后生成的可执行文件目录为:build\example\stm32\NucleoL073\apps
。
第五步:烧写bin文件并测试
取最后生成的newclassA.bin
文件烧写到开发板上,进行调试测试。