QuecOpen® 快速入门指南
引言
移远通信FC41D、FCMxx0D和FLMx40D模块支持QuecOpen®方案。QuecOpen®是基于RTOS系统的嵌入式开发平台,可简化IoT应用的软件设计和开发过程。
本文档适用于SDK构建环境的QuecOpen®方案,主要介绍移远通信FC41D、FCMxx0D和FLMx40D模块的SDK目录结构、编译环境搭建、应用程序开发、编译流程、固件烧录及Linux下常见编译报错。
适用模块
适用模块:
| 模块系列 | 模块 |
|---|---|
| FC41D | |
| FCMxx0D | FCM100D |
| FCM740D | |
| FLMx40D | FLM040D |
| FLM140D | |
| FLM240D | |
| FLM340D |
SDK目录结构
移远通信发布的QuecOpen SDK中,不同版本的SDK目录可能略有差异,但作用无差异。Windows和Linux操作系统下QuecOpen SDK目录(示例)如下表所示。
SDK目录结构:
| 目录名称 | 描述 |
|---|---|
ql_application |
存放示例文件和用户的应用工程代码 |
ql_build |
存放和编译相关的脚本文件 |
ql_components |
存放组件,包括第三方组件以及移远通信API组件 |
ql_kernel |
存放与芯片相关的代码以及代码库,包括对RTOS的支持(目前仅支持FreeRTOS) |
ql_out |
工程编译输出的用于烧录的文件,包括.bin、map文件以及编译日志等 |
ql_tools |
编译过程中需使用的工具链 |
搭建项目编译环境
模块的项目编译工具链为gcc-arm-none-eabi,即ARM裸机系统的GCC工具链,支持在Linux或Windows操作系统下编译项目。SDK包在ql_tools目录下集成了gcc-arm-none-eabi工具链、CMake以及MinGW(MinGW仅在Windows操作系统下编译项目时需要)并支持自动解压以供使用。推荐使用的操作系统为Ubuntu 16.04及以上版本或Windows 10及以上版本,另需安装Python 3及以上版本并将其添加至系统环境变量中。
在Linux操作系统下编译项目时,仅支持使用SDK中集成的gcc-arm-none-eabi工具链,不支持使用Linux操作系统自动安装的gcc-arm-none-eabi工具链。
若SDK包中集成的gcc-arm-none-eabi工具链自动解压安装失败,则可在SDK包对应目录手动解压安装,可参考如下步骤。
打开Linux命令终端,进入
ql_tools目录文件夹下,执行tar -vxf gcc-arm-none-eabi-5_4- 2016q3.tar.bz2解压工具链(如已解压,忽略此步骤)。
执行sudo vim ~/.bashrc打开环境变量配置文件。

在环境变量配置文件的最后一行添加环境变量(文件路径按照实际路径添加,下述路径仅供参考:
export PATH=\$PATH:/home/xxx/F01DR01A01_C_SDKV01/ql_tools/gcc-arm-no ne-eabi-5_4-2016q3/bin)。
保存并关闭配置文件。此时环境变量添加完成,即项目编译环境搭建完成。
开发应用程序
创建应用程序目录
在QuecOpenSDK的
ql_application目录下创建所需的用户文件夹,例如创建存放源文件和头文件的文件夹。以创建user_code为例,如下所示。
在
user_code文件夹中新建文件user_code.c和user_code.h。
应用程序示例说明
QuecOpen SDK中提供应用程序示例,用户可参考SDK中ql_application/quectel_demo目录下的示例进行应用程序的开发。
QuecOpen SDK中的ql_application/目录下的ql_app.c文件中包含应用程序示例入口,即ql_demo_main()。在该函数中启动一个初始化线程,然后在该初始化线程中调用各个功能组件的初始化接口。各个功能组件按照文件夹划分,用户可参考如下程序逻辑编写代码。

