QuecOpen® 快速入门指南
简介
移远通信 FCM242D 和 FGM842D 系列模块支持 QuecOpen® 方案。QuecOpen® 是基于 RTOS 系统的嵌入式开发平台,旨在简化物联网应用的设计与开发。
本手册适用于基于 SDK 构建环境的 QuecOpen® 方案,是 FCM242D 和 FGM842D 系列模块的快速入门指南。内容涵盖 SDK 目录结构、编译环境搭建、应用开发与编译、固件烧录及 Linux 下常见编译错误。
SDK 目录结构
不同版本的 QuecOpen SDK 目录结构可能略有差异,但功能保持一致。下表以 Windows 和 Linux 操作系统为例,展示了典型的 SDK 目录结构:
| 目录名称 | 说明 |
|---|---|
| ql_application | 存放示例文件及用户应用工程代码 |
| ql_build | 存放编译相关脚本文件 |
| ql_components | 存放组件,包括第三方组件及移远 API 组件 |
| ql_kernel | 存放芯片相关代码及库文件,包括 RTOS 支持(当前仅支持 FreeRTOS) |
| ql_out | 存放编译输出文件,用于烧录,如 .bin、.map 文件 |
| ql_tools | 存放编译所需工具链 |
工程编译环境搭建
gcc-arm-none-eabi 是 ARM 裸机系统的 GCC 工具链,为模块的项目编译工具链。SDK 支持在 Linux 和 Windows 操作系统下编译。gcc-arm-none-eabi 工具链、CMake 及 MinGW(仅 Windows 需用)已集成在 SDK 的 ql_tools 目录下,可自动解压使用。推荐 Linux 发行版为 Ubuntu 16.04 及以上,Windows 10 及以上版本。此外需安装 Python 3 及以上版本,并添加至系统环境变量。
项目编译时,仅支持 SDK 集成的 gcc-arm-none-eabi 工具链,不支持系统自带的 gcc-arm-none-eabi 工具链。
若 SDK 中 gcc-arm-none-eabi 工具链自动解压安装失败,可按如下方式手动解压安装:
打开 Linux 终端,进入 ql_tools/toolchain 目录,执行如下命令解压工具链(如已解压可跳过):
tar -vxf gcc-arm-none-eabi-5_4-2016q3.tar.bz2
执行如下命令,打开环境变量配置文件:
sudo vim ~/.bashrc
在配置文件末尾添加环境变量(请根据实际路径填写,图中路径仅供参考):
export PATH=$PATH:/home/xxx/ql_tools/toolchain/gcc_arm_none_eabi/gcc-arm-none-eabi-5_4-2016q3/bin
保存并关闭配置文件,在终端执行如下命令使配置立即生效,至此编译环境搭建完成:
source ~/.bashrc
应用开发
创建应用目录
在 QuecOpen SDK 的 ql_application 目录下创建用户文件夹(用于存放源码和头文件),如 user_code 文件夹。

在 user_code 文件夹下分别创建 user_inc 和 user_src 文件夹,分别用于存放头文件和源文件。

应用示例说明
QuecOpen SDK 在 ql_application/example 目录下提供了应用开发参考示例。
应用入口函数 ql_app_main() 位于 ql_application/ql_app_main.c 文件中。可根据需要在 ql_app_main() 中调用示例程序,用户可参考如下程序逻辑编写自定义代码。

添加用户应用
创建应用线程
编写 user_code.c 和 user_code.h 文件,分别存放于 user_code/user_src 和 user_code/user_inc 目录。user_code.c 文件编写示例如下:

上图序号说明:
- 添加用户自定义头文件
- 初始化配置
- 任务处理代码
- 任务创建函数
在
ql_app_main()函数中调用ql_user_demo_thread_creat(),以创建用户任务。
添加编译文件
为保证编译通过,需将源文件和头文件添加至编译脚本,否则编译时无法找到相关文件。操作步骤如下:
进入 ql_application 目录,打开 configure.cmake 文件。

在 configure.cmake 文件中添加如下代码,创建 user_srcs 源文件列表。

打开 SDK 根目录下的 CMakeLists.txt 文件。

找到
list (APPEND include_files行,添加用户头文件路径;找到list (APPEND source_files行,添加用户源文件路径。具体操作可参考下图红色标记部分。
应用编译
本章以 FCM242D 模块为例,介绍应用编译方法。
编译说明
Linux 系统
打开 Linux 终端,进入 SDK 根目录,执行如下命令编译应用:
./build.sh

编译成功后界面如下:

Windows 系统
打开 Windows 命令行,进入 SDK 根目录,执行如下命令查看编译选项:
build
随后根据实际需求执行相应编译命令。例如,执行如下命令编译程序:
build new FCM242D your_firmware_version release

编译成功后界面如下:

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

ql_out 文件夹内主要文件说明:
- all_2M.1220.bin:完整生成的程序固件,通过模块串口烧录
- bootloader.bin:引导程序文件
- fcm242d.elf:Linux 下生成的可执行目标文件
- fcm242d.map:程序映射文件
- fcm242d_uart_2M.1220.bin:实际生成固件(除引导外的完整固件)
清理历史编译文件
每次新编译前,系统会自动清理上次编译生成的文件。
固件烧录
模块支持通过串口使用 BKFIL 工具进行固件烧录(BKFIL 工具及使用方法请联系移远技术支持获取),操作步骤如下:
- 打开 BKFIL 工具,在主界面点击
SelectPort,选择主串口进行固件烧录。 - 点击 Bin Path 后的
图标,选择 all_2M.1220.bin 文件。 - 点击 Download,然后按下模块复位键进行烧录。烧录完成后,若 Status 状态框显示 "done",则表示烧录成功。

Linux 下常见编译错误
错误信息:“arm-none-eabi-gcc: Command not found”
出现该错误信息,说明
gcc-arm-none-eabi工具链未添加到环境变量,或工具链缺少必要的依赖库。解决方法如下:
确认已正确安装
gcc-arm-none-eabi工具链,并已将其路径添加到环境变量,详细步骤请参见第3章。如果工具链已安装且路径已添加,但仍然出现该错误,说明系统缺少必要的依赖库。此时请执行以下命令以安装缺失的依赖:
apt install libc6-i386 lsb-core apt-get install lib32z1 apt-get install lib32stdc++6 apt-get install libstdc++6
错误信息:“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 | 应用程序编程接口 |
| ARM | 高级精简指令集计算机 |
| GCC | GNU 编译器套件 |
| IoT | 物联网 |
| RTOS | 实时操作系统 |
| SDK | 软件开发工具包 |