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学习资料****

总结

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

相关推荐
溜达哥5 分钟前
git commit 执行报错 sh: -/: invalid option
前端·javascript·git
vlln16 分钟前
【论文解读】Search-R1:通过 RL 让 LLM 学会使用搜索引擎
人工智能·深度学习·神经网络·搜索引擎·transformer
想躺在地上晒成地瓜干17 分钟前
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
linux·网络·音视频·树莓派·raspberrypi·树莓派教程
开挖掘机上班19 分钟前
shell批量添加新用户
linux·服务器·shell
江梦寻19 分钟前
最新Chrome与Selenium完美兼容指南(含驱动下载与配置)
前端·chrome·selenium·测试工具·edge·edge浏览器
Menior_24 分钟前
进程地址空间(比特课总结)
前端·chrome
Cyrus_柯25 分钟前
网络编程(Modbus进阶)
linux·c语言·网络·tcp/ip
brooknew26 分钟前
从中科大镜像获取linux内核5.10.168的git方法
linux·git
alfred_torres28 分钟前
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
人工智能·语言模型·自然语言处理
蹦蹦跳跳真可爱5891 小时前
Python----OpenCV(图像处理——图像的多种属性、RGB与BGR色彩空间、HSB、HSV与HSL、ROI区域)
图像处理·人工智能·opencv