OpenHarmony实战:轻量级系统之文件子系统移植

utils部件可被各业务子系统及上层应用使用,依赖芯片文件系统实现,需要芯片平台提供文件打开、关闭、读写、获取大小等功能。

移植指导

OpenHarmony文件系统需要适配如下HAL层接口:

表1 文件打开或关闭

接口名 描述
HalFileOpen 文件打开或创建新文件。
HalFileClose 文件关闭。

表2 文件操作

接口名 描述
HalFileRead 读文件。
HalFileWrite 写文件。
HalFileDelete 删除文件。
HalFileStat 获取文件属性。
HalFileSeek 文件查找。

厂商适配相关接口的实现,请参考OpenHarmony中file的接口和hal层适配接口的定义:

复制代码
//utils/native/lite/file
├── BUILD.gn
└── src
     └── file_impl_hal
            └── file.c             #file接口

//utils/native/lite/hals
└── file
└── hal_file.h                   #hal层接口头文件

其中BUILD.gn的内容如下:

复制代码
import("//build/lite/config/component/lite_component.gni")
 
static_library("native_file") {
  sources = [
    "src/file_impl_hal/file.c",
  ]
  include_dirs = [
    "//utils/native/lite/include",
    "//utils/native/lite/hals/file",
  ]
  deps = ["$ohos_vendor_adapter_dir/hals/utils/file:hal_file_static"]  #依赖厂商的适配
}
 
lite_component("file") {
  features = [
    ":native_file",
  ]
}

从中可以看到厂商适配相关接口的存放目录应为"$ohos_vendor_adapter_dir/hals/utils/file",且该目录下BUILD.gn文件中的目标应为hal_file_static。

通常厂商可以采用下面三种方式适配hal层接口:

  1. 直接flash读写,模拟文件的操作。

  2. 使用littlefs或者fatfs文件系统进行适配,littlefs或者fatfs都是轻量级文件系统适配简单,其中OpenHarmony的"//thirdparty"目录下已有fatfs可供参考。

  3. 使用厂商已有的文件系统进行适配。

移植实例

  1. "config.json"添加文件系统。 路径:"vendor/MyVendorCompany/MyProduct/config.json"

    修改如下:

    复制代码
    {
    "subsystem": "utils",
    "components": [
        { "component": "file", "features":[] }
      ]
    },
  2. 添加适配文件。 在"vendor/MyVendorCompany/MyProduct/config.json"文件中,vendor_adapter_dir配置项通常进行如下配置:

    "vendor_adapter_dir": "//device/MyDeviceCompany/MyBoard/adapter"。

    在该目录下进行UtilsFile接口适配:

    复制代码
    hals/utils/file
    ├── BUILD.gn
    └── src
        └── hal_file.c

    其中BUILD.gn内容如下:

    复制代码
    import("//build/lite/config/component/lite_component.gni")
    static_library("hal_file_static") {     #目标名
      sources = [ "src/hal_file.c" ]        #厂商适配的源文件
      include_dirs = [
        "//utils/native/lite/hals/file",
      ]
    }

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony **多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)**技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

鸿蒙(HarmonyOS NEXT)最新学习路线

  • HarmonOS基础技能
  • HarmonOS就业必备技能
  • HarmonOS多媒体技术
  • 鸿蒙NaPi组件进阶
  • HarmonOS高级技能
  • 初识HarmonOS内核
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频 ,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类...等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .......

《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ......

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ......

获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

相关推荐
不穿格子的程序员几秒前
操作系统篇3——深入理解操作系统:Linux 常用命令、系统中断与用户态/内核态详解
linux·服务器·操作系统·内核态·用户态·中断
z***94841 分钟前
使用rustDesk搭建私有远程桌面
android·前端·后端
我很哇塞耶3 分钟前
从检索到生成全优化:ACL 2025 新方法 DRAG,复杂查询 RAG 新救星
人工智能·ai·大模型·rag·检索增强生成
赵财猫._.4 分钟前
鸿蒙超级终端体验:无缝流转的底层实现与用户体验优化
wpf·harmonyos·ux
A懿轩A5 分钟前
【2025版 OpenHarmony】GitCode 口袋工具 v1.0.3:Flutter + HarmonyOS 深色模式全面启用
flutter·harmonyos·openharmony·gitcode·开源鸿蒙
YJlio5 分钟前
[鸿蒙2025领航者闯关] 基于鸿蒙 6 的「隐私感知跨设备办公助手」实战:星盾安全 + AI防窥 + 方舟引擎优化全流程复盘
人工智能·安全·harmonyos
御承扬5 分钟前
鸿蒙原生系列之监听布局和送显事件
harmonyos·鸿蒙ndk ui
御承扬6 分钟前
鸿蒙原生系列之ArkWeb技能提升——H5调用应用侧API
华为·harmonyos·arkweb·h5调试·h5调用应用方法
...对方正在输入......6 分钟前
MySQL主从复制
linux·mysql
ghie90908 分钟前
线性三角波连续调频毫米波雷达目标识别
人工智能·算法·计算机视觉