1. 芯片SDK创建任务。 配置任务参数,系统启动后,启动任务,示例如下:
    void mainTask(void) {
       //厂商自定义功能
        OHOS_SystemInit();        //启动子系统初始化
        printf("MainTask running...\n");
    }

    void main(VOID) {
       //硬件初始化,printf输出重定向到debug串口等
        if (LOS_KernelInit() == 0) {            //ohos内核初始化
            task_init_param.usTaskPrio = 10;    //任务优先级
            task_init_param.pcName = "mainTask"; //任务进程名
            task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)mainTask; //任务入口函数
            task_init_param.uwStackSize = 8192;          //任务栈大小
            LOS_TaskCreate(&tid, &task_init_param);      //创建任务
            LOS_Start();                                 //启动任务
        }
        else {
            printf("[BUG] LOS_KernelInit fail\n");
        }
        printf("[BUG] reach to unexpected code\n");
        while (1);
    }
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
class="hide-preCode-box">

移植文件子系统

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

移植指导

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

表1 文件打开或关闭

class="table-box">
接口名描述
HalFileOpen文件打开或创建新文件。
HalFileClose文件关闭。

表2 文件操作

class="table-box">
接口名描述
HalFileRead读文件。
HalFileWrite写文件。
HalFileDelete删除文件。
HalFileStat获取文件属性。
HalFileSeek文件查找。

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

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

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

//utils/native/lite/hals
└── file
└── hal_file.h                   #hal层接口头文件
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

其中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",
  ]
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}"> class="hide-preCode-box">

从中可以看到厂商适配相关接口的存放目录应为“$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":[] }
      ]
    },
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
  1. 添加适配文件。 在“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
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

其中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",
      ]
    }
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

鸿蒙全栈开发全新学习指南

之前总有很多小伙伴向我反馈说,不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以这里为大家准备了一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。

针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。

本路线共分为四个阶段

第一阶段:鸿蒙初中级开发必备技能

在这里插入图片描述

第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH

第三阶段:应用开发中高级就业技术

第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH

《鸿蒙 (Harmony OS)开发学习手册》(共计892页)

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

开发基础知识:gitee.com/MNxiaona/733GH

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH

鸿蒙入门教学视频:

美团APP实战开发教学:gitee.com/MNxiaona/733GH

写在最后

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/maniuT/article/details/140823743","extend1":"pc","ab":"new"}">>
注:本文转载自blog.csdn.net的沧海一笑-dj的文章"https://blog.csdn.net/dengjin20104042056/article/details/95604776"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!