当前位置: 首页 > news >正文

[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 步搭建

  1. Ubuntu 22.04 LTS(官方推荐)
    sudo apt install build-essential bison flex libssl-dev libncurses5-dev
    
  2. 获取源码
    repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/v4.0.1 --no-repo-verify
    repo sync -c
    
  3. 一键安装编译工具
    ./build/prebuilts_download.sh
    
  4. 配置产品
    hb set  # 选择 ipcamera_hi3516dv300 或对应方案
    
  5. 首次编译验证
    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/

五、烧录与调试

  1. 分区表(HiTool 示例)
    <Part Sel="1" PartitionName="kernel" FlashType="spi" Start="0x00100000" Length="0x00600000" SelectFile="OHOS_Image.bin"/>
    
  2. 串口 fastboot
    fastboot devices
    fastboot flash kernel OHOS_Image.bin
    fastboot reboot
    
  3. 在线调试
    • gdbserver:gdbserver :1234 ./app
    • IDE:HUAWEI DevEco Device Tool(VSCode 插件)一键 attach。

六、性能/内存优化技巧

场景方法
启动时间裁剪未使用的驱动 + 关闭内核打印 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 的设备开发、调试与量产。如果在具体芯片适配或驱动编写中遇到问题,欢迎在评论区留言一起探讨!


研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)


http://www.dtcms.com/a/294297.html

相关文章:

  • Linux第三天Linux基础命令(二)
  • 服务器对kaggle比赛的数据集下载
  • SAP-ABAP:SELECT语句验证字段和验证方法详解
  • OSPF路由协议——上
  • 28. 找出字符串中第一个匹配项的下标
  • vue3中el-table表头筛选
  • Flink 状态管理设计详解:StateBackend、State、RocksDB和Namespace
  • 谷粒商城篇章13--P340-P360--k8s/KubeSphere【高可用集群篇一】
  • 抖音集团基于Flink的亿级RPS实时计算优化实践
  • k8s pvc是否可绑定在多个pod上
  • 飞算JavaAI:从“工具革命”到“认知革命”——开发者如何借力AI重构技术竞争力
  • SpringBoot 内嵌 Tomcat 的相关配置
  • MySQL binlog解析
  • linux c语言进阶 - 线程,通信方式,安全方式(多并发)
  • Linux中常见的中英文单词对照表
  • 低代码中的统计模型是什么?有什么作用?
  • 第一二章知识点
  • 交换机的六种常见连接方式配置(基于华为eNSP)
  • 洛谷刷题7.23
  • 电子公章怎么弄到合同上?2025最新指南
  • Android NDK与JNI深度解析
  • 为什么本地ip记录成0.0.0.1
  • 观影《长安的荔枝》有感:SwiftUI 中像“荔枝转运”的关键技术及启示
  • SpringMVC快速入门之请求与响应
  • TODAY()-WEEKDAY(TODAY(),2)+1
  • BEVDet-4D 代码详细解析
  • 《汇编语言:基于X86处理器》第9章 复习题和练习
  • Linux内存映射原理
  • 基于MCP架构的LLM-Agent融合—构建AI Agent的技术体系与落地实践
  • day060-zabbix监控各种客户端