2. 开发环境搭建:从零开始,让代码跑起来

说实话,嵌入式开发最让人头疼的往往不是写代码,而是搭环境。我见过太多新手卡在第一步,工具链装不上、驱动不识别、烧录没反应……然后就开始怀疑人生。别急,这一章我带你一步步搞定。

咱们的目标很明确:把 DevEco Device Tool 装好,让 Hi3861 和 Hi3516 都能正常编译烧录,最后用串口看到 "Hello World" 打印出来。嗯,看到那行字,你才算真正入了 OpenHarmony 的门。

2.1 开发环境全景图

先看看整个环境长什么样。我习惯把开发环境分成三层:

OpenHarmony 开发环境全景图 开发主机(Ubuntu 20.04 / Windows) DevEco Device Tool + SCons + GCC / LLVM 交叉编译工具链 代码编辑 | 编译构建 | 烧录配置 | 调试监控 Hi3861(Wi-Fi SoC) ARM Cortex-M7 / 2MB Flash / 352KB RAM Hi3516(多媒体 SoC) ARM Cortex-A7 / 双核 / 支持摄像头 串口工具(Putty / MobaXterm) + 网络调试助手 + USB 转串口驱动

说白了,就是主机上装工具 → 工具链编译代码 → 烧录到板子 → 串口看结果。每一层都别出错,否则后面全白搭。

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" 图标,点进去就能看到项目管理界面。

小技巧: 安装前确保 Python 3.8+ 已配置好环境变量。我在项目中遇到过因为 Python 版本不对导致编译脚本报错的情况,折腾了半小时才发现是 Python 3.6 不兼容。

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 里配置烧录参数:

  1. 打开项目,点击 "Device Tool" → "Project Settings"
  2. 在 "Board" 下拉选择 "hi3861"
  3. 设置 "Upload Port" 为你的串口号(如 COM3)
  4. 设置 "Baud Rate" 为 921600(默认 115200 太慢)
注意: 烧录时板子需要进入烧录模式。Hi3861 的进入方法是:按住 "BOOT" 键不放,按一下 "RST" 键,然后松开 "BOOT"。如果烧录进度条一直不动,八成是没进烧录模式。

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 接口
经验之谈: 调试 Wi-Fi 连接时,先用手机热点测试,排除路由器防火墙干扰。我在项目中遇到过板子连不上公司 Wi-Fi,最后发现是企业网络有 MAC 地址过滤。

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" 按钮。编译成功后,会生成烧录镜像文件。

烧录步骤:

  1. 连接开发板 USB 到电脑
  2. 确认串口号(如 COM3)
  3. 点击 "Upload" 按钮
  4. 按提示进入烧录模式
  5. 等待进度条走完
烧录成功标志: 控制台输出 "Successfully uploaded" 或 "烧录完成"。如果出现 "Failed to connect",检查串口号和驱动。

2.6.3 验证结果

烧录完成后,按一下板子的 "RST" 键复位。打开串口工具,你应该能看到:

Hello World! OpenHarmony is running.
This is my first OpenHarmony program.

看到这行字,恭喜你——环境搭建成功了!

常见问题: 如果串口没输出,先检查波特率是不是 115200。我遇到过好几次,波特率设成 9600 导致乱码。另外,有些 USB 转串口线质量不好,换一根线可能就解决了。

2.7 本章小结

这一章我们干了三件事:装工具、配环境、跑程序。说白了,就是让开发板能听懂你的代码。环境搭建是嵌入式开发的第一道坎,迈过去之后,后面的路就好走了。

记住几个关键点:

  • DevEco Device Tool 是核心,装好它等于有了"司令部"
  • Hi3861 和 Hi3516 的工具链不同,别混用
  • 串口是调试的"生命线",参数别设错
  • Hello World 跑通,证明整个链路是通的