网站是否wordpress,网站建设主要内容,能被百度收录的建站网站,php英文网站源码移植概述
本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者#xff0c;介绍一种借助三方芯片平台自带 Linux 内核的现有能力#xff0c;快速移植 OpenHarmony 到三方芯片平台的方法。
移植到三方芯片平台的整体思路
内核态层和用户态层
为了更好的解释整个内核…移植概述
本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者介绍一种借助三方芯片平台自带 Linux 内核的现有能力快速移植 OpenHarmony 到三方芯片平台的方法。
移植到三方芯片平台的整体思路
内核态层和用户态层
为了更好的解释整个内核移植首先需要介绍一些概念 我们可以把 OpenHarmony 简单的分为 OpenHarmony OpenHarmony 内核态层 OpenHarmony 用户态层 其中 OpenHarmony 内核层就是上图的紫色部分可以看到它主要由内核本身如 Linux KernelLiteOS和一些运行在内核态的一些特性组成比如 HDF 等。 而 OpenHarmony 用户态层在上图就是紫色之外的部分。可以看到由下往上看它主要由系统服务层框架层应用层组成。在这儿我们将这三层整体称为“OpenHarmony 用户态层”。 为什么这么区分呢因为我们这篇文章主要是要讨论如何快速的把 OpenHarmony 移植到三方芯片平台上。而 OpenHarmony 的用户态层整体来说和三方芯片平台的耦合度不高移植较为方便。而内核态层中的内核本身以及 HDF 驱动框架等和三方芯片平台的耦合度较高是移植的重难点。我们先做这个区分就是为了先把聚光灯打到我们最需要关注的 OpenHarmony 内核态层上开始分析和解题。另外说明本文只包含 Linux 内核的快速移植不包含 LiteOS 的移植。
获得内核态层的两种方法
为了表述方便我们在下文部分地方用“OH”代替“OpenHarmony”。 将 OH 内核态层继续分解 OH 内核态层 OH Linux 内核 OH 内核态特性可选特性或者必选特性如必选特性 HDF今后的可选特性 HMDFS 等 而 OH Linux 内核 标准 LTS Linux 内核 三方 SoC 芯片平台代码 OH 内核态基础代码支撑 OH 用户态层运行的最基础代码 因此 OH 内核态层 标准 LTS Linux 内核 三方 SoC 芯片平台代码 OH 内核态基础代码 OH 内核态特性如 HDF 而将前两项组合标准 LTS Linux 内核 三方 SoC 芯片平台代码其实就是一个三方 Linux 内核的基础组成。从上面的推导可以看出OpenHarmony 内核态层其实能够由两种方法得到 方法一OH 内核态层 三方 Linux 内核 OH 内核态基础代码 OH 内核态特性如 HDF今后的 HMDFS 等 也就是直接借助三方 Linux 内核再加上基础 OH 内核态基础代码、以及 HDF 等 OH 内核态特性。 方法二OH 内核态层 OH Linux 内核 OH 内核态特性如 HDF今后的 HMDFS 等 也就是直接采用 OHLinux 内核然后再加入 OH 的其他内核态特性。 当前方法二中 OHLinux 内核支持的三方芯片平台还不够丰富。为了能够响应三方开发者快速移植 OpenHarmony 的要求下文会着重介绍方法一即借助三方已有的 Linux 内核来快速移植 OpenHarmony。
借助已有 Linux 内核来移植 OpenHarmony 的流程
整个移植流程可以分为三步
准备整体构建环境包括将三方芯片平台的现有内核代码拷贝到 OpenHarmony 的整体编译环境下。OpenHarmony 内核态基础代码的移植。OpenHarmony 内核态必选特性如 HDF 等的移植。 详细步骤在接下来的章节中介绍。
移植到三方芯片平台的步骤
下面以树莓派 3b (BCM2837) 为例演示将 OpenHarmony 移植到树莓派的过程。
准备整体构建环境
将三方内核纳入 OpenHarmony 编译环境。 完整编译过一遍标准 Hi3516DV300 的内核之后clone 树莓派内核源码并复制到 manifest 输出目录下 export PROJ_ROOT[OpenHarmony manifest]git clone https://gitee.com/xfan1024/oh-rpi3b-kernel.gitcp -r oh-rpi3b-kernel $PROJ_ROOT/out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b配置树莓派内核编译环境。 # 进入树莓派kernel目录cd out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b# 配置编译环境,使用工程项目自带的clangexport PATH$PROJ_ROOT/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PROJ_ROOT/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/:$PATHexport MAKE_OPTIONSARCHarm CROSS_COMPILEarm-linux-gnueabi- CCclang HOSTCCclangexport PRODUCT_PATHvendor/hisilicon/hispark_taurus_linux注释掉 clang 不识别的 flag。 PROJ_ROOT/out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b/arch/arm/Makefile 注释掉以下这一行 KBUILD_CFLAGS -fno-omit-frame-pointer -mapcs -mno-sched-prolog移植内核态基础代码
目前 OpenHarmony 内核态的基础代码主要是日志服务相关。轻量化内核日志服务代码包含
drivers/staging/hilog
drivers/staging/hievent将以上代码从 OpenHarmony 内核代码目录 kernel/linux/linux-4.19/drivers/staging 中拷贝到 out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b/drivers/staging 下。 在三方内核的 drivers/staging/Kconfig 文件内增加如下代码
source drivers/staging/hilog/Kconfig
source drivers/staging/hievent/Kconfig在三方内核的 drivers/staging/Makefile 文件内增加如下代码
obj-$(CONFIG_HILOG) hilog/
obj-$(CONFIG_HIEVENT) hievent/在内核 config 项中打开对应的 CONFIG 控制宏CONFIG_HILOG 和 CONFIG_HIEVENT。 具体日志使用说明请参见Hilog_lite 组件介绍。
移植内核态必选特性 HDF 打 HDF 补丁。 在 Linux 内核打 HDF 补丁时执行补丁 shell 脚本合入 HDF 补丁。 配置 HDF 补丁脚本的四个变量参数。获取 patch_hdf.sh 脚本。执行 patch_hdf.sh 脚本依次传入四个变量参数。 patch_hdf.sh 脚本四个参数含义为第一个入参为工程根目录路径第二入参为内核目录路径第三个入参为内核版本路径第四个参数是当前设备名。 ./patch_hdf.sh [工程根目录路径] [内核目录路径] [内核补丁路径] [设备名]以树莓派 3b 为示例介绍# 进入树莓派kernel目录PROJ_ROOT/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh \PROJ_ROOT # 指定工程根目录路径 \PROJ_ROOT/out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b # 打补丁的内核目录路径 \PROJ_ROOT/kernel/linux/patches/linux-4.19 # 内核补丁路径.\hi3516dv300 # 设备名.配置 config。 提供 HDF 基本配置如果需要其他功能通过 menuconfig 打开对应驱动开关即可。 HDF 补丁执行成功后默认 HDF 开关是关闭的打开 HDF 基本配置选项如下 CONFIG_DRIVERS_HDFyCONFIG_HDF_SUPPORT_LEVEL2CONFIG_DRIVERS_HDF_PLATFORMyCONFIG_DRIVERS_HDF_PLATFORM_MIPI_DSIyCONFIG_DRIVERS_HDF_PLATFORM_GPIOyCONFIG_DRIVERS_HDF_PLATFORM_I2CyCONFIG_DRIVERS_HDF_PLATFORM_UARTyCONFIG_DRIVERS_HDF_TESTy或者通过 menuconfig 界面打开 HDF 相关配置命令如下# 生成 .config 配置文件make ${MAKE_OPTIONS} rpi3b_oh_defconfig# 更改HDF内核配置make ${MAKE_OPTIONS} menuconfig# [*] Device Drivers# [*] HDF driver framework support ---配置如下在 Device Drivers - HDF driver framework support 目录下编译 Image
# 执行编译命令
make ${MAKE_OPTIONS} -j33 zImage编译和运行 HDF 测试用例可选
简介 HDFHardware Driver Foundation)自测试用例用于测试 HDF 框架和外设的基本功能本文主要介绍 HDF 内核态用例测试方法。 预置条件 测试前需要在 menuconfig 里检查 HDF 测试开关 CONFIG_DRIVERS_HDF_TESTy代码全量编译通过。 用例编译和测试方法 通过 hdc_std 工具把用例执行文件推送到设备中然后执行用例即可操作步骤如下 编译 hdf 测试用例。 用 hdc_std 工具推送测试文件到设备中。 进入设备 data/test 目录执行测试文件即可。 用例编译和测试详细步骤如下 编译 hdf 测试用例。 编译 hdf 测试用例命令和文件路径如下 ./build.sh --product-name hispark_taurus_standard --build-target hdf_test等待编译完成。将测试文件移动到目标移植设备上以树莓派为例。 方法一使用 hdc_std 工具。 先在树莓派里新建 data/test 目录。
mkdir -p data/test推送依赖库和测试用例到树莓派。
hdc file send XXX\out\{device_name}\hdf\hdf\libhdf_test_common.z.so /system/libhdc file send XXX\out\{device_name}\tests\unittest\hdf\config\hdf_adapter_uhdf_test_config /data/testhdc file send XXX\out\{device_name}\tests\unittest\hdf\devmgr\DevMgrTest /data/testhdc file send XXX\out\{device_name}\tests\unittest\hdf\osal\OsalTest /data/testhdc file send XXX\out\{device_name}\tests\unittest\hdf\sbuf\SbufTest /data/test方法二移动到储存卡内启动树莓派之后装载。1\. 拔掉树莓派连接电脑的串口、USB 线然后拔下数据卡。
2\. 将数据卡插入到电脑的读取口将编译好的 zImage 和测试文件夹 test/下载到电脑然后移动到数据卡的根目录下。zImage 文件会被替换请提前做好备份。
3\. 最后将数据卡插回树莓派。# 让树莓派文件系统读取储存卡根目录mount -t vfat /dev/block/mmcblk0p1 /bootcd /boot/[测试文件目录]# 允许修改系统文件mount -o remount,rw /# 安装测试用库mv libhdf_test_common.z.so /system/libmkdir /data/testmv * /data/test执行测试 进入目录执行测试文件目录 data/test。
cd /data/test2. 修改文件执行权限。chmod 777 hdf_adapter_uhdf_test_config DevMgrTest OsalTest SbufTest3. 开始测试。./hdf_adapter_uhdf_test_config./DevMgrTest./OsalTest./SbufTest如果所有测试文件输出均显示 PASSED那么 HDF 功能即安装成功。 示例DevMgrTest 用例成功结果显示
./DevMgrTest
Running main() from gmock_main.cc
[] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from DevMgrTest
[ RUN ] DevMgrTest.DriverLoaderTest_001
[ OK ] DevMgrTest.DriverLoaderTest_001 (0 ms)
[----------] 1 test from DevMgrTest (0 ms total)
[----------] Global test environment tear-down
Gtest xml output finished
[] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05
《鸿蒙开发学习手册》
如何快速入门https://qr21.cn/FV7h05
基本概念构建第一个ArkTS应用…… 开发基础知识https://qr21.cn/FV7h05
应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05
Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列…… 鸿蒙开发面试真题含参考答案https://qr18.cn/F781PH 鸿蒙开发面试大盘集篇共计319页https://qr18.cn/F781PH
1.项目开发必备面试题 2.性能优化方向 3.架构方向 4.鸿蒙开发系统底层方向 5.鸿蒙音视频开发方向 6.鸿蒙车载开发方向 7.鸿蒙南向开发方向