[HarmonyOS] HarmonyOS LiteOS-A 设备开发全流程指南
HarmonyOS LiteOS-A 设备开发全流程指南
面向 IoT 场景的轻量级内核开发,从环境到量产一次讲透
文章目录
- HarmonyOS LiteOS-A 设备开发全流程指南
- 一、整体认识:LiteOS-A 在 HarmonyOS 中的定位
- 二、准备阶段:硬件、源码、工具链
- 三、开发环境 5 步搭建
- 四、适配新板子的完整流程(V 模型)
- 1. 需求拆分(芯片/外设清单)
- 2. 设备树(DTS)编写
- 3. 内核配置与剪裁
- 4. 驱动开发(以 GPIO LED 为例)
- 5. 系统服务启动
- 6. 应用验证
- 五、烧录与调试
- 六、性能/内存优化技巧
- 七、量产注意事项
- 八、参考资源
一、整体认识:LiteOS-A 在 HarmonyOS 中的定位
- LiteOS-A 是 HarmonyOS 南向(设备侧)的轻量级内核,面向 ≥200 MHz 主控、带 MMU 的 SoC(如海思 hi3516/18、瑞芯微 RK3568 等)。
- 典型形态:摄像头、IPCamera、智能门锁、轻量级网关等。
- 与 LiteOS-M(无 MMU)并列,二者共用统一的 HDF(HarmonyOS Device Foundation)驱动框架和分布式软总线。
二、准备阶段:硬件、源码、工具链
项目 | 推荐做法 |
---|---|
硬件 | ① 官方开发板:Hi3516DV300、Hi3518EV300、小熊派 HM-Micro 等;② 自行设计的板子需 ≥64 MB DDR、支持串口/USB 烧录。 |
源码 | https://gitee.com/openharmony 选择 OpenHarmony 3.2/4.0 Release;LiteOS-A 位于 kernel\liteos_a 目录。 |
编译链 | arm-linux-gnueabihf- 或 clang(OpenHarmony 预编译版本);确认 hb 构建系统已安装: pip install ohos-build 。 |
烧录工具 | Windows:HiTool / RKDevTool;Linux:fastboot + uuu 。 |
串口终端 | 115200-8-N-1,可带硬件流控;推荐 SecureCRT / minicom。 |
三、开发环境 5 步搭建
- Ubuntu 22.04 LTS(官方推荐)
sudo apt install build-essential bison flex libssl-dev libncurses5-dev
- 获取源码
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/v4.0.1 --no-repo-verify repo sync -c
- 一键安装编译工具
./build/prebuilts_download.sh
- 配置产品
hb set # 选择 ipcamera_hi3516dv300 或对应方案
- 首次编译验证
hb build -f # 生成 out/ohos.bin
四、适配新板子的完整流程(V 模型)
需求拆分 → 设备树/驱动 → 内核剪裁 → 系统服务 → 应用验证 → 量产烧录
1. 需求拆分(芯片/外设清单)
- SoC:ARM Cortex-A7 @ 900 MHz
- 内存:128 MB DDR3
- 存储:SPI-Nor 16 MB + TF-Card
- 外设:Ethernet PHY、Audio Codec、SPI/I²C 传感器……
2. 设备树(DTS)编写
目录:device/soc/hisilicon/hi3516dv300/sdk_linux/board.dts
memory@80000000 {device_type = "memory";reg = <0x80000000 0x08000000>; /* 128 MB */
};
&uart0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart0_pmx>;
};
3. 内核配置与剪裁
在 kernel/liteos_a
目录下:
make menuconfig
关键选项:
LOSCFG_KERNEL_MMU=y
LOSCFG_KERNEL_VM=y
LOSCFG_DRIVERS_HDF=y
- 关闭
LOSCFG_COMPAT_POSIX
可减 40 KB。
4. 驱动开发(以 GPIO LED 为例)
HDF 驱动目录:drivers/peripheral/led
/* led_driver.c */
static int32_t LedWrite(struct LedDriver *led, uint8_t state)
{GpioSetOutputVal(led->gpioNum, state);return HDF_SUCCESS;
}struct LedOps g_ledOps = {.write = LedWrite,
};
配置 hcs
描述文件,注册到 HDF 总线。
5. 系统服务启动
在 //base/startup/init_liteos_a/etc/init.cfg
中追加:
{"name" : "led_service","path" : ["/bin/led_demo"],"uid" : "system","gid" : "system"
}
6. 应用验证
/* led_demo.c */
int main()
{int fd = open("/dev/led0", O_RDWR);while (1) {ioctl(fd, LED_ON);sleep(1);ioctl(fd, LED_OFF);sleep(1);}
}
交叉编译后推送到开发板:
hdc_std shell mount -o remount,rw /
hdc_std file send led_demo /bin/
五、烧录与调试
- 分区表(HiTool 示例)
<Part Sel="1" PartitionName="kernel" FlashType="spi" Start="0x00100000" Length="0x00600000" SelectFile="OHOS_Image.bin"/>
- 串口 fastboot
fastboot devices fastboot flash kernel OHOS_Image.bin fastboot reboot
- 在线调试
- gdbserver:
gdbserver :1234 ./app
- IDE:HUAWEI DevEco Device Tool(VSCode 插件)一键 attach。
- gdbserver:
六、性能/内存优化技巧
场景 | 方法 |
---|---|
启动时间 | 裁剪未使用的驱动 + 关闭内核打印 LOSCFG_KERNEL_PRINTF=n ;实测可从 2.6 s → 1.1 s。 |
内存占用 | 使用 mksquashfs 制作 rootfs,压缩率约 50 %。 |
CPU 占用 | 把业务拆分为高/低优先级任务,配合 LOS_TaskDelay 主动让出。 |
七、量产注意事项
- 安全启动:打开
LOSCFG_SECURITY_BOOT
并烧录 RSA 公钥哈希。 - OTA 升级:使用
update_service
组件 + AB 分区,升级包签名验证。 - 生产测试:写一条
atcommand
通道,跑内存、EMMC、Wi-Fi、Sensor 自检脚本。
八、参考资源
- 官方文档:
Huawei LiteOS 开发指南(GitHub 中文) - 环境踩坑汇总:
鸿蒙 LiteOS-A 初体验 - 腾讯云 - 社区板级支持:
小熊派 LiteOS-A 环境搭建
至此,你已经可以从零到一完成 HarmonyOS LiteOS-A 的设备开发、调试与量产。如果在具体芯片适配或驱动编写中遇到问题,欢迎在评论区留言一起探讨!
研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)