<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_41028621的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_41028621</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_41028621]]></copyright><item><title><![CDATA[Linux ACPI - ACPI系统描述表架构(2)]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/147700112</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/147700112</guid><author>weixin_41028621</author><pubDate>Sun, 04 May 2025 17:58:10 +0800</pubDate><description><![CDATA[此结构包含了RSDT（Root System Description Table）或者XSDT（eXtended System Description Table）的地址，而RSDT或者XSDT指向了其他向OSPM提供数据的系统描述表。为了让OSPM能够控制计算机上的设备的资源和热插拔，ACPI提供了一种描述这些设备的信息和控制方式的结构，称为ACPI Definition Blocks，它们按照一种层级结构组织，这种组织方式成为ACPI Namespace。操作系统的 ACPI 驱动程序会执行这些方法。]]></description><category></category></item><item><title><![CDATA[Linux ACPI - 各种表(3)]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/147700596</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/147700596</guid><author>weixin_41028621</author><pubDate>Sun, 04 May 2025 16:13:50 +0800</pubDate><description><![CDATA[iasl工具获取ACPI表需要从特定目录去拿，比较复杂，这里还可以用一个简单的工具acpidump来获取。iasl是一个编译和解析ACPI的工具，在编译UEFI的时候也是必不可少的。默认系统不会安装，需要额外安装：apt install iasl。1.1.解析ACPI表。]]></description><category></category></item><item><title><![CDATA[Linux 内核模块签名]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/146243293</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/146243293</guid><author>weixin_41028621</author><pubDate>Sun, 16 Mar 2025 08:46:30 +0800</pubDate><description><![CDATA[该选项为内核强制验证功能在策略上提供了一定的灵活性，比如运行系统需要DKMS或者SystemTap支持的话，如果没有实现配套的PKI签名服务机制，最好将CONFIG_MODULE_SIG_FORCE设为n，同时为了保证安全在内核命令行参数中指定module.sig_enforce。如果内核选项CONFIG_MODULE_SIG和CONFIG_MODULE_SIG_FORCE打开的话，当加载模块时内核会检查模块的签名， 如果签名不存在或者签名内容不一致，会强制退出模块的加载。，以验证内核模块的签名。]]></description><category></category></item><item><title><![CDATA[OpenHarmony- 基于dayu800 GPIO 实践]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/145710082</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/145710082</guid><author>weixin_41028621</author><pubDate>Mon, 24 Feb 2025 15:10:06 +0800</pubDate><description><![CDATA[该目标包含了两个源文件main.c和gpio_dayu800.c，并指定了包含目录//commonlibrary/c_utils/base/include。这个函数的作用是将"hardware"组与"gpio:gpio_dayu800"依赖项相关联。以上函数实现了是用指令对Dayu800开发板的GPIO引脚的操作，根据输入参数的数量和值，函数执行不同的操作，并在终端打印出相应的信息。2.6.新增sample/hardware/gpio目录下文件gpio_dayu800.c和gpio_dayu800.h。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-8.IDL工具]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/145162856</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/145162856</guid><author>weixin_41028621</author><pubDate>Wed, 15 Jan 2025 18:06:14 +0800</pubDate><description><![CDATA[d后的dir为目标输出目录，以输出文件夹名为IIdlTestServiceTs为例，在idl可执行文件所在目录下执行./idl-gen  -gen-ts -d IIdlTestServiceTs -c IIdlTestServiceTs/IFoo.id，将会在执行环境的IIdlTestServiceTs目录中生成接口文件、Stub文件、Proxy文件。根据OpenHarmony IDL中的定义生成的信息或代码可以简化跨进程或跨设备调用接口的实现。1.openharmony IDL工具。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-6.PM 子系统（2）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144737072</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144737072</guid><author>weixin_41028621</author><pubDate>Fri, 27 Dec 2024 10:26:11 +0800</pubDate><description><![CDATA[OpenHarmony默认提供了电量等级，根据当前的电量来定义系统统一的电量等级，如满电量、高电量、低电量、极低电量等。但是电量等级对应的电量值在不同的产品上规格是不同的，产品希望根据产品的设计规格来定制此特性。采用NAPI （Native API）获取电池信息，NAPI 组件是一套对外接口基于Node.js N-API规范开发的原生模块扩展开发框架。Battery Manager 提供了电池信息查询的接口，同时开发者也可以通过公共事件监听电池状态和充放电状态的变化。1.2.电池和充电属性接口。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-6.PM 子系统（1）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144613981</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144613981</guid><author>weixin_41028621</author><pubDate>Wed, 25 Dec 2024 17:28:15 +0800</pubDate><description><![CDATA[电源管理子系统

1.简介
  电源管理子系统是 OpenHarmony 的基本能力子系统，有电池服务组件、显示控制组件和电源管理服务组件，主要提供如下功能：

重启服务：系统重启和下电。
系统电源管理服务：系统电源状态管理和休眠运行锁管理。
显示相关的能耗调节：包括根据环境光调节背光亮度，和根据接近光亮灭屏。
省电模式 ：在不损害主要功能和性能的前提下，提供一种低功耗操作模式 。
电池服务：支持充放电、电池和充电状态的监测，包括状态的更新和上报，还包括关机充电。
温控 ：在设备温度到一定程度之后对应用、]]></description><category></category></item><item><title><![CDATA[OpenHarmony-7.IPC/RPC组件]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144636749</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144636749</guid><author>weixin_41028621</author><pubDate>Sun, 22 Dec 2024 21:01:25 +0800</pubDate><description><![CDATA[IPC和RPC通常采用客户端-服务端（Client-Server）模型，在使用时，请求Client端进程可获取Server端所在进程的代理（Proxy），并通过此代理读写数据来实现进程间的数据通信，更具体的讲，首先客户端会建立一个服务端的代理对象，这个代理对象具备和服务端一样的功能，若想访问服务端中的某一个方法，只需访问代理对象中对应的方法即可，代理对象会将请求发送给服务端；在整个通信过程中，如果使用的是IPC通信，则依赖的是Binder驱动，使用的是RPC通信，则依赖的是软总线驱动。]]></description><category></category></item><item><title><![CDATA[OpenHarmony- 提交代码补丁]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144600667</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144600667</guid><author>weixin_41028621</author><pubDate>Fri, 20 Dec 2024 09:19:28 +0800</pubDate><description><![CDATA[点击新建之后，会跳转到官方原始仓的Pull Request页面下，按照下图填写好相关的Pull Request信息即可。fork完成之后，就会自动跳转到自己的gitee仓库页面，里面会创建一个与你刚fork的仓库同名的仓库。5.向官方原始仓提交Pull Request。1.fork OpenHarmony中仓库。2.克隆fork出来的仓库到自己的主机上。3.配置本地仓与官方原始仓的关联。4.新建开发分支进行开发。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-3.HDF Display子系统（6）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144559644</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144559644</guid><author>weixin_41028621</author><pubDate>Thu, 19 Dec 2024 11:07:31 +0800</pubDate><description><![CDATA[MIPI DSI接口是MIPI（Mobile Industry Processor Interface）联盟定义的显示接口，主要用于移动终端显示屏接口，接口数据传输遵循MIPI协议，MIPI DSI接口为数据接口，传输图像数据，通常情况下MIPI DSI接口的控制信息以MIPI包形式通过MIPI DSI接口发送到对端IC，不需要额外的外设接口。SoC平台驱动适配层：借助此SoC适配层，实现Display驱动和SoC侧驱动解耦，主要完成芯片平台相关的参数配置，并传递平台驱动层的调用到器件驱动层。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-5.HDI 框架]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144510071</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144510071</guid><author>weixin_41028621</author><pubDate>Tue, 17 Dec 2024 17:29:49 +0800</pubDate><description><![CDATA[使用IDL语法描述HDI接口并保存为.idl文件，.idl文件在编译过程中转换为C/C++语言的函数接口声明、客户端与服务端IPC相关过程代码，开发时只需要基于生成的头文件中函数接口实现具体服务功能即可。HDI（Hardware Device Interface，硬件设备接口）是HDF驱动框架为开发者提供的硬件规范化描述性接口，位于基础系统服务层和设备驱动层之间，是连通驱动程序和系统服务进行数据流通的桥梁，是提供给硬件系统服务开发者使用的、统一的硬件设备功能抽象接口，其目的是为系统服务屏蔽南向设备差异。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-3.HDF input子系统（5）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144399269</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144399269</guid><author>weixin_41028621</author><pubDate>Thu, 12 Dec 2024 16:11:47 +0800</pubDate><description><![CDATA[Input驱动模型基于HDF驱动框架、Platform接口、OSAL接口进行开发，向上对接规范化的驱动接口HDI（Hardware Device Interface）层，通过Input-HDI层对外提供硬件能力，即上层Input Service可以通过HDI接口层获取相应的驱动能力，进而操控Touchscreen等输入设备。常见的输入设备有键盘、鼠标、游戏杆、触摸屏等。器件设备向平台驱动注册：将实例化的器件设备注册到平台驱动，实现设备和驱动的绑定，并完成中断注册、上下电等器件初始化工作。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-3.HDF框架（3）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144323588</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144323588</guid><author>weixin_41028621</author><pubDate>Tue, 10 Dec 2024 13:45:47 +0800</pubDate><description><![CDATA[最后，调用 DevMgrService的接口 StartService，即 DevmgrServiceStartService() 启动设备管理服务主体，其实就是为一个个host设备创建 DevHostServiceClnt ，并启动对应的 Host 设备在Host域内的DevHostService。DevmgrServiceAttachDeviceHost()遍历host节点的所有设备信息，使用DriverLoader构建设备节点，装载驱动，发布服务，然后将设备链接到Host的devices列表。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-3.HDF框架（2）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144232612</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144232612</guid><author>weixin_41028621</author><pubDate>Wed, 04 Dec 2024 13:47:58 +0800</pubDate><description><![CDATA[适配层提供具体平台硬件设备的驱动，按照核心层定义的模型创建设备对象，并完成对象的初始化(包括必要的成员变量初始化以及钩子方法挂接，以及相关的硬件初始化操作)，最后使用核心层提供的注册方法将设备对象注册到核心层纳入统一管理。在内核态，这个指针可以直接指向实际设备对象，但是对于某些类型的平台设备，需要在用户态提供同样的DevHandle类型及配套API，而实际设备对象在内核空间，导致无法直接获取和使用内核空间的地址。提供统一适配接口：定义了标准的设备对象模型，驱动程序仅需关注标准对象模型的适配。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-4.GPIO驱动（1）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/144228959</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/144228959</guid><author>weixin_41028621</author><pubDate>Wed, 04 Dec 2024 10:40:51 +0800</pubDate><description><![CDATA[GPIO又俗称为I/O口，I指的是输入(in），O指的是输出（out）。通常，GPIO控制器通过分组的方式管理所有GPIO管脚，每组GPIO有一个或多个寄存器与之关联，通过读写寄存器完成对GPIO管脚的操作。在HDF框架中，同类型设备对象较多时（可能同时存在十几个同类型配置器），若采用独立服务模式，则需要配置更多的设备节点，且相关服务会占据更多的内存资源。核心层主要提供GPIO管脚资源匹配，GPIO管脚控制器的添加、移除以及管理的能力，通过钩子函数与适配层交互，供芯片厂家快速接入HDF框架。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-3.HDF框架（1）]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/143903078</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/143903078</guid><author>weixin_41028621</author><pubDate>Wed, 20 Nov 2024 15:15:04 +0800</pubDate><description><![CDATA[OpenHarmony驱动子系统采用C面向对象编程模型构建，通过平台解耦、内核解耦，兼容不同内核，提供了归一化的驱动平台底座，旨在为开发者提供更精准、更高效的开发环境，力求做到一次开发，多系统部署。支持组件化的驱动模型，为开发者提供更精细化的驱动管理，开发者可以对驱动进行组件化拆分，使得驱动开发者可以更多关注驱动与硬件交互部分。驱动框架完成大部分驱动加载的动作，用户只需注册自己所需的接口和配置，然后驱动框架就会解析配置的内容，完成驱动加载和初始化动作。提供驱动框架能力，主要完成驱动加载和启动功能。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-2.DeviceInfo适配]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/143849507</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/143849507</guid><author>weixin_41028621</author><pubDate>Mon, 18 Nov 2024 16:09:36 +0800</pubDate><description><![CDATA[ohos.boot.sn参数值的获取方式：首先从cmdline（由uboot生成）获取，如果获取到的是sn值则直接读取，若获取的是文件路径，则从文件中读取；当获取不到时从默认的Sn文件读取，默认文件为：/sys/block/mmcblk0/device/cid；在BUILD.gn中定义，参考文件/base/startup/init/services/etc/BUILD.gn。厂商动态值参数，目前有三种获取形式：cmdline读取，编译宏定义，在BUILD.gn中定义。1.启动子系统设备信息说明。]]></description><category></category></item><item><title><![CDATA[OpenHarmony-1.启动流程]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/143731251</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/143731251</guid><author>weixin_41028621</author><pubDate>Wed, 13 Nov 2024 21:40:22 +0800</pubDate><description><![CDATA[这里将init进程的代码分成了通用的和特有的两部分，共同的代码均在 /base/startup/init/services/init/文件夹下，其中有lite/和standard/分别用来构建小型系统和标准系统的init进程。这里主要分析标准进程的启动流程。由于OH标准系统是基于kernel内核开发的，所以启动init进程，那么OH的init进程的入口为/base/startup/init/services/init/main.c中。由于从kernel进程启动的init进程。1.kernel的启动。]]></description><category></category></item><item><title><![CDATA[riscv uboot 启动流程分析 - uboot启动流程]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/143213912</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/143213912</guid><author>weixin_41028621</author><pubDate>Thu, 24 Oct 2024 18:02:01 +0800</pubDate><description><![CDATA[以board_init_f和board_init_r两个板级的初始化接口为例，u-boot分别在common/board_f.c和common/board_r.c两个文件中提供了通用实现。u-boot的基本策略，就是声明一系列的API（如low_level_init、board_init_f、board_init_r等等），并在u-boot的核心逻辑中调用它们。board_init_r 函数中逐个执行函数列表 init_sequence_r 中的初始化函数。]]></description><category></category></item><item><title><![CDATA[riscv uboot 启动流程分析 - SPL启动流程]]></title><link>https://blog.youkuaiyun.com/weixin_41028621/article/details/143184462</link><guid>https://blog.youkuaiyun.com/weixin_41028621/article/details/143184462</guid><author>weixin_41028621</author><pubDate>Thu, 24 Oct 2024 17:00:39 +0800</pubDate><description><![CDATA[对于嵌入式SOC(System On Chip)芯片来说，芯片内本身含有SRAM用于将闪存中的bootloader(uboot)加载到RAM来运行， 但由于片内RAM大小限制，加载不了完整的U-boot程序，所以需要在加载uboot之前加载一个精简版的SPL，SPL可用来初始化DDR等一些必须的外设，然后在把完整的Uboot加载到DDR里面运行。将 spl_mmc_load_image 函数添加到 .u_boot_list_2_spl_image_loader_* 段。了解启动参数，首先要了解启动流程。]]></description><category></category></item></channel></rss>