- 博客(786)
- 资源 (17)
- 收藏
- 关注
原创 OpenHarmony(鸿蒙南向开发)——标准系统移植指南(二)Linux内核
本文面向希望将OpenHarmony移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带Linux内核的现有能力,快速移植OpenHarmony到三方芯片平台的方法。
2024-09-14 14:53:18 1589
原创 OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一)
本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板,使用MySoCVendor公司生产的MySOC芯片作为处理器。在名称的目录下创建一个config.json文件,该文件用于描述产品所使用的SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard等)target_cpu。
2024-09-14 14:09:17 1399
原创 OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(三)驱动移植
驱动主要包含两部分,平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等;器件驱动则主要包含通常在SOC外的器件,如 LCD、TP、WLAN等图1OpenHarmony 驱动分类HDF驱动被设计为可以跨OS使用的驱动程序,HDF驱动框架会为驱动达成这个目标提供有力的支撑。开发HDF驱动中,请尽可能只使用HDF驱动框架提供的接口,否则会导致驱动丧失跨OS使用的特性。在开始驱动开发前,建议先了解HDF驱动框架。
2024-09-14 13:42:23 1138
原创 OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二)
LiteOS-A当前支持ARMv7-a指令集架构,如果三方芯片为ARMv7-a架构,可以进行内核基础适配;否则还需要先根据芯片的架构来新增内核对该芯片架构的支持,这个工作较为复杂,不在这篇文章范围内。Linux内核移植主要涉及基于linux内核基线合入三方芯片补丁后,进行基础的内核编译构建及验证。
2024-09-13 21:54:08 1058
原创 OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(一)
编译构建流程、编译脚本编写、目录规则、独立编译单个组件、独立编译芯片解决方案等介绍请见 编译构建子系统介绍。
2024-09-13 21:05:13 1454
原创 OpenHarmony(鸿蒙南向开发)——轻量系统芯片内核移植
编译框架搭建完成后,需要将芯片厂商的SDK加入OpenHarmony编译框架,从而可以编译出带SDK的烧录文件(此时编译出的是不带系统的裸机工程),以便OpenHarmony可以调用SDK中的接口。参考文件路径:“device/hisilicon/hispark_pegasus/sdk_liteos/platform/os/Huawei_LiteOS/targets/hi3861v100/include/target_config.h”路径:“kernel/liteos_m/kal/BUILD.gn”
2024-09-13 20:34:42 1410
原创 OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植指南(三)
此库中提供了“mbedtls_platform_entropy_poll”、“mbedtls_hardclock_poll”、“mbedtls_havege_poll”、“mbedtls_hardware_poll”等几种产生随机数的方式。在“vendor/MyVendorCompany/MyProduct/config.json”文件中,通常将配置“ohos_board_adapter_dir”配置为 “//vendor/MyVendorCompany/MyProduct/adapter”。
2024-09-13 17:57:39 942
原创 如何编译OpenHarmony SDK API
Public-SDK不支持开发者使用所有的系统API,包括animator组件、xcomponent组件、@ohos.application.abilityManager.d.ts、@ohos.application.formInfo.d.ts、@ohos.bluetooth.d.ts等,如工程必须依赖于系统API,需要替换为Full SDK。OpenHarmony SDK是开源的,可以获得代码,因此可以在SDK里根据需要新增、修改一些代码,然后编译出定制的OpenHarmony SDK。
2024-09-13 15:47:54 1191
原创 如何更换OpenHarmony SDK API 10
windows文件夹下的5个压缩包,即:ets-windows-x64-4.0.9.3-Beta2.zip、js-windows-x64-4.0.9.3-Beta2.zip、native-windows-x64-4.0.9.3-Beta2.zip、previewer-windows-x64-4.0.9.3-Beta2.zip和toolchains-windows-x64-4.0.9.3-Beta2.zip。每日构建流水线会构建系统镜像、SDK等,常用的SDK使用下述流水线进行构建。
2024-09-13 15:08:29 910
原创 移植案例与原理 - build lite源码分析 之 hb命令__main__.py
在源码根目录下执行下述命令可以进行安装。。后文源码分析时,会讲述为啥要在源码目录下才能执行该hb。执行后,输出如下信息。比较关键的是,可以知道hb命令对应源文件的安装位置在。。hb命令工具的位置可以通过which hb来查看。在文件夹有3个文件,是空文件表示python模块,是执行入口文件,事实上并没有使用到。这3个文件和目录下的文件是一模一样的。total 20。
2024-09-13 14:24:03 833
原创 移植案例与原理 - HPM包描述文件bundle.json
文件bundle.json一般具有如下格式,对各个属性值的解释见注释部分。因为是json文件,注意下是对象还是数组。对象由花括号{}括起来的逗号分割的成员构成,成员是字符串键和值由逗号分割的键值对组成。数组是由方括号[]括起来的一组值构成。"name": "@ohos/", # HPM部件的英文名称, 由@符合、组织名称、部件名称组成。"description": "component description", # 部件描述。
2024-09-13 13:57:31 1038
原创 移植案例与原理 - HDF驱动框架-驱动配置(2)
节点复制可以实现在节点定义时从另一个节点先复制内容,用于定义内容相似的节点。语法如下,表示在定义"node"节点时将另一个节点"source_node"的属性复制过来。
2024-09-12 22:00:57 414
原创 移植案例与原理 - HDF驱动框架-驱动配置(1)
HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。应该,类似Linux DTS(Device Tree Source)设备树。HC-GEN(HDF Configuration Generator)是HCS配置转换工具,可以将HDF配置文件转换为软件可读取的文件格式。
2024-09-12 21:34:57 804
原创 移植案例与原理 - HDF驱动框架-OSAL
为了提升驱动代码在不同内核子系统间的可复用能力,OpenHarmony HDF(Hardware Driver Foundation)驱动框架提供了OSAL(Operating System Abstraction Layer)操作系统抽象层接口。OSAL为驱动程序提供了任务、定时器、互斥锁、信号量等基础库相关接口,使驱动相关的实现不再依赖于具体的内核或POSIX接口,是实现驱动可迁移的基石。OpenHarmony HDF驱动框架已经在LiteOS-M,LiteOS-A,Linux内核完成适配,可直接使用。
2024-09-12 21:08:49 1118
原创 移植案例与原理 - XTS子系统之应用兼容性测试套件(2)
在移植案例时,产品配置文件中适配XTS子系统时,有时候指定了定制选项如config_ohos_xts_acts_utils_lite_kv_store_data_path、enable_ohos_test_xts_acts_use_thirdparty_lwip等等。该选项config_ohos_xts_acts_utils_lite_kv_store_data_path声明在文件test\xts\acts\utils_lite\kv_store_hal\BUILD.gn,如下⑴处所示。
2024-09-12 20:22:00 986
原创 移植案例与原理 - XTS子系统之应用兼容性测试套件(1)
本文主要通过实例分析下ACTS应用兼容性测试套件移植案例,以及移植过程中特定的操作的原理。主要讲述的是轻量系统兼容性测试。轻量系统因系统能力限制,兼容性测试在系统初始化阶段进行;并且各设备烧录工具存在差异,导致自动化工具(xDevice工具)无法实现真正的自动适配,因此认证执行方式不对合作伙伴进行限制。流程如下:步骤1 编译适配:XTS子系统加入到编译组件中,随版本一起编译;步骤2 本地执行:完成兼容性测试;
2024-09-12 18:06:36 970
原创 移植案例与原理 - XTS子系统之应用兼容性测试用例开发
需要3个参数,分别为子系统名称、子系统的部件名称、测试套件名称。/***/已经存在的示例,可以参考test\xts\acts\utils_lite\kv_store_hal\src\kvstore_func_test.c,为utils子系统的kvStore部件注册KvStoreFuncTestSuite测试套件。/***/命名方式:测试套件名称+Setup,测试套件名称+TearDown。Setup与TearDown必须存在,可以为空函数。/***//***/
2024-09-12 17:46:21 866
原创 移植案例与原理 - build lite编译构建过程
配置完毕产品解决方案、芯片开发板解决方案,就可以执行 hb build进行编译。但是产品解决方案代码是如何被调用编译的?芯片开发板解决方案代码是如何被调用编译的?内核代码如何被调用编译的?解决了这些疑惑,会对build lite编译构建过程有个更深入的理解。
2024-09-12 17:27:16 432
原创 移植案例与原理 - build lite配置目录全梳理
命令行工具hb(HarmonyOS|OpenHarmony Build 编译构建系统的缩写)都很熟悉了。这是一个基于gn和ninja的构建系统,以支持OpenHarmony组件化开发为目标,提供以下基本功能:支持按组件拼装产品并编译。独立构建芯片解决方案厂商源码。独立构建单个组件本文主要梳理build lite 轻量级编译构建系统涉及的配置目录。有些知识点,只能从代码中获取,官方文档里没有提供很详细的说明,希望此文可以对此进行补充。我们先看些相关的文件的代码片段。
2024-09-12 17:11:17 485
原创 移植案例与原理 - utils子系统之KV存储部件 (3)
从文件里读取的键值对数量会放入⑵处的字符串里,字符串的长度为4,所以键值对的数量能是K级。函数GetValueByFile用于从文件中读取键值,⑴处获取键名对应的键值文件的大小,如果文件大于等于参数中指定的长度len,返回EC_FAILURE。⑶处如果键值对数量已经大于等于允许的最大值,并且要是新增的键值对,则然后EC_FAILURE。⑷处保存键值对到文件,如果支持缓存,则加入缓存。函数UtilsGetValue用于从文件中读取键值,传入键名key,读出的值保存在参数value,len设置读取的值的长度。
2024-09-12 16:45:45 506
原创 移植案例与原理 - utils子系统之KV存储部件 (2)
⑶处判断是否新的键值对,如果键值对数目超过缓存允许的最大数,并且需要设置的是新的缓存则返回EC_FAILURE。函数UtilsSetValue用于读取键名对应的值,第一个参数为输入参数键名,第二个参数为输出参数键名对应的值,第三个参数为值的字符串长度。读取时,会把读取到的键值对,放到缓存的键值对链表的头部,但不删除之前的键值对数据。在文件utils\native\lite\include\kv_store.h中定义了KV存储部件对外接口,如下,支持从键值对缓存里读取键值,设置键值,删除键值,清除缓存等等。
2024-09-12 16:20:47 431
原创 移植案例与原理 - utils子系统之KV存储部件 (1)
Utils子系统是OpenHarmony的公共基础库,存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。本文介绍下移植开发板时如何适配utils子系统之KV存储部件,并介绍下相关的运行机制原理。KV存储部件定义在utils\native\lite\。
2024-09-11 22:02:56 1043
原创 移植案例与原理 - utils子系统之file文件操作部件
Utils子系统是OpenHarmony的公共基础库,存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。本文介绍下移植开发板时如何适配utils子系统之file文件操作部件,并介绍下相关的运行机制原理。系统属性部件syspara_lite包含系统参数特性syspara_lite和token。file文件操作部件定义在utils\native\lite\。
2024-09-11 21:21:03 724
原创 移植案例与原理 - startup子系统之bootstrap_lite部件 (2)
在文件base\startup\bootstrap_lite\services\source\bootstrap_service.h中定义了2个宏函数INIT_APP_CALL和INIT_TEST_CALL,分别用来调用代码段&__zinitcall_app_XXX_start、&__zinitcall_app_XXX_end和&__zinitcall_test_start、&__zinitcall_test_end之间的初始化启动函数。8.学习ArkTS语言。1.Ability开发。
2024-09-11 20:38:10 1016
原创 移植案例与原理 - startup子系统之bootstrap_lite服务启动引导部件(1)
从上文已知,bootstrap_lite服务启动引导部件的初始化宏会调用LAYER_INITCALL_DEF和LAYER_INITCALL宏。这些宏的定义在文件utils\native\lite\include\ohos_init.h,代码片段如下。⑴处声明函数类型,无参无返回值。⑵处处理定义分层初始化共享库宏LAYER_INIT_SHARED_LIB的情况,如果没有定义该宏,则执行⑹。
2024-09-11 17:38:04 996
原创 移植案例与原理 - startup子系统之syspara_lite系统属性部件 (2)
系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名等,同时提供设置/读取系统属性的接口。在《移植案例与原理 - startup子系统之syspara_lite系统属性部件》中,我们介绍了移植开发板时如何适配系统属性部件syspara_lite,并介绍了相关的运行机制原理。
2024-09-11 17:00:25 936
原创 移植案例与原理 - startup子系统之syspara_lite系统属性部件
系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名等,同时提供设置/读取系统属性的接口。本文介绍下移植开发板时如何适配系统属性部件syspara_lite,并介绍下相关的运行机制原理。系统属性部件syspara_lite包含系统参数特性syspara_lite和token。
2024-09-11 16:40:42 863
原创 当OpenHarmony遇上OpenEuler
虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件,如果需要安装最新版本,建议使用后者。当前WSL只支持OpenEuler 20.03。
2024-09-11 16:02:03 1342
原创 使用Multipass编译OpenHarmony工程
Multipass 是一个轻量级虚拟机管理器,支持 Linux、Windows 与 macOS,这是为希望使用单个命令提供全新 Ubuntu 环境的开发人员而设计的。使用 Linux 上的 KVM、Windows 上的 Hyper-V 和 macOS 上的 HyperKit 来以最小的开销运行 VM,同时它还可以在 Windows 和 macOS 上使用VirtualBox。本文快速记录下如何Multipass来编译OpenHarmony工程。
2024-09-11 15:14:32 759
原创 基于hispark_taurus开发板示例学习OpenHarmony编译构建系统(2)
hispark_taurus对应的产品解决方案目录在vendor\hisilicon\hispark_taurus,主要包含init进程启动配置init_configs(可选,仅linux内核需要)、产品解决方案OS适配hals、产品编译脚本BUILD.gn、产品配置文件config.json、文件系统打包配置fs.yml、hb构建配置文件ohos.build、内核特性裁剪配置文件kernel_configs。如果某个产品被选择为要编译的产品,那么对应产品目录下的BUILD.gn会默认编译。
2024-09-11 14:23:11 713
原创 基于hispark_taurus开发板示例学习OpenHarmony编译(1)
build_lite代码仓只提供了工具的简单readme介绍,更加丰富的编译框架知识、构建指导需要访问docs文档仓获取,地址为 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build-mini-lite.md。hispark_taurus对应的开发板目录在device/board/hisilicon/hispark_taurus,主要包含对linux内核和liteo_a内核的适配。
2024-09-11 13:44:57 1171
原创 鸿蒙轻内核Kconfig使用笔记
Kconfig语言定义了一套完整的规则来表述配置项及配置项间的关系,详细内容可以参考Linux官方文档 Kconfig Language ,此处不赘述。鸿蒙轻内核使用的是Python的开源三方库kconfiglib(menuconfig只是其提供的命令之一,相关命令还有genconfig, savedefconfig等等),
2024-09-10 21:41:47 939
原创 鸿蒙轻内核调测-内存调测-内存泄漏检测
在需要检测的代码段前后,调用LOS_MemUsedNodeShow接口,每次都会打印指定内存池已使用的全部节点信息,对比前后两次的节点信息,新增的节点信息就是疑似泄漏的内存节点。第1列为节点地址,可以根据这个地址,使用GDB等手段查看节点完整信息;第3~5列为函数调用关系LR地址,可以根据这个值,结合汇编文件,查看该节点具体申请的位置。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。: 开启内存检测会影响内存申请的性能,且每个内存节点都会记录LR地址,内存开销也加大。
2024-09-10 21:14:36 988
原创 鸿蒙轻内核调测-内存调测-内存信息统计
内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。LOSCFG_MEM_WATERLINE:开关宏,默认打开;内存信息包括内存池大小、内存使用量、剩余内存大小、最大空闲内存、内存水线、内存节点数统计、碎片率等。2.构建第一个ArkTS应用。6.三方应用调用管控机制。8.学习ArkTS语言。
2024-09-10 20:34:08 959
原创 鸿蒙轻内核A核源码分析系列七 进程管理 (3)
先看看一些内部函数,不管是初始化用户态进程还是内核态进程,都会使用这些函数,包含进程控制块初始化函数OsInitPCB、进程控制块初始化恢复函数OsDeInitPCB
2024-09-10 17:49:40 1114
原创 鸿蒙轻内核A核源码分析系列七 进程管理 (2)
本文先熟悉下进程管理的文件kernel\base\core\los_process.c中的内部接口,读读代码,做些记录。
2024-09-10 17:20:44 1250
原创 鸿蒙轻内核A核源码分析系列七 进程管理 (1)
进程是系统资源管理的最小单元。OpenHarmony LiteOS-A内核提供的进程模块主要用于实现用户态进程的隔离,内核态被视为一个进程空间,不存在其它进程(KIdle除外,KIdle进程是系统提供的空闲进程,和KProcess共享一个进程空间)。
2024-09-10 16:47:57 1033
原创 鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)
在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。
2024-09-10 15:57:38 1085
原创 鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)
在前面系列分析虚实映射时,涉及到了一些MMU协处理器与相关的汇编代码没有深入讲解。本文来专门分析那些协处理器与汇编代码。本文中所涉及的源码,以内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板,则默认以为例。MMU相关的操作函数主要在文件中定义。本系列首先了解下ARM CP15协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下MMU相关汇编代码。
2024-09-10 15:26:38 1143
原创 鸿蒙轻内核A核源码分析系列五 虚实映射(7)虚实映射Flag属性
在学习函数LOS_ArchMmuMap()代码时,我们已经了解了虚拟内存如何映射到物理内存,在映射的时候,可以通过UINT 32 flags参数定一些标签属性信息。本节,我们具体了解下内存标签属性信息。先了解下MMU标签属性,然后看看映射内存区间时的映射虚实信息,最后了解下属性信息转换函数。
2024-09-10 14:34:03 1447
组件化通信之LiveData.rar
2020-12-18
WangyiPush.zip
2019-06-22
RabbitMQ消息中间件技术精讲
2019-02-24
eclipse svn插件
2016-08-12
可以拨动的时间选择器
2015-10-21
仿QQ自定义ListView 下拉刷新
2015-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人