在Windows+VMware Ubuntu环境下完成Hi3516DV300全流程开发指南
当开发者首次接触Hi3516DV300这类嵌入式开发板时,往往会被复杂的开发环境配置和烧录流程所困扰。特别是在Windows宿主环境下通过VMware运行Ubuntu进行开发的混合模式,既需要兼顾两种操作系统的特性,又要解决虚拟机与物理设备间的通信难题。本文将彻底解决这些痛点,带你从零搭建完整的开发环境,并完成从代码编译到烧录部署的全流程。
1. 开发环境准备与配置
在开始Hi3516DV300开发前,我们需要建立一个稳定可靠的开发环境。由于嵌入式开发通常需要在Linux环境下进行编译,而许多开发者习惯使用Windows作为主要操作系统,因此采用Windows+VMware Ubuntu的组合成为了一种非常普遍的解决方案。
1.1 VMware与Ubuntu环境配置
首先需要确保VMware虚拟机正确配置了USB控制器和网络适配器:
# 在Ubuntu中检查USB设备连接状态 lsusb # 检查网络接口配置 ifconfig -a关键配置项:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| USB控制器 | USB3.0 | 兼容性更好,传输速度更快 |
| 网络适配器 | 桥接模式 | 使虚拟机获得独立IP,便于开发板连接 |
| 共享文件夹 | 启用 | 方便Windows与Ubuntu间文件交换 |
| 内存分配 | ≥8GB | 保证编译效率 |
提示:安装VMware Tools可以显著提升虚拟机性能,并支持主机与虚拟机间的文件拖放和剪贴板共享。
1.2 开发工具链安装
在Ubuntu环境中需要安装以下必要工具:
# 更新软件源 sudo apt update && sudo apt upgrade -y # 安装基础开发工具 sudo apt install -y git make gcc g++ python3-pip device-tree-compiler # 安装Hi3516DV300专用编译工具 wget https://device.harmonyos.com/toolchains/arm-linux-gnueabihf-xxx.tar.gz tar -xvf arm-linux-gnueabihf-xxx.tar.gz -C /opt配置环境变量:
# 编辑~/.bashrc文件 echo 'export PATH=$PATH:/opt/arm-linux-gnueabihf/bin' >> ~/.bashrc source ~/.bashrc2. Windows端驱动安装与配置
虽然主要开发工作在Ubuntu中进行,但Windows端仍需正确安装相关驱动才能实现烧录功能。
2.1 必备驱动安装
需要安装的两个核心驱动:
USB转串口驱动:
- 下载CH340/CH341驱动
- 安装后设备管理器应显示"USB-SERIAL CH340"端口
HiUSBBurn烧录驱动:
- 从海思官网获取最新HiUSBBurn驱动
- 运行InstallDriver.exe完成安装
常见问题:Windows 10可能无法自动识别HiUSBBurn驱动,此时需要手动修改注册表:
- 创建usb.reg文件
- 添加以下内容并保存:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\12D1D0010100] "SkipBOSDescriptorQuery"=hex:01,00,00,00 "osvc"=hex:00,00 "IgnoreHWSerNum"=hex:01
- 双击导入注册表并重启系统
2.2 DevEco Device Tool配置
DevEco Device Tool是华为提供的集成开发环境,需要特别注意以下配置项:
Remote Development设置:
- 确保Ubuntu与Windows网络连通
- 配置正确的IP地址和端口
工程配置关键参数:
- upload_protocol: hiburn-usb
- upload_port: 选择正确的COM端口
- upload_partitions: 确认各分区地址不重叠
# 示例分区配置 partitions = { 'fastboot': {'start': '0x0', 'size': '1M'}, 'kernel': {'start': '0x100000', 'size': '9M'}, 'rootfs': {'start': '0xA00000', 'size': '100M'}, 'userfs': {'start': '0x6E00000', 'size': '100M'} }3. 混合环境下的烧录全流程
3.1 编译生成镜像文件
在Ubuntu环境中完成代码编译:
# 获取源代码 git clone https://gitee.com/openharmony/device_hisilicon.git # 配置编译环境 ./build.sh --product-name Hi3516DV300 --ccache # 开始编译 ./build.sh --product-name Hi3516DV300 --build-target all编译完成后,关键生成文件位于:
out/ohos-arm-release/packages/phone/images/目录下- 包含u-boot-hi3516dv300.bin、kernel.img等文件
3.2 烧录操作步骤
开发板准备:
- 连接USB线(烧录用)和串口线(调试用)
- 确保开发板处于fastboot模式
擦除fastboot:
- 在DevEco中点击Erase按钮
- 观察设备管理器中出现HIUSBBurn设备
开始烧录:
- 点击Upload按钮启动传输
- 当提示"Operation paused"时按Enter继续
- 15秒内完成USB重插操作
关键时序:
| 操作 | 时间窗口 | 反馈信号 |
|---|---|---|
| 擦除完成 | 立即 | 设备管理器出现HIUSBBurn |
| 传输完成 | 无限制 | "Operation paused"提示 |
| USB重插 | 15秒 | 开始烧录进度条 |
3.3 虚拟机USB设备捕获问题解决
VMware环境下常见的USB设备识别问题可通过以下步骤解决:
确保VMware USB服务运行:
- 在Windows服务中检查"VMware USB Arbitration Service"状态
修改虚拟机配置:
<usb> <present>true</present> <controller index="0" model="xhci"/> </usb>Ubuntu USB权限配置:
# 将当前用户加入plugdev组 sudo usermod -aG plugdev $USER # 创建udev规则 echo 'SUBSYSTEM=="usb", MODE="0666"' | sudo tee /etc/udev/rules.d/99-usb.rules sudo udevadm control --reload-rules
4. BootLoader配置与系统启动
成功烧录后,还需要正确配置BootLoader才能使系统正常运行。
4.1 基本启动参数设置
通过串口终端配置启动参数:
# 设置启动参数 setenv bootargs 'mem=128m console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),9M(kernel),100M(rootfs),100M(userfs),2048M(userdata)' # 设置启动命令 setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800;bootm 0x82000000' # 保存配置 saveenv4.2 常见启动问题排查
串口无输出:
- 检查串口线连接
- 确认波特率设置为115200
- 验证串口驱动安装正确
系统卡住:
- 检查bootargs中的root参数是否正确
- 确认各分区烧录地址与大小匹配
文件系统挂载失败:
- 验证rootfstype参数
- 检查文件系统镜像是否完整
# 在Ubuntu中检查镜像文件完整性 file rootfs.img # 应显示类似:Linux rev 1.0 ext4 filesystem data...4.3 性能优化建议
编译加速:
# 使用ccache加速后续编译 export USE_CCACHE=1 ccache -M 50G烧录优化:
- 使用USB3.0接口
- 关闭不必要的Windows服务释放资源
开发效率提升:
- 在Ubuntu中配置samba服务,方便Windows访问
- 使用VSCode Remote SSH直接编辑Ubuntu中的代码
在实际项目中,我发现最耗时的往往是环境配置而非开发本身。特别是在团队协作时,确保所有成员使用完全一致的环境配置可以避免大量不必要的问题。建议将开发环境配置脚本化,并纳入版本控制管理。