应用开发¶
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
编写代码¶
在 ~/Desktop 目录下创建 helloworld.c 文件。
复制以下代码段,粘贴在 helloworld.c 文件内:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
编译与运行¶
执行以下命令,编译代码:
cd Desktop/
gcc helloworld.c -o helloworld
执行以下命令,运行 helloworld 程序:
./helloworld
程序运行结果如下:
./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 <文件名>
./<文件名>