当前位置: 首页 > 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.lryc.cn/news/597437.html

相关文章:

  • 清华大学层次化空间记忆助力具身导航!Mem4Nav:基于层次化空间认知长短期记忆系统的城市环境视觉语言导航
  • 本地部署 Stable Diffusion:零基础搭建 AI文生图模型
  • 仓颉兴趣组优秀项目-Ginger
  • CPU,减少晶体管翻转次数的编码
  • opencv学习(视频读取)
  • 策略模式(Strategy Pattern)+ 模板方法模式(Template Method Pattern)的组合使用
  • AR维修辅助系统UI设计:虚实融合界面中的故障标注与操作引导
  • 设计模式(单例)
  • ar景区导航导览开发方案:核心技术架构与功能设计
  • HarmonyOS学习记录5
  • 第三章.Redis渐进式遍历
  • 计算机毕设分享-基于SpringBoot的房屋租赁系统(开题报告+源码+Lun文+开发文档+数据库设计文档)
  • 神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路
  • Spark实现WorldCount执行流程图
  • 05-ES6
  • Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(2)
  • UE5多人MOBA+GAS 29、创建一个等级UI
  • k8s中的configmap存储
  • K8s:离线部署Kubernetes1.26.12及采用外部Harbor
  • CSP-J系列【2023】P9751 [CSP-J 2023] 旅游巴士题解
  • 视频孪生赋能数字住建:构建智慧城市新蓝图​
  • 绿地集团携手深兰科技推动AI医诊大模型快速落地
  • 【补题】Codeforces Round 1000 (Div. 2) C. Remove Exactly Two
  • Python 爬虫(一):爬虫伪装
  • .NET-键控服务依赖注入
  • C 语言基础第9天:一、二维数组
  • 基于Python的新闻爬虫:实时追踪行业动态
  • 网络调制技术对比表
  • 【CNN】模型评估标准
  • 开源新基准!OmniGen2 文本图像对齐度提升 8.6%,视觉一致性超越现有开源模型15%