1.v51.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main | 百篇博客分析OpenHarmony源码
2.疯壳出品鸿蒙os-驱动程序接收应用程序的源码消息
3.鸿蒙系统是封闭还是开源
4.鸿蒙开发环境搭建、源码下载和编译
5.成为自己:鸿蒙 Harmony 工具篇
6.初识鸿蒙跨平台开发框架ArkUI-X
v51.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main | 百篇博客分析OpenHarmony源码
鸿蒙内核源码分析(ELF格式篇) | 应用程序入口并非main
深入解析ELF格式与鸿蒙源码的源码关系,探寻应用程序入口的源码奥秘。本文将带你从一段简单的源码C代码开始,跟踪其编译成ELF格式后的源码神秘结构,揭秘ELF的源码源码战法组成与内部运作机制。
以E:\harmony\docker\case_code_目录下的源码main.c文件为例,通过编译生成ELF文件,源码运行后使用readelf -h命令查看应用程序头部信息。源码了解ELF文件的源码全貌,从ELF头信息、源码段信息、源码段区映射关系、源码区表等多方面深入探讨。源码
ELF格式文件由四大部分组成:头信息、源码段信息、段区映射关系和区表。头信息包含关键元数据,如文件类型、字节顺序、文件大小等;段信息描述了可执行代码和数据段的属性和位置;段区映射关系展示了段与区的关联;区表则存储了每个区的详细信息。
通过readelf -l命令,可以观察到段信息及其在程序中的作用,如初始化数组、动态链接、栈区等。在运行时,不同段以特定方式映射到内存中,分析家源码实现代码的加载和执行。
在深入分析后,发现应用程序的真正入口并非通常理解的main函数,而是一个名为_start的特殊函数。这揭示了鸿蒙内核在启动时的执行流程,以及如何在ELF格式中组织和加载代码。
本文以ELF格式为切入点,带你全面理解鸿蒙内核源码的组织结构与运行机制。通过百万汉字注解,带你精读内核源码,深入挖掘其地基。在Gitee仓(gitee.com/weharmony/ker...)同步注解,共同探索鸿蒙研究站(weharmonyos)的奥秘。
疯壳出品鸿蒙os-驱动程序接收应用程序的消息
鸿蒙操作系统(HarmonyOS)的驱动程序设计允许应用程序向驱动发送消息。此过程通过`HdfIoServiceBind`接口实现,其在`hdf_io_service_if.h`文件中声明如下:
`struct HdfIoService *HdfIoServiceBind(const char *serviceName, mode_t permission)`
该接口接受服务名称和权限作为参数。成功获取服务后,调用服务的`Dispatch`方法向驱动发送消息。参数`serviceName`指向服务名称的指针,`permission`表示创建设备节点的权限,通常用户空间调用时使用默认值0。
在`myapp`应用基础上添加接口以获取`sample_service`服务并调用`Dispatch`方法,代码如下:
完整程序如下:(略)
驱动实现中,需要在`IDeviceIoService`类中实现`Dispatch`方法,其函数指针在`HdfDeviceIoClient`结构体中定义。驱动代码包括:
1. 在`sample_driver.c`文件中定义兼容`Dispatch`的方法,示例如下:
完整驱动代码如下:(略)
编译源码后,清新博客首页源码烧录到板子中执行`app`,结果显示消息发送和接收符合预期:
打印信息验证了程序逻辑的正确性。
`app`代码示例:
包括但不限于头文件和函数定义,如下:
完整代码如下:(略)
`驱动`代码示例:
包括`hdf_device_desc.h`头文件引用,日志接口头文件引用,服务结构定义,`Dispatch`方法实现,以及驱动接口函数,如下:
完整代码如下:(略)
鸿蒙系统是封闭还是开源
鸿蒙系统不是封闭系统,而是一个开源的操作系统。
它的源代码可以被公开获取到,并且任何人都可以访问和使用它。华为也已经把HarmonyOS的基础能力全部捐献给了开放原子开源基金会,并且鼓励其他公司和组织参与到鸿蒙系统的开发和贡献中来。因此,鸿蒙系统是一个开源的系统,而不是封闭的系统。
鸿蒙开发环境搭建、源码下载和编译
搭建鸿蒙开发环境,涉及到Linux与Windows主机的协同工作。Linux主机主要负责源码下载与编译,而Windows主机则用于程序烧写以及源码编辑。推荐在C盘预留至少G空间以确保顺畅运行。
相较于虚拟机,Win的Ubuntu子系统(WSL)在内存与CPU资源消耗上更为高效。同时,由于可以直接访问WSL环境,基于源码的fuzz相较于多系统操作,文件交互更为便捷。安装Ubuntu . LTS可通过Win应用商店完成。
初次启动Ubuntu . LTS会涉及软件安装与配置,耐心等待几分钟直至完成。安装目录为%USERPROFILE%\AppData\Local\Packages,Linux系统的根目录为rootfs,而你的家目录为/home/yourname。WSL下系统硬盘自动挂载,如C/D盘对应/mnt/c,/mnt/d。
安装VcXsrv以实现X远程显示,下载后进行默认安装。启动XLaunch,选择“one large window”,Display number设置为0,其余保持默认即可。
安装桌面环境所需的必要软件,遇到问题时先更新apt-get,问题通常迎刃而解。配置CCSM(桌面控制中心)后,输入相应命令在XLaunch上显示桌面。
在Windows与Linux之间互看文件,可以通过在Ubuntu下查看“/mnt”目录实现。若需查看Ubuntu Python版本,可在/usr/bin下执行ls -l python*命令。系统中应包含python3.7及以上版本,页游天下源码确保满足需求。
修改python命令指向的版本,使用mv命令将python3改名为python3.bak,然后使用ln -s命令将python3.8链接至python。配置repo工具用于下载与管理源码。
下载Harmony OS源码,如已完成,安装文件系统打包工具(dosfstools、mtools、zip)。执行编译指令前,确保scons命令路径在环境变量中。
使用虚拟env环境编译源码,执行编译目标平台的命令:/bin/python build.py wifiiot。如果在过程中遇到编译器问题,检查文件路径是否在环境变量中,添加至环境变量即可解决。
整个过程耗时约一天,系统空间需求接近G,建议在安装前做好系统空间管理,确保过程顺畅。通过以上步骤,成功搭建鸿蒙开发环境,为后续的源码下载与编译打下坚实基础。
成为自己:鸿蒙 Harmony 工具篇
华为鸿蒙系统新篇章:揭开开发者工具的神秘面纱 自华为Mate和4.G芯片的崛起,鸿蒙Harmony系统引发了全球开发者热议。本文将深入解析鸿蒙开发的每一个关键环节,带你走进HarmonyOS与OpenHarmony的世界。首先,我们聚焦于开发者必备的工具,如主IDE DevEco-Studio,它基于熟悉的IntelliJ,虽然Java开发者对其有所了解,但还是有些许不同,安装时记得配置Node.js,推荐长期维护版本。 管理大师:ohpm与SDK组件 ohpm,作为包管理工具,是安装和管理SDK组件的得力助手。HarmonyOS SDK包括API和实用工具,当前最高版本为3.1.0 API 9(商业版),与开源的OpenHarmony(不支持Java应用和模拟器)有着明确区分。两者之间的API和打包签名差异,将在后续章节详细讲解。 步入鸿蒙世界:开发框架与应用入门 以ArkTS为核心,鸿蒙的开发框架囊括了TypeScript编译器、后端支持和强大的调试器。ArkTS与ArkUI的集成,为开发者提供了声明式UI和高效的状态管理能力。学习之旅从创建首个鸿蒙移动端应用(Application)开始,DevEco IDE以Ability(类似Android的Activity)为入口,让开发者轻松跨越设备界限,实现跨设备开发。 工程结构与调试篇 遇到问题时,DevEco IDE的调试功能能帮助你找到答案。对于工程结构,IDE关注的是组件间的协作,而非编码风格统一。AppScope负责存储公共信息和资源,如app.json5,提供了兼容json5扩展特性的应用配置。entry模块则是初始化入口,存放页面源码和公共资源。 遇到技术挑战时,问题一:"ERROR: Cannot find module 'node:path'",升级Node.js至v..2以上版本,错误提示会得到修正。而问题二:MSG_ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE,通过在Project Structure中生成签名,登录华为开发者账号,可以解决安装问题。至于问题三:Demo在鸿蒙4.0.0系统上的卡死问题,可能源于API兼容性,目前无明确解决方案,需关注后续更新。 打包阶段,Hap是Ability部署的关键,FA和PA是两种不同的部署方式。APP产物存放在ProjectRootDir/build/outputs/default,Hap产物则以.hap结尾,独立安装。同时,SDK管理、包管理以及调试工具如hdc和bytrace等,为开发者提供了全方位支持。 最后,务必注意使用sdkmgr时,确保你的Java版本在.0以上,否则可能会遇到无法使用的问题。总的来说,尽管Android与鸿蒙IDE基于IntelliJ有所关联,但语言、工具和编程模式的细微差别不容忽视。初识鸿蒙跨平台开发框架ArkUI-X
HarmonyOS,面向万物互联时代,提供全场景业务能力。 ArkTS,华为自研语言,匹配 ArkUI 框架,简化跨端应用开发。 ArkUI-X,扩展 ArkUI 支持,实现多 OS 平台开发,包括 OpenHarmony、HarmonyOS、Android、iOS。环境搭建
安装 DevEco Studio,支持 ArkUI-X,版本需4.0以上,下载链接提供。 Android Studio用于打包,下载地址附上。 构建 iOS 环境,Xcode等安装略。OpenHarmony SDK 安装
DevEco Studio启动提示安装 Node,HarmonyOS 应用支持 JS 开发,按提示安装即可。 设置 OpenHarmony SDK,类似于 Android 的 SDK,配置路径。ArkUI-X SDK 安装
安装 ArkUI-X SDK,在设置中选择并指定路径。环境变量配置
设置环境变量,添加 Android SDK 路径,Windows 和 macOS 配置方法提供。快速上手
创建普通 Harmony OS 工程,按照提示配置。 对比 HarmonyOS 和 OpenHarmony,选择导入 OpenHarmony 及 ArkUI-X 的 HelloWorld 示例。 下载源码,导入 OpenHarmony 工程,预览界面。代码移入与编译
将 Harmony OS 工程的 UI 代码移入 OpenHarmony 工程,替换对应文件。 预览并运行 OpenHarmony 工程,显示已创建界面。编译与运行
打开 OpenHarmony 工程,编译为 OpenHarmony、Android、iOS 项目。 使用 Android Studio 或 Xcode 运行或打包应用。应用工程结构
跨平台应用工程包含 ArkUI 开发者模板,支持构建不同平台应用。 理解 OpenHarmony 应用工程编译构建,涉及 ArkTS 和资源管理。 讨论 Android 和 iOS 应用工程结构,关注原生应用工程。总结
ArkTS + ArkUI-X 跨平台开发框架提供国产自研技术,简化多平台应用开发。 链接提供相关代码和参考资料。