应用开发

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


本文档介绍如何在Quectel Pi H1智能主控板的Debian系统上进行应用开发(应用开发是指在智能主控板上编写、编译和运行应用程序的过程)。智能主控板支持两种开发方式:

  • 本地开发:直接在智能主控板上进行开发、编译和运行,适合快速开发和调试;

  • 交叉编译:在PC主机上编译代码,生成可在智能主控板上运行的可执行文件,适合大型工程构建、复杂系统级编译或追求极致构建速度的场景。

本文档将以经典的HelloWorld程序为例,详细介绍这两种开发方式的完整流程,帮助开发者快速上手智能主控板的应用开发。

HelloWorld示例

HelloWorld是一个简单的C语言程序,主要用于验证开发环境是否搭建成功。编写、编译并运行这个程序,可以检验编译器、运行时环境等组件是否正常工作,是嵌入式开发入门的基础实践。

本地开发

本地开发是指在智能主控板上直接进行开发、编译和运行。这种方式操作简单,适合快速验证和调试。

搭建开发环境

登录智能主控板的Debian系统后,打开终端窗口,输入以下命令并按 Enter 键,安装必要的开发环境:

sudo apt update && sudo apt install vim gawk gcc g++ build-essential chrpath socat wget diffstat file unzip tar locales zstd debianutils iputils-ping cpio python3 python3-pip net-tools git make cmake

编写代码

  1. 在 ~/Desktop 目录下创建 helloworld.c 文件。

  2. 复制以下代码段,粘贴在 helloworld.c 文件内:

#include <stdio.h>

int main(void)
{
    printf("Hello World!\n");
    return 0;
}

编译与运行

  1. 执行以下命令,编译代码:

cd Desktop/
gcc helloworld.c -o helloworld
  1. 执行以下命令,运行 helloworld 程序:

./helloworld
  1. 程序运行结果如下:

./helloworld
Hello World!

交叉编译

交叉编译是指在一种平台(如x86_64)上生成可在另一种体系结构的平台(如AArch64/ ARM64设备)上运行的可执行程序。这种方式在性能更强的PC上完成编译,可以提高开发效率。

准备工作

  • 一台运行Ubuntu(推荐20.04/ 22.04 LTS)或Debian的64位(x86_64)开发机(物理机或虚拟机),用于编译代码。

  • 一块智能主控板,用于运行可执行程序。

以x86_64开发机为例,在开发机上执行如下步骤:

安装ARM64工具链

sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

验证安装

aarch64-linux-gnu-gcc --version

正常输出应显示 aarch64-linux-gnu-gcc 的版本信息(示例:11.4.0)。

创建代码文件

vim helloworld.c

按 i 键进入编辑模式,输入下面的代码,然后按 Esc 键,输入 :wq 并按 Enter 键保存退出。

#include <stdio.h>

int main(void)
{
    printf("Hello World!\n");
    return 0;
}

编译代码文件

aarch64-linux-gnu-gcc -o <目标输出文件> <源文件>
例:aarch64-linux-gnu-gcc -o hello_arm64 helloworld.c

检查文件架构

file <文件名>

执行 file 命令验证目标文件架构属性:正常应显示为ARM aarch64架构的ELF可执行文件。

上传编译文件

将主机上编译生成的文件下载到本地,然后在Windows命令行中通过 scp 命令上传至智能主控板。

# 注:主机编译文件的存放路径不要使用中文
scp -O <本地文件> username@<远程IP>:<目标路径>/
例:scp -O D:\hello_arm64 pi@192.168.x.x:/home/pi

上传过程中会显示传输进度,完成后即可在开发板上运行该文件。

运行编译文件

在智能主控板的终端中为编译文件设置执行权限并运行,预期输出“Hello World!”。

sudo chmod 777 <文件名>
./<文件名>