添加用户应用程序
创建应用线程
新建并编写文件
user_code.c和user_code.h,存放在user_code目录下。编写user_code.c文件的示例如下:
上图中序号对应的含义如下:
- 用户自定义添加所需的头文件
- 初始化配置
- 任务处理代码
- 任务创建函数
在
ql_demo_main()函数中添加test_thread_creat()即可在程序中创建task_thread任务。
添加编译文件
将源文件和头文件添加到编译脚本中才能正常使用,否则编译时会提示找不到文件。操作步骤如下:
打开
ql_application/quectel_demo文件夹,打开其中的CMakeLists.txt。
定位到"list(APPEND ql_demo_include_files"并在该位置添加用户的头文件所在的路径,如下图红框中内容所示:

定位到"list(APPEND ql_demo_source_files"并在该位置添加用户的源文件,如下图红框中内容所示:

编译应用程序
编译说明
模块支持在Windows或Linux操作系统下编译应用程序。
Linux操作系统
打开Linux命令终端,进入SDK根目录,执行 ./build.sh 查看编译选项,再执行相应的编译选项编译应用程序。例如,执行 ./build.sh new FC41D your_firmware_version(your_firmware_version表示当前模块使用的版本号)表示编译FC41D当前固件版本,如下图所示。

Windows操作系统
打开Windows命令终端,进入SDK根目录,执行build.bat查看编译选项,再执行相应的编译选项编译应用程序。例如,执行 build new FC41D your_firmware_version(your_firmware_version表示当前模块使用的版本号)表示编译FC41D当前固件版本,如下图所示。

编译成功的界面如下图所示。

编译结果
编译生成的文件存放于ql_out目录下。ql_out文件夹的内容如下图所示。

在ql_out 文件夹中,以下文件分别为:
all_2M.1220.bin:生成的完整程序固件,该固件通过串口进行烧录;bootloader_bk7231n_uart2_v1.0.6.bin:Bootloader文件;FC41D.bin:OTA升级时的打包固件;FC41D.elf:Linux下生成的可执行目标文件;FC41D.map:程序map文件;FC41D_uart_2M.1220.bin:生成的实际固件(即完整固件除去boot部分)。
清除编译文件
每次编译时会自动清除上次生成的文件。
固件烧录
联系移远通信技术支持获取BKFIL开发工具及工具相关使用信息。
打开BKFIL工具,点击工具主界面的"选择串口"按钮,选择主串口进行固件烧录
点击"Bin文件路径"后的
图标,选择ql_out/all_2M.1220.bin文件。
点击 "烧录"选项后,再按下模块上的复位键,进行固件烧录。
烧录完成后,"实时状态"区域显示"done"表示烧录成功。重启模块,选择模块通讯端口,使用串口工具连接模块串口。
模块开机log如下图所示:

Linux下常见编译报错
Error message: "arm-none-eabi-gcc: Command not found"
该错误提示表示未安装gcc-arm-none-eabi工具链到环境变量中或者缺少依赖组件。
可通过如下方法解决:需先安装gcc-arm-none-eabi工具链到环境变量中,详细步骤请参考搭建项目编译环境。
若安装工具链完成后仍有错误提示,则表示缺少依赖组件,可执行如下命令安装依赖组件:
apt install libc6-i386 lsb-core
apt-get install lib32z1
apt-get install lib32stdc++6
apt-get install libstdc++6

Error message " arm-none-eabi-gcc: fatal error: -fuse-linker-plugin, but liblto_plugin.so not found"
此错误提示表示未找到
liblto_plugin.so文件。
可通过如下方法解决:- 此时将
toolchain/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/目录下的liblto_plugin.so.0.0.0文件名称修改为liblto_plugin.so即可。

- 此时将
附录 术语缩写
术语缩写:
| 缩写 | 英文全称 | 中文全称 |
|---|---|---|
| API | Application Programming Interface | 应用程序接口 |
| APP | Application | 应用程序 |
| ARM | Advanced RISC Machine | 高阶RISC机器 |
| GCC | GNU Compiler Collection | GNU编译器套件 |
| IoT | Internet of Things | 物联网 |
| OTA | Over-the-air programming | 空中编程 |
| RTOS | Real-Time Operating System | 实时操作系统 |
| SDK | Software Development Kit | 软件开发工具包 |