鸿蒙南向开发:移植文件子系统

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)最新学习路线

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

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

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


HarmonyOS Next 最新全套视频教程

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

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

《鸿蒙开发基础》

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

《鸿蒙开发进阶》

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

《鸿蒙进阶实战》

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

大厂面试必问面试题

鸿蒙南向开发技术

鸿蒙APP开发必备


请点击→纯血版全套鸿蒙HarmonyOS学习资料

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

                   

### 鸿蒙南向开发的定义 鸿蒙南向开发指的是在 **OpenHarmony** 系统中,面向硬件底层、操作系统内核及驱动层的开发工作。其主要目标是实现对不同硬件平台的支持,包括芯片适配、设备驱动开发、系统启动流程优化等[^4]。这种类型的开发通常涉及与硬件直接交互的部分,如外设接口(GPIO、I2C、SPI)、内核调度机制、内存管理、以及系统的可维护性设计等。 ### 技术栈 鸿蒙南向开发的技术栈涵盖了多个关键模块和子系统: - **内核子系统 (kernel)**:负责任务调度、进程管理、内存管理等核心功能[^4]。 - **启动恢复子系统 (startup)**:处理从内核启动到应用启动之间的初始化过程,确保系统稳定启动[^4]。 - **IoT外设子系统 (iothardware)**:提供对硬件外设的通用接口支持,例如 GPIO、I2C、SPI、UART 等通信协议[^4]。 - **可维可测子系统 (hiviewdfx)**:为开发者提供日志记录、性能分析、调试追踪等功能,提升系统稳定性与可维护性。 - **分布式调度子系统 (distributed_schedule)**:虽然更偏向于北向开发,但其底层实现也涉及南向部分,用于跨设备部件管理与资源调度。 - **安全子系统 (security)**:涉及底层加密算法、权限控制、设备认证等安全机制的实现。 - **公共基础库子系统 (utils)**:提供底层 C/C++ API 增强库,供其他子系统调用,提高代码复用性与效率[^4]。 - **升级子系统 (update)**:实现 OTA 升级机制,确保设备可以远程更新固件或系统版本。 此外,鸿蒙南向开发还需要掌握以下技能: - **嵌入式开发经验**:熟悉 ARM 架构、RTOS 或 Linux 内核裁剪与移植。 - **驱动开发能力**:能够编写和调试设备驱动程序,如传感器、显示屏、音频编解码器等。 - **编译工具链知识**:了解交叉编译环境配置、Makefile 编写、构建系统(如 GN/Ninja)等。 - **调试工具使用**:熟练使用 JTAG、GDB、Tracealyzer 等调试工具进行问题定位与优化。 ### 应用场景 鸿蒙南向开发主要应用于以下领域: - **IoT 设备开发**:如智能家居设备(智能灯泡、温湿度传感器)、穿戴设备(手环、手表)、工业自动化设备等,需将 OpenHarmony 移植至特定硬件平台并实现外设控制[^3]。 - **边缘计算节点**:适用于需要本地化数据处理与决策的边缘设备,如智能摄像头、工业网关等,南向开发为其提供低延迟、高可靠性的底层支持。 - **车载系统**:在汽车电子中,如车机系统、仪表盘、车载娱乐设备等,南向开发用于适配汽车专用芯片和接口(CAN、LIN 等)。 - **机器人控制系统**:涉及电机控制、传感器融合、实时响应等,南向开发为其提供稳定的硬件抽象层和驱动支持。 - **医疗设备**:如便携式心电图仪、血糖仪等,要求高精度的数据采集与实时处理,南向开发保障了这些功能的可靠性与安全性。 ```c // 示例:GPIO 控制 LED 灯的伪代码 #include "gpio.h" void led_init(void) { gpio_set_direction(LED_PIN, GPIO_DIR_OUTPUT); } void led_on(void) { gpio_set_value(LED_PIN, GPIO_LEVEL_HIGH); } void led_off(void) { gpio_set_value(LED_PIN, GPIO_LEVEL_LOW); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值