本教程将介绍基于Goodix GR5515-SK开发板的Amazon FreeRTOS系统入门。如果您没有此开发板,可以点击 这里 购买一块。
在开始之前,您需要为 Amazon FreeRTOS 低功耗蓝牙设置 AWS IoT 和 Amazon Cognito。
要运行 Amazon FreeRTOS 低功耗蓝牙,您还需要具有蓝牙和 Wi-Fi 功能的 iOS 或 Android 移动设备。
注意
GR5515-SK开发板使用Amazon官方提供的SDK 作为接入AWS Cloud的路由, 提供了iOS版本和Android版本,您可以从这里clone源码:
- iOS版本源码 : https://github.com/aws/amazon-freertos-ble-ios-sdk
- Android 版本源码: https://github.com/aws/amazon-freertos-ble-android-sdk
如果您使用的是 iOS 设备,则需要 Xcode 来构建移动应用程序。如果您使用的是 Android 设备,则可使 用 Android Studio 来构建移动应用程序。
- 硬件准备:
- 一块GR5515-SK开发板
- 一条Micro USB接口线
配置说明主要针对Windows系统,基于GR5515-SK开发板进行Amazon-FreeRTOS开发,需要依赖如下软件和文件:
- Keil μVision5:GR5515-SK使用的集成开发环境
- 支持 ARM Cortex-M4 FPU芯片的DFP(Device Family Pack)软件包
- JLink:可用于GR5515-SK开发板的程序烧写和调试
- 串口助手工具:用于日志的打印输出
- GR5515芯片烧写算法文件:Keil下GR5515芯片的烧写算法文件
- GnuMake和cmake工具:适用于通过命令行构建工程
-
在Keil软件官网点击下载适用于Arm Cortex-M的安装程序,推荐下载版本:μVision V5.20。
-
运行下载的安装程序,进行Keil软件的安装,安装路径选择默认即可。
-
在Keil软件官网点击下载Arm cortex-m4 fp dfp安装程序,保存到合适的目录。
-
启动Keil 软件,在文件工具栏找到按钮Pack Installer,点击打开。
-
点击菜单 File-> Import,导入下载的dfp文件,完成安装。安装完成后的图片如下所示。
GR5515-SK开发板已板载支持JTAG/SWD调试接口,不需要再购买JLink仿真器,只需要安装JLink软件即可。
-
下载JLink软件。
下载地址: https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPackBeta
JLink软件版本要求:6.10+,建议下载最新版。
-
下载完成后,点击安装到默认路径即可。
- 在网络下载合适的串口助手工具进行安装。
-
下载GR5515芯片算法文件。
下载地址:GR551x_8Mb_Flash.FLM
-
文件下载完成后,存放到Keil安装路径下Flash目录。
一般默认路径为:C:\Keil_v5\ARM\Flash
如果只使用keil集成环境进行项目开发,可以不用安装gnu-make和cmake软件;如果希望使用cmake命令行进行项目构建,需要安装gnu-make和cmake。
-
下载gnu-make。
下载地址:ftp://ftp.equation.com/make/
-
gnu-make为非安装可执行文件,放置到合适的路径,如c:\gnumake\,然后加入到环境变量path。
-
下载cmake后点击安装。
安装在默认路径下。
cmake(版本>3.13),下载地址:https://cmake.org/
要下载适用于Goodix GR5515-SK的Amazon FreeRTOS,请转至Goodix的Github组织账户下 项目Amazon FreeRTOS 并克隆存储库。
注意
Microsoft Windows 上的文件路径最大长度为260个字符。过长的 Amazon FreeRTOS下载目录路径可能会导致构建操作失败。
在本教程中,amazon-freertos目录的路径称为 $(amazon-freertos)。
-
开启keil μVision5软件,打开工程 $(amazon-freertos)\projects\goodix\GR5515-SK\keil_v5\aws_demos\goodix_aws_demos.uvprojx
-
第一次打开工程,可能会提示选择芯片型号。如有提示,请选择ARM Cortex M4 -> ARMCM4_FP,如弹出的芯片选择框中无此芯片型号,请参考 3.2 安装ARM CM4-FP DFP 安装相关pack文件。
-
打开后的工程目录结构:
工程按照“main入口及硬件初始化 | Demo及相关头文件 | aws freertos公共依赖 | GR5515 SDK依赖 | 各模块Porting文件及配置”的分类进行文件组织,便于用户快速定位文件。
-
使用Micro-USB线连接PC和GR5515-SK开发板,可通过Windows系统设备管理器查看是否找到设备,如图(注意, 不同电脑串口号可能不一致)。
-
选中工程,右键选择菜单:Options for Target -> 选中Debug选项卡 -> 选中USE下拉菜单 JLINK/JTRACE-Cortex ->点击Settings -> 选中Debug选项卡 -> Port 选择 SW,如下图。确认找到芯片设备。
-
如下图,在Cortex/JLink/JTrace Target Driver Setup 弹窗选择选项卡 Flash Download,可通过 Add 按钮选择并设置GR551x芯片的下载算法文件。
-
打开串口助手工具,选择GR5515-SK开发板串口,配置参数:115200|8|N|1, 然后开启串口。
-
浏览至 AWS IoT 控制台。
-
在导航窗格中,选择 Settings。
您的 AWS IoT 终端节点显示在 Endpoint (终端节点) 文本框中。它应该类似于
*<1234567890123>*-ats.iot.*<us-east-1>*.amazonaws.com
。记下此终端节点。 -
在导航窗格中,选择管理,然后选择事物。记下设备的 AWS IoT 事物名称。
-
利用您拥有的 AWS IoT 终端节点和 AWS IoT 事物名称,在 IDE 中打开
$(amazon-freertos)/demos/include/aws_clientcredential.h
,并为以下#define
常量指定值:clientcredentialMQTT_BROKER_ENDPOINT
您的 AWS IoT 终端节点clientcredentialIOT_THING_NAME
您的主板的 AWS IoT 事物名称
- 点击菜单 Project -> Build Target,可进行工程的编译, 编译完成后,会在 $(amazon-freertos)\projects\goodix\GR5515-SK\keil_v5\aws_demos\build 目录生成目标二进制文件。
- 如果使用make + cmake 进行项目的编译,请参考章节:6. 通过cmake构建项目。
GR5515-SK支持如下演示项目:
- CONFIG_MQTT_DEMO_ENABLED: 通过 MQTT ( over BLE )和AWS Iot Cloud建立网络连接,进行数据Subscribe/Publish演示的项目
- CONFIG_BLE_GATT_SERVER_DEMO_ENABLED: BLE低功耗蓝牙的GATT服务演示项目
默认情况下,GR5515-SK工程已完成了其他宏功能的配置,用户遵照 4.3 章节配置好终端节点后,即可以在文件 $(amazon-freertos)\vendors\goodix\boards\GR5515-SK\aws_demos\config_files\aws_demo_config.h中通过定义如上宏(单次只允许定义一个宏),开启相应Demo的演示功能。
- 启用相应演示项目宏定义后,进行项目的编译。
- 项目编译完成后,点击菜单 Flash -> Download (或者快捷键 F8),进入程序的烧录。
- 程序烧录成功后,可通过开发板复位键启动演示程序,或者使用Keil软件的Debug菜单,进入项目的调试。
关于演示的更多细节请参考:
注意
cmake版本和Amazon FreeRTOS要求保持一致。
- goodix/GR5515-SK 的cmake文件路径: $(amazon-freertos)\vendors\goodix\boards\GR5515-SK\CMakeLists.txt
- goodix/GR5515-SK 的cmake编译器文件: $(amazon-freertos)\tools\cmake\toolchains\arm-keil-v5.cmake
- 编译Demo工程:
cd {SRC_ROOT}
cmake -DVENDOR=goodix -DBOARD=GR5515-SK -DCOMPILER=arm-keil-v5 -DAFR_ENABLE_TESTS=0 -S . -B build -DAFR_METADATA_MODE=1 -G "Unix Makefiles"
cd build
make -j8
- 编译Test 工程:
cd {SRC_ROOT}
cmake -DVENDOR=goodix -DBOARD=GR5515-SK -DCOMPILER=arm-keil-v5 -DAFR_ENABLE_TESTS=1 -S . -B build -DAFR_METADATA_MODE=1 -G "Unix Makefiles"
cd build
make -j8
- cmake 命令执行示意:
-- The C compiler identification is ARMCC 5.6.61
-- The CXX compiler identification is ARMCC 5.6.61
-- The ASM compiler identification is ARMCC
-- Found assembler: C:/Keil_v5/ARM/ARMCC/bin/armasm.exe
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.22.0.windows.1")
=========================Resolving dependencies==========================
module disabled: wifi
reason: wifi::mcu_port is not defined by vendor.
dependency path: ble_wifi_provisioning->wifi->wifi::mcu_port
module disabled: secure_sockets
reason: secure_sockets::mcu_port is not defined by vendor.
dependency path: greengrass->secure_sockets->secure_sockets::mcu_port
====================Configuration for Amazon FreeRTOS====================
Version: 201906.00 Major
Git version: Unknown
Target microcontroller:
vendor: Goodix
board: GR5515-SK
description: Goodix BLE GR5515-SK Board for AmazonFreeRTOS
family: Goodix BLE GR551x
data ram size: 256 KB
program memory size: 1 MB
Host platform:
OS: Windows-10.0.17134
Toolchain: arm-keil-v5
Toolchain path: C:/Keil_v5/ARM/ARMCC
CMake generator: Unix Makefiles
Amazon FreeRTOS modules:
Modules to build: ble, common, crypto, dev_mode_key_provisioning, kernel, mqtt,
ota, pkcs11, platform, posix, serializer, shadow
Enabled by user: ble, mqtt, ota, pkcs11, platform, posix, shadow
Enabled by dependency: ble_hal, common, crypto, demo_base, dev_mode_key_provisioning,
freertos, freertos_plus_posix, kernel, serializer
3rdparty dependencies: jsmn, mbedtls, pkcs11, tinycbor
Available demos: demo_ble, demo_mqtt, demo_ota, demo_shadow
Available tests:
=========================================================================
-- Configuring done
-- Generating done
- 打开CMake-GUI,配置源码和build路径,然后点击Configure。
- 在弹窗中选择makefile generator。
- 选择cmake编译器脚本。
- 完成其他配置。选择goodix.GR5515-SK。如果编译demo工程,不勾选AFR_ENABLE_TESTS;如果编译test工程,勾选AFR_ENABLE_TESTS。
- 上述配置完成后,在命令行切换到 build 目录,进入build目录,执行make命令
Keil提供了丰富的调试菜单,通过JLink工具进行GR5515-SK的运行时调试,常用的调试功能:
有关Amazon FreeRTOS入门的常规故障排除信息,请参阅问题排查入门。