【深入内核】内核printk原理介绍 3周前查看 评论
【深入内核】内核printk原理介绍

printk 是 Linux 内核用于输出调试信息的接口,通过 log buffer 存储日志信息,并在系统出现问题后记录错误信息。文章详细介绍了 printk 内核框架,包括 printk 接口的作用、log buffer 的设计和初始化、log buffer 的数据结构,以及 printk 函数的流程。文章还分析了 printk ring buffer 的写入过程,包括 prb_reserve、printk_sprint 和 prb_commit 等函数的核心作用。最后,文章通过 trace32 读取 printk_ringbuffer 在内存中的数据,并解释了 printk_ringbuffer 在内存中的增长方向,使读者对环形缓冲区的整体印象更加清晰。

ONEMORE开源软件插件开发指南 1月前查看 1 条
ONEMORE开源软件插件开发指南

OneMore 是一款高度自定义的集成工具,由 PyQt6 和 fluent-widgets 开发,采用侧边导航栏和新建标签页的方式呈现工具功能。OneMore 框架设计包括通用接口、资源文件、主窗口、界面设计界面、账号登录界面、设置界面、通用工具和插件安装目录等。已实现功能包括登录界面、设置界面、导航栏、标签页、插件执行页面、插件市场和软件在线更新插件功能。插件开发指南包括插件组成元素、插件 interface 和插件上传。OneMore 遵循 GPL 协议,允许二次开发,但必须标注原作者。

高通以及MTK平台内核单独编译ko的原理 1月前查看 评论
高通以及MTK平台内核单独编译ko的原理

这篇文章主要讨论了在Android项目开发中,如何进行内核模块(ko)的编译和打包到image中。文章首先介绍了ko编译原理,包括树外驱动和树内驱动的编译过程,并分别以高通平台和MTK平台为例进行了详细说明。 对于树外驱动,文章提到了高通平台中使用的ko编译模板`Build_external_kernelmodule.mk`,并解释了其核心指令`build_module.sh`的使用方法。同时,文章也提到了MTK平台的ko编译模板`build_ko.mk`,并指出了MTK项目中目前仍然使用make进行编译。 对于树内驱动,文章以高通平台为例,展示了如何使用bazel进行内核编译,并解释了相关指令的含义。同时,文章也提到了向内核编译时传递参数的方法。 接下来,文章讨论了ko如何打包到image中。文章指出,ko会被打包到`vendor_dlkm.img`中,并最终merge到`super.img`中。文章还介绍了如何通过`make vendor_dlkmimage`命令编译`vendor_dlkm.img`,并通过fastboot命令将其刷入设备。 最后,文章提醒读者注意,由于Android版本和kernel版本的变化,编译方式和产物路径可能会有所差异,因此本文仅供参考。

【深入内核】Linux 内核栈初步了解 4月前查看 评论
【深入内核】Linux 内核栈初步了解

本文深入解析了 Linux 内核栈的概念与重要性,详细介绍了内核栈的组成、大小、使用场景及其与用户栈的差异。文章强调了内核栈溢出等问题的严重性,并提供了避免常见错误的建议,如避免在内核栈上分配大数组,使用 kmalloc 分配缓冲区,以及开启 DEBUG_STACK_USAGE 选项进行栈使用检测。此外,文章还介绍了调试内核栈的方法和内核栈溢出的日志示例,为开发者和调试者提供了实用的指导。

如何排查rro资源overlay的问题? 8月前查看 评论
如何排查rro资源overlay的问题?

本文介绍了运行时资源叠加层(RRO)的概念、工作原理以及如何构建、解析和配置叠加层。RRO 允许在运行时更改目标软件包的资源值,从而实现更灵活的资源定制。文章详细解释了叠加资源的设置清单、资源映射、构建软件包、解析资源以及启用/停用叠加层的操作。此外,文章还介绍了如何限制可叠加资源、配置叠加层以及排查 RRO 问题。最后,通过一个实例展示了如何在 vendor 侧集成 power_profile.xml 的 overlay。

如何实现动态切换rro? 8月前查看 评论
如何实现动态切换rro?

在Android项目中,针对单一设备名需适配两套电池参数的问题,提出一种通过vnd侧overlay apk和系统属性切换的解决方案。首先,编译两套独立的overlay apk,每套包含不同的`power_profile.xml`文件。然后,利用系统属性`ro.power.profile`作为触发条件,在rc文件中根据设备特性设置该属性,从而动态切换overlay。此方案避免了修改missi侧代码,确保了项目的灵活性和稳定性。

9月前查看 1 条
如何下载以及编译ACK?

本文介绍了如何下载Android通用内核代码(ACK),并对其进行编译,包括使用Bazel和旧版build.sh脚本的方法。文章还详细说明了如何修改KMI接口,包括修改特定文件、更新ABI以及向Google提交代码更改的步骤。整个流程涉及命令行操作、文件编辑和版本控制,旨在帮助开发者定制和更新Android内核。

基于hexo+vercel零成本搭建博客网站 9月前查看 评论
基于hexo+vercel零成本搭建博客网站

搭建个人博客网站是数字时代展示个人才华和分享知识的重要方式。本文介绍了选择Hexo框架和Vercel平台零成本搭建博客的原因及具体步骤。首先阐述了拥有博客网站的意义,然后详细说明了安装Hexo和部署到GitHub的流程,最后讲解了如何利用Vercel进行网站上线。文章简洁明了,为初学者提供了清晰的建站指导。