应用开发

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

  • 本地开发:直接在开发板上进行开发、编译和运行,适合快速开发和调试
  • 交叉编译:在 PC 主机上编译代码,生成可在开发板上运行的可执行文件,适合资源受限或需要更高编译效率的场景

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

HelloWorld 示例

HelloWorld 是一个简单的 C 语言程序,主要用于验证开发环境搭建是否成功。通过编写、编译和运行这个基础程序,可以测试系统的基本功能,包括编译器、运行时环境等是否正常工作,是嵌入式开发入门的基础实践。

本地开发

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

搭建开发环境

登录到 Quectel Pi H1 的 Debian 系统后,打开终端窗口,输入以下命令并回车,安装必要的开发环境:

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\r\n");
    return 0;
}

编译与运行

  1. 执行以下命令,编译代码:
$ cd Desktop/
$ gcc helloworld.c -o helloworld
  1. 执行以下命令,运行 helloworld 程序:
$ ./helloworld
  1. 程序运行结果打印:
$ ./helloworld
$ hello world

交叉编译

交叉编译是在一种平台(如 x86 PC)上,生成可以在另一种不同体系结构的平台(如 ARM 嵌入式设备)上运行的可执行程序。这种方式可以在性能更强的 PC 上进行编译,提高开发效率。

准备工作

  • 一台 32/64 位主机计算机,用于编译代码。
  • 一块 Quectel Pi H1 开发板,用于运行可执行程序。

以 64 位计算机为例,在主机上执行如下步骤:

安装 ARM64 工具链

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

验证安装

$ aarch64-linux-gnu-gcc --version

img

创建代码文件

$ touch  hello.c
$ sudo vim hello.c

按下 ESC + i,输入下面代码,然后再按 ESC + "shift + : ",在命令台输入 "wq+Enter" 保存退出。

#include <stdio.h>
int main() {
    printf("Hello World!\n");
    return 0;
}
img

编译代码文件

$ aarch64-linux-gnu-gcc -o 生成编译文件名 原文件名
例:aarch64-linux-gnu-gcc -o hello_arm64 hello.c   

检查文件架构

$ file 文件名

编译成功如下所示:

img

上传编译文件

将主机上的编译文件下载到本地,然后在 Windows 控制台通过 SCP 命令上传编译文件至 Quectel Pi H1 开发板。

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

运行编译文件

在 Quectel Pi H1 开发板终端上为编译文件设置权限并执行。

sudo chmod 777 文件名

img