2. 开发环境搭建:从零开始,让代码跑起来
说实话,嵌入式开发最让人头疼的往往不是写代码,而是搭环境。我见过太多新手卡在第一步,工具链装不上、驱动不识别、烧录没反应……然后就开始怀疑人生。别急,这一章我带你一步步搞定。
咱们的目标很明确:把 DevEco Device Tool 装好,让 Hi3861 和 Hi3516 都能正常编译烧录,最后用串口看到 "Hello World" 打印出来。嗯,看到那行字,你才算真正入了 OpenHarmony 的门。
2.1 开发环境全景图
先看看整个环境长什么样。我习惯把开发环境分成三层:
说白了,就是主机上装工具 → 工具链编译代码 → 烧录到板子 → 串口看结果。每一层都别出错,否则后面全白搭。
2.2 安装 DevEco Device Tool
DevEco Device Tool 是华为官方出的一站式开发工具,集成了编辑、编译、烧录、调试功能。我个人习惯在 Windows 上用,但 Ubuntu 下也能跑。
2.2.1 安装方式对比
| 安装方式 | 适用场景 | 注意事项 |
|---|---|---|
| VS Code 插件安装 | Windows / Ubuntu 通用 | 需要先装 VS Code 1.62+ |
| 独立安装包 | Windows 离线环境 | 安装包约 800MB,需手动配置 Python |
| Docker 镜像 | 团队标准化环境 | 适合 CI/CD,但调试串口映射麻烦 |
我推荐用 VS Code 插件方式,最省事。打开 VS Code,在扩展市场搜 "DevEco Device Tool",点安装就行。装完后左侧会出现一个 "Device Tool" 图标,点进去就能看到项目管理界面。
2.3 配置 Hi3861 开发环境
Hi3861 是轻量级 Wi-Fi SoC,跑的是 LiteOS-M 内核。它的环境配置相对简单,但有几个坑要注意。
2.3.1 安装交叉编译工具链
Hi3861 用的是 ARM Cortex-M7 内核,需要 gcc-arm-none-eabi 工具链。下载后解压到 /opt/gcc-arm-none-eabi,然后配置环境变量:
# 编辑 ~/.bashrc,添加以下内容
export PATH=/opt/gcc-arm-none-eabi/bin:$PATH
export PATH=$HOME/.local/bin:$PATH
# 使配置生效
source ~/.bashrc
# 验证安装
arm-none-eabi-gcc --version
如果看到版本号输出,说明工具链装好了。我曾经遇到一个坑:下载的版本太新(10.3+),编译 OpenHarmony 1.x 的代码会报链接错误。后来换回 9.2 版本就正常了。所以建议用 gcc-arm-none-eabi-9-2020-q2-update 这个版本。
2.3.2 配置烧录环境
Hi3861 通过 UART 烧录,需要安装 CH340 或 CP2102 的 USB 转串口驱动。插上开发板后,在设备管理器里确认串口号(比如 COM3)。
在 DevEco Device Tool 里配置烧录参数:
- 打开项目,点击 "Device Tool" → "Project Settings"
- 在 "Board" 下拉选择 "hi3861"
- 设置 "Upload Port" 为你的串口号(如 COM3)
- 设置 "Baud Rate" 为 921600(默认 115200 太慢)
2.4 配置 Hi3516 开发环境
Hi3516 是多媒体 SoC,跑的是 Linux 内核,环境配置比 Hi3861 复杂一些。它需要安装完整的交叉编译工具链和 SDK。
2.4.1 安装交叉编译工具链
Hi3516 用的是 ARM Cortex-A7 内核,工具链是 arm-linux-gnueabihf:
# 下载并解压
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabihf.tar.xz
tar -xf gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabihf.tar.xz -C /opt/
# 配置环境变量
export PATH=/opt/gcc-arm-9.2-2019.12-x86_64-arm-linux-gnueabihf/bin:$PATH
# 验证
arm-linux-gnueabihf-gcc --version
2.4.2 配置 SDK 和内核
Hi3516 的 SDK 需要从华为官方获取。解压后,在 DevEco Device Tool 里指定 SDK 路径:
# 项目根目录下执行
hb set
# 选择 hi3516dv300 或 hi3516ev200(根据你的板子型号)
hb build -f
第一次编译会下载依赖包,耗时较长。我记得第一次编译 Hi3516 的镜像,等了将近 20 分钟。别急,喝杯咖啡回来就好了。
2.5 搭建串口与网络调试工具
调试工具是嵌入式开发的"眼睛"。没有它们,你根本不知道板子在干什么。
2.5.1 串口工具推荐
| 工具 | 平台 | 特点 |
|---|---|---|
| Putty | Windows | 轻量、稳定,适合纯串口监控 |
| MobaXterm | Windows | 自带串口+SSH+SFTP,功能全面 |
| screen | Linux | 命令行工具,适合脚本化操作 |
| minicom | Linux | 老牌工具,配置稍复杂 |
我个人偏爱 MobaXterm,一个工具搞定串口和网络。串口配置参数:波特率 115200、数据位 8、停止位 1、无校验、无流控。这是 OpenHarmony 默认的串口参数,别搞错了。
2.5.2 网络调试工具
Hi3861 支持 Wi-Fi,Hi3516 支持以太网。调试网络功能时,我常用:
- Wireshark:抓包分析网络协议
- NetAssist:轻量级 TCP/UDP 调试助手
- curl:测试 HTTP 接口
2.6 Hello World 程序烧录与验证
环境搭好了,该让板子说句话了。咱们写一个最简单的 Hello World,烧进去看看效果。
2.6.1 创建 Hello World 程序
在 OpenHarmony 源码的 applications/sample 目录下,新建一个文件夹 hello_world,里面放两个文件:
hello_world.c
#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"
void HelloWorldTask(void)
{
printf("Hello World! OpenHarmony is running.\n");
printf("This is my first OpenHarmony program.\n");
}
SYS_RUN(HelloWorldTask);
BUILD.gn
import("//build/lite/config/component/lite_component.gni")
lite_component("hello_world") {
features = [
"//applications/sample/hello_world:hello_world",
]
}
代码很简单:SYS_RUN 宏让函数在系统初始化时自动执行,printf 把字符串打印到串口。
2.6.2 编译与烧录
在 DevEco Device Tool 里,选择对应的板子型号,点击 "Build" 按钮。编译成功后,会生成烧录镜像文件。
烧录步骤:
- 连接开发板 USB 到电脑
- 确认串口号(如 COM3)
- 点击 "Upload" 按钮
- 按提示进入烧录模式
- 等待进度条走完
2.6.3 验证结果
烧录完成后,按一下板子的 "RST" 键复位。打开串口工具,你应该能看到:
Hello World! OpenHarmony is running.
This is my first OpenHarmony program.
看到这行字,恭喜你——环境搭建成功了!
2.7 本章小结
这一章我们干了三件事:装工具、配环境、跑程序。说白了,就是让开发板能听懂你的代码。环境搭建是嵌入式开发的第一道坎,迈过去之后,后面的路就好走了。
记住几个关键点:
- DevEco Device Tool 是核心,装好它等于有了"司令部"
- Hi3861 和 Hi3516 的工具链不同,别混用
- 串口是调试的"生命线",参数别设错
- Hello World 跑通,证明整个链路是通的