第2章 开发环境搭建:源码获取、编译环境配置(Ubuntu)、Hi3516DV300开发板介绍
说实话,搭建开发环境这件事,很多初学者觉得枯燥。但我得说一句——这一步要是没走稳,后面调试驱动时你会哭的。我自己带过不少新人,十有八九的问题都出在环境没配好。今天咱们就把这事一次搞定。
2.1 源码获取:从OpenHarmony仓库拉代码
鸿蒙系统的源码托管在Gitee上。我个人习惯用repo工具来管理多仓库项目,因为鸿蒙本身就是由几百个仓库组成的。
第一步:安装repo工具
# 创建bin目录
mkdir ~/bin
# 下载repo脚本
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo
# 配置环境变量
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
第二步:配置Git用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
第三步:初始化并同步代码
mkdir ohos_3.1
cd ohos_3.1
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c -j8
repo sync 支持断点续传。我曾经在同步到80%时断网,重新跑一次就续上了。
这里有个坑——-j8 表示8个线程并行下载。如果你的电脑是4核CPU,建议改成 -j4,否则容易把CPU跑满,电脑卡死。
2.2 编译环境配置:Ubuntu 20.04 下的准备工作
我推荐用Ubuntu 20.04 LTS。为什么?因为我在Ubuntu 18.04上踩过坑,有些依赖包版本太老,编译时会报奇奇怪怪的错误。20.04是目前最稳的。
2.2.1 安装基础依赖包
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-setuptools
sudo apt-get install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
sudo apt-get install -y binutils build-essential git unzip
sudo apt-get install -y libc6-dev-i386 lib32z1 lib32ncurses5-dev
sudo apt-get install -y flex bison texinfo
嗯,这里要注意——lib32ncurses5-dev 这个包在Ubuntu 22.04上已经改名了。如果你用22.04,得装 lib32ncurses-dev。我上次帮一个学员排查问题,发现他卡在这一步整整两天。
2.2.2 安装编译工具链
鸿蒙针对Hi3516DV300使用的是ARM交叉编译工具链。说白了,就是你在电脑上编译,生成的是给ARM芯片跑的二进制文件。
# 下载工具链
wget https://repo.huaweicloud.com/harmonyos/compiler/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
# 解压到指定目录
sudo tar -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /opt/
# 配置环境变量
echo 'export PATH=/opt/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
2.2.3 安装hb编译工具
hb是鸿蒙的编译构建工具,类似于Android的make。安装方式如下:
cd ohos_3.1
python3 -m pip install --user build/lite
# 设置hb命令
echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 验证安装
hb --version
如果提示 hb: command not found,别急。检查一下 ~/.local/bin 是否在PATH里。我遇到过一种情况——pip安装成功了,但路径没加对。
2.3 Hi3516DV300开发板介绍
这块板子是海思的,专门为物联网设备设计的。你想想看,鸿蒙系统为什么选它作为官方开发板?因为它的硬件配置很典型——ARM Cortex-A7内核,支持硬件编解码,接口丰富。
核心参数一览:
| 项目 | 参数 |
|---|---|
| CPU | ARM Cortex-A7 @ 1.0GHz 双核 |
| 内存 | DDR3 256MB |
| 存储 | SPI Flash 32MB + eMMC 4GB |
| 视频编解码 | H.264/H.265 硬件编解码 |
| 网络 | 百兆以太网 + Wi-Fi(外接) |
| 接口 | UART、I2C、SPI、GPIO、USB 2.0 |
板载接口布局:
- 电源接口: 5V DC供电,注意正负极别接反。我见过有人把板子烧了,就是因为电源插反了。
- 调试串口: 3.3V电平的UART0,波特率115200。这是你调试内核的唯一窗口。
- 网口: RJ45百兆以太网,用于网络启动和文件传输。
- SD卡槽: 支持TF卡启动系统,方便快速烧录。
我的经验之谈: 第一次拿到开发板,先别急着上电。用万用表量一下电源对地电阻,确保没有短路。我有个同事,拿到板子直接插电,结果发现板子上的电容焊反了,冒烟了才反应过来。
2.4 编译与烧录:让系统跑起来
环境配好了,代码拉下来了,板子也认识了。接下来就是见证奇迹的时刻——编译并烧录。
2.4.1 执行编译
cd ohos_3.1
hb set
# 选择 hi3516dv300 开发板
hb build -f
第一次编译大概需要30-40分钟,取决于你的电脑性能。你可以去泡杯咖啡。如果编译过程中报错,多半是依赖包没装全。检查一下 build.log 文件,错误信息都在里面。
2.4.2 烧录到开发板
编译完成后,生成的镜像文件在 out/hi3516dv300/packages/phone/images/ 目录下。烧录方式有两种:
- 通过网口烧录: 使用HiTool工具,通过以太网把镜像传到板子的内存中。
- 通过SD卡烧录: 把镜像拷贝到TF卡,插到板子上启动。
我个人更推荐SD卡方式,简单粗暴。具体步骤:
# 格式化SD卡为FAT32格式
sudo mkfs.vfat /dev/sdb1
# 拷贝镜像
cp out/hi3516dv300/packages/phone/images/*.img /media/sd_card/
# 插入SD卡,上电启动
2.5 验证环境:Hello World 级别的内核启动
板子启动后,通过串口连接电脑。我用的是MobaXterm,波特率115200,数据位8,停止位1,无校验。连接成功后,你会看到内核启动日志:
U-Boot 2020.01 (Jan 15 2023 - 10:30:00)
DRAM: 256 MiB
MMC: mmc@10048000: 0
Loading: 100% OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.10.93 (user@ubuntu) (gcc version 10.3.1 20210621)
[ 1.234567] Freeing unused kernel memory: 1024K
[ 1.567890] Run /init as init process
[ 2.000000] OpenHarmony 3.1 LTS (2023-01-15)
[ 2.500000] Welcome to OpenHarmony!
看到 Welcome to OpenHarmony! 这行字,说明你的环境搭建成功了。嗯,这一刻还是挺有成就感的。
好了,环境搭建就讲到这里。下一章咱们开始真正接触内核代码,从启动流程入手,一步步解剖鸿蒙内核的骨架。
本章小结:
- 源码获取用repo工具,注意网络稳定性
- Ubuntu 20.04 + gcc-arm-none-eabi-10.3 是最稳的组合
- Hi3516DV300是ARM Cortex-A7双核,256MB内存,接口齐全
- 编译用hb工具,烧录用SD卡方式最方便
- 串口输出看到Welcome to OpenHarmony即表示成功