自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

从0到1,突破自己

努力创造自己的奇迹,而不是等待奇迹的发生。

  • 博客(853)
  • 资源 (44)
  • 收藏
  • 关注

原创 Linux内存从0到1学习笔记(8.20 ION (二))

类似于其 PMEM身,ION 管理一个或多个内存池,其中一些在启动时被预留,以对抗碎片化或满足特殊硬件需求。GPU、显示控制器和相机是一些可能具有特殊内存需求的硬件模块。ION 将其内存池呈现为 ION 堆。每种类型的 Android 设备可以根据其内存需求配置不同的 ION 堆。简而言之,allocate() 和 free() 从堆中获取或释放一个 ion_buffer 对象。调用 phys() 将返回缓冲区的物理地址和长度,但仅适用于物理上连续的缓冲区。

2024-07-19 22:26:50 171

原创 [实践篇]13.31 QNX下的系统性能监控工具 - sysMonAppQNX(三)

以默认设置 (1000ms 的采样间隔,1 次循环) 获取 ADSP 处理器的性能分析统计数据。- 以 500ms 的采样间隔运行 3 次循环,并汇总结果,获取 ADSP 处理器的性能分析统计数据。命令用于显示目标处理器的进程描述符 (Process Descriptor, PD) 的统计信息。用于控制 ETM 跟踪 (Event Trace Monitoring) 和输出相关信息。命令用于获取目标 Q6 处理器的性能分析统计数据。此命令将显示所选处理器的架构版本信息。

2024-07-19 07:15:06 13

原创 [实践篇]13.30 QNX下的系统性能监控工具 - sysMonAppQNX(二)

将 ADSP 的核心时钟设置为 200 MHz,总线时钟设置为 100 MHz。 (默认: 0) - 设置 HCP 总线时钟频率 (可选) (默认: 0) - 设置 DMA 总线时钟频率 (可选)调用会等待用户输入解锁。测试结束后等待返回的时间 (单位: 毫秒) (默认: 0) (默认: 0) - 设置核心时钟频率。 (默认: 0) - 设置总线时钟频率。运行测试的时间 (单位: 秒) (默认: 60 秒)

2024-07-17 22:56:18 29

原创 [实践篇]13.29 QNX下的系统性能监控工具 - sysMonAppQNX(一)

sysMonAppQNX,即System Monitor Application for QNX;它是有QNX开发的系统监控应用程序。它用于监控 QNX 系统的性能和健康状况。sysMonAppQNX 可以监视各种指标,包括 CPU 使用率、内存使用率、磁盘 I/O、网络流量和进程活动。它还可以生成警报以指示潜在问题。

2024-07-17 22:38:19 514

原创 Linux内存从0到1学习笔记(8.19 ION (一))

ION(Interprocess Communication Over Non-Contiguous Memory)即“跨进程非连续内存通信”。是Android系统中负责内存管理的关键子系统,由 Google 在 Android 4.0 ICS 中引入,旨在解决当时 Android 设备中存在的多样化内存管理机制所带来的问题,也就是用归一化的思想来解决不同 Android 设备上内存管理接口分散的问题。举个例子,在使用 NVIDIA Tegra 的 Android 设备上,有 "NVMAP";

2024-07-16 23:28:57 1392

原创 【入门篇】2.3 STM32启动模式(一)

STM32F4根据BOOT引脚的电平选择启动模式,这两个BOOT引脚根据外部施加的电平来决定芯片的启动地址。

2024-07-16 22:47:58 819

原创 【入门篇】2.2 存储器映射与寄存器映射

STM32的寻址范围涉及存储器映射和32位地址线的使用。并且STM32的内存地址访问是按字节编址的,即每个存储单元是1字节(8位)。地址线根数地址编号二进制地址编号数即内存大小10122000110114n……2的n次方32……2的32次方 = 4G(字节)

2024-07-08 23:20:03 100

原创 【入门篇】2.1 Cortex M芯片与内核

Cortex M系列芯片是ARM公司设计的一系列微控制器(MCU),广泛用于嵌入式系统。它是MCU厂商,经ARM公司授权,添加不同的外设 = 各种XX32芯片。

2024-07-08 23:14:54 147

原创 【基础篇】1.8 C语言基础(二)

建议使用do { ... } while (0)来定义宏的原因,一方面是确保宏的行为类似于函数。使用可以确保宏的内容在被调用时像一个单独的语句。这意味着它可以安全地与其他语句结合使用,而不引入语法错误或意外的逻辑错误。另一方面避免潜在的错误。宏定义通常会被直接替换到代码中,如果没有合适的结构包装,可能会导致意想不到的行为。例如,如果宏中有多个语句,而没有使用,这些语句可能会在某些控制结构(如if语句)中导致语法错误。举个例子:else// 其他代码else// 其他代码else。

2024-07-06 23:03:07 97

原创 【基础篇】1.7 C语言基础(一)

1.结构体定义(不使用typedef时,声明结构体变量需要带上struct关键字)int x;int y;2.定义结构体别名(使用typedef后,可以省略struct关键字:)int x;int y;} Point;Point p1;// 现在可以直接使用Point作为类型名// 假设a是一个已经声明的int变量// 定义了一个接受int参数并返回void的函数指针类型// 将函数赋值给函数指针// 通过函数指针调用函数return 0;

2024-07-06 15:47:30 151

原创 [实践篇]13.29 再来聊下Pass Through设备透传

PassThrough(也称为设备直通或设备透传)是设备直接分配技术的一种具体实现。它允许宿主机中的物理设备(如PCI/PCIe设备)被直接分配给虚拟机,是虚拟机能够像物理设备一样直接使用这些设备。某些直通设备,特别是需要进行大量数据传输的设备(如WIFI,处处设备等)。这些设备通常支持DMA操作,能够独立完成内存与设备之间的数据传输。

2024-06-22 23:09:47 89

原创 Linux内存从0到1学习笔记(8.17 SMMU Fault调试方法)

通过前面的介绍,我们知道了SMMU实际上是一个针对外设的MMU。它作为一个硬件IP被设备执行DMA操作时使用。再来简单回顾下SMMU的工作流程:外设 ---> DMA操作 ---> SMMU ---> Memory也就是说,通常情况下驱动程序会先分配DMA Buffer ---> 然后执行SMMU映射,并得到IOVA ---> 驱动在设置IOVA到设备(也就是告诉设备Buffer的位置) ---> 设备驱动开始执行DMA操作 ---> 设备通过SMMU访问分配的DMA Buffer。

2024-06-22 08:11:03 225

原创 Linux内存从0到1学习笔记(8.16 SMMU详解)

本文基于QCOM平台的SoC进行拆解。在QCOM平台下,SMMU作为一个子系统负责将虚拟地址转换为物理地址并检查访问权限。SMMU在SoC中执行两个主要功能:内存碎片整理(使用虚拟内存)和访问控制。QSMMU为ARM CPU Cluster提供了一个符合Arm V8的硬件接口。以QSMMU V500为例,首先QSMMU V500是基于armmmu-500客制化的smmu-v2实现。TBU或QTB 转换缓冲单元(QTB实际上指Qcom平台的TBU)。

2024-06-14 23:03:26 137

原创 Linux内存从0到1学习笔记(8.15 MMU/IOMMU/SMMU概览)

IOMMU(input/output memory management unit 输入/输出内存管理单元)是一个更广泛的概念,用于多种架构(包括x86/x64和ARM),其原理与CPU中的MMU相似,管理设备的内存访问请求,实现地址转换和内存保护。它的主要作用之一是控制设备DMA(Direct Memory Access)地址到机器物理地址的映射。这种映射确保了设备能够安全地访问物理内存区域。因为在没有IOMMU的情况下,设备通过DMA可以访问机器的全部地址空间,这可能会带来安全风险。

2024-06-14 22:44:42 210

原创 6.16 CO-RE(Compile Once – Run Everywhere)使用手册(二,处理内核改动和功能检测)

BPF_CORE_READ()宏系列是BPF CO-RE的核心,但在使用BPF CO-RE构建实用BPF应用程序时,还有更多内容需要考虑。BPF应用程序必须处理的一个非常常见的问题是执行功能检测的需要。即检测特定主机内核是否支持某些新的可选功能,BPF应用程序可以利用这些功能来获取更多信息或提高效率。然而,如果内核不支持这些功能,BPF应用程序宁愿回退到支持旧内核的代码,而不是直接失败。BPF CO-RE提供了一系列不同的机制来满足这些需求。

2024-06-12 22:52:16 121

原创 6.15 CO-RE(Compile Once – Run Everywhere)使用手册(一,读取内核数据)

到目前为止,最常见的BPF CO-RE操作是从某个内核结构中读取字段的值。libbpf提供了一系列辅助函数,使得读取字段变得简单且CO-RE可重定位。CO-RE可重定位意味着,无论结构的实际内存布局如何(这可能会根据实际的内核版本和使用的内核配置而变化),BPF程序都将被调整为从结构的起始位置开始,以正确的实际偏移量读取字段。

2024-06-12 22:40:28 169

原创 6.14 CO-RE(Compile Once – Run Everywhere)的工作原理

首先我们来看下BPF应用程序必须处理的典型场景,以及如何使用BPF CO-RE解决它们。正如接下来要遇到的,一些可移植性问题(例如,兼容的结构布局差异)被处理得相当透明和自然,而其他问题则被更明确地处理,例如,通过if/else条件语句(与BCC程序中的编译时#ifdef/#else结构相对)和BPF CO-RE提供的额外机制。

2024-06-05 22:05:03 89

原创 6.13 CO-RE(Compile Once – Run Everywhere)简介

BPF CO-RE 即Compile Once – Run Everywhere,编译一次——到处运行。BPF CO-RE是为了解决BPF的可移植性而存在,也就是说编写一个BPF程序,该程序能够成功编译、通过内核验证,并且能够在不同的内核版本上正确运行,而无需为每个特定的内核重新编译。

2024-06-05 22:04:57 247

原创 6.12 Libbpf-bootstrap(三,APP)

既然我们已经了解了最小应用以及Makefile中的编译方式,接下来我们将通过bootstrap应用程序展示的一些额外的BPF特性。在现代BPF Linux环境中,bootstrap是我编写可用于生产环境的BPF应用程序的方式。它依赖于BPF CO-RE(阅读原因请点击这里),并且需要Linux内核以CONFIG_DEBUG_INFO_BTF=y配置构建(详见此处)。

2024-06-01 17:09:22 178

原创 6.11 Libbpf-bootstrap(二,Minimal)

minimal是一个很好的入门示例。你可以将其视为一个简单的POC,用于尝试BPF功能。它不使用BPF CO-RE,因此你可以使用较旧的内核,并且只需包含系统内核头文件即可获取内核类型定义。这不是构建生产就绪应用程序和工具的最佳方法,但对于本地实验来说已经足够了。

2024-06-01 16:46:24 86

原创 6.10 Libbpf-bootstrap(一,简介)

在看完前面的介绍,是不是感觉看了也就看了。但是,如果想要像BCC那样使用libbpf编写BPF程序,该怎么开始呢?那么这就需要libbpf-bootstrap了。libbpf-bootstrap是官方推荐的一个范式,就像我们写PPT的模版。简单来说可以简化我们的BPF开发流程,它可以帮助我们快速开发编写自己的BPF程序。这也就为什么把这个项目叫做bootstrap了。就像你需要使用一台电脑环境写个贪吃蛇游戏,那么你不需要在去买显卡,CPU,主板去组装一台电脑;而是只需要按下电源键即可。通过使用。

2024-05-29 23:04:33 1042

原创 6.9 LIBBPF API(八,bpf_endian.h 定义)

6.9 LIBBPF API(八,bpf_endian.h 定义)

2024-05-29 22:23:00 387

原创 6.8 LIBBPF API(七,bpf_core_read.h 函数,定义,枚举)

bpf_core_read.h 函数,定义,枚举

2024-05-28 22:45:25 188

原创 6.7 LIBBPF API(六,bpf_tracing.h 定义)

bpf_tracing.h 函数列表

2024-05-28 22:22:13 226

原创 6.6 LIBBPF API(五,btf.h 函数列表,定义,枚举)

btf.h.h 函数列表,定义,枚举

2024-05-26 23:16:20 51

原创 6.4 LIBBPF API(三,libbpf.h 定义与枚举)

我们继续看下libbpf.h中的定义和枚举

2024-05-22 21:38:40 19

原创 6.5 LIBBPF API(四,bpf.h函数列表与定义)

bpf.h函数列表

2024-05-22 21:38:27 149

原创 【基础篇】1.3 第一个内核驱动和内核模块代码示例

内核模块(kernel module):是一种可以被动态加载到内核中的代码,用于扩展基本内核功能。它们通常是由内核源代码编译而成,可以在系统运行时根据需要动态地加载和卸载,而无需重启系统。内核驱动:是内核的一部分,与内核一起编译和链接。驱动程序作为内核的扩展组件,帮助内核实现与硬件的连接和操控。它们通常是静态链接的,这意味着一旦内核被编译和部署,驱动就被永久地包含在内。

2024-05-19 10:22:22 172

原创 【基础篇】1.2 内核驱动代码结构与示例

在驱动程序的开头,通常会定义一些模块级别的信息,如模块的许可证、作者、描述和版本等。这些信息有助于用户和其他开发者了解模块的基本信息。

2024-05-18 22:58:29 991

原创 【基础篇】1.1 内核驱动简介

内核驱动,也称为内核模块或设备驱动,是一段可以加载到操作系统内核中的代码,通常用于管理硬件设备和提供操作系统与硬件之间的接口。这些驱动为操作系统提供了与硬件设备进行交互的能力,使得操作系统能够识别、管理和控制硬件设备。在Linux系统中,内核驱动通常以模块的形式存在,可以被动态地加载到内核中或从内核中卸载。这种模块化设计使得Linux系统能够灵活地支持各种硬件设备,而无需在每次添加或更换硬件时都重新编译整个内核。

2024-05-18 22:44:17 963

原创 6.2 LIBBPF API(一,异常处理)

如果函数直接返回错误代码,它会使用0来表示成功,并使用负的错误代码来表示错误的原因。在这种情况下,应直接从返回值中检查错误代码,无需检查errno。如果函数返回一个指针,它会返回NULL来表示存在错误。在这种情况下,应检查errno来获取错误代码。当使用“libbpf 1.0模式”中的libbpf时,API函数可以通过两种方式返回错误。/* 请注意下面EINVAL和E2BIG的错误代码前没有负号。/* 相应地处理错误 */处理E2BIG错误 */处理EINVAL错误。

2024-04-11 22:43:21 2548

原创 5.120 BCC工具之zfsslower.py解读

zfsslower 显示慢于阈值的 ZFS 读取、写入、打开和 fsyncs 操作。

2024-04-11 22:42:52 2438

原创 5.119 BCC工具之zfsdist.py解读

ZFS 是一种高级的文件系统,设计用于存储大量数据并提供强大的数据完整性保证。zfsdist用于追踪 ZFS(Zettabyte File System)的读取、写入、打开和同步操作,并将其延迟以 2 的幂次直方图的形式进行汇总。

2024-04-10 08:09:19 2423

原创 5.118 BCC工具之xfsslower.py解读

xfsslower显示了XFS的读取、写入、打开和fsync操作,这些操作慢于一个阈值。

2024-04-10 08:08:48 466

原创 5.117 BCC工具之xfsdist.py解读

xfsdist 追踪 XFS 的读取、写入、打开和 fsyncs 操作,并将其延迟以 2 的幂次直方图的形式进行总结。

2024-04-09 07:47:17 274

原创 5.116 BCC工具之vfsstat.py解读

这追踪了一些常见的VFS调用,并每秒打印摘要。

2024-04-09 07:46:57 221

原创 5.115 BCC工具之vfscount.py解读

这通过追踪所有以“vfs_”开头的内核函数,计算了在此期间发生的VFS调用次数。默认情况下,时间为99999999秒。

2024-04-08 08:42:57 425

原创 5.114 BCC工具之nfsdist.py解读

nfsdist 追踪 NFS 读取、写入、打开和 getattr,并将其延迟概括为 2 的幂次方直方图。

2024-04-08 08:42:37 464

原创 5.113 BCC工具之nfsslower.py解读

NFS是一种分布式文件系统协议,允许客户端通过网络访问服务器上的文件。然而,由于网络延迟、服务器负载等原因,NFS操作可能会变得缓慢,从而影响系统性能。nfsslower显示慢于阈值的 NFS 读取、写入、打开和 getattr 操作。这有助于我们发现导致NFS性能下降的慢操作,并进一步分析其原因.该工具还可以追踪commit操作,这是NFS特有的,可能会非常慢。警告:这会对这些NFS操作(包括从文件系统缓存中的读取和写入)添加低开销的检测。这种读取和写入可能会非常频繁(取决于工作负载;

2024-04-06 10:55:00 387

原创 5.112 BCC工具之ext4slower.py解读

ext4slower可以显示慢于阈值的ext4读取、写入、打开和fsync操作。

2024-04-06 10:54:46 245

收发彩信,自动打开数据连接

两个文件分别为在源码基础上进行修改后的文件,主要用于解决关闭数据连接后无法收发彩信

2014-07-07

视图缩放案例

这个小案例是主要用来演示一下如何点击一个图片按钮,对缩略图进行缩放操作。

2014-07-07

app之间交互(ComponentName)

这里简单介绍了以一下如何使用ComponentName来帮助我们实现App之间的交互

2014-07-03

版本控制器git-1.9.4(msysgit Windows版)

这里为大家提供了当前最新版本的msysgit版本控制器

2014-06-28

Android中app之间的交互

这里简单介绍了,不同app之间如何使用隐式intent进行交互

2014-06-27

Fragment与Activity使用接口进行交互

这里简单介绍了如何使用接口,来使fragment发送消息给activity

2014-06-27

Fragment与Activity使用Bundle传递数据

这里简单描述了以下Activity使用Bundle向Fragment传递数据

2014-06-27

Fragment与Activity使用Handler进行交互

这里简单介绍了Fragment和Activity使用Handler方式进行交互。

2014-06-27

实现TextView自由复制

自己参照Android系统源码中短信模块中代码,写了一个Demo程序实现TextView的自由复制,共享给大家参考。

2014-06-26

android手机USB驱动

用以android手机链接电脑用的USB驱动程序

2013-01-12

毕业设计-VC职工工资管理系统

这是一款毕业设计源程序和论文,希望能对大家的毕业设计有所帮助。

2013-01-12

毕业设计-( ASP精品课程网站

这是一款毕业设计源程序和论文,希望能对大家的毕业设计有所帮助。

2013-01-12

Asp电子商务网站

希望能对大家的毕业设计有所帮助,至少能起到一个参考资料,希望大家都能过关啦。

2013-01-12

andricoFacebook客户端

这是一款模仿andricoFacebook客户端的源程序代码

2013-01-11

Baidu_map(百度地图)Android平台开发指南文档

这是为android开发者在使用百度地图开放的api时,需要参考的开发指南文档

2013-01-10

android电子商城(客户端+服务器)

这是一个电子商城的android源代码,其中包括客户端和服务器,经过测试。希望能对初学者有所帮助。

2013-01-08

微博客户端源代码

这是一个关于微博客户端开发的源程序,对于初学者来说是一个易于模仿的案例,对初学者来说很有帮助,贵在模仿

2013-01-08

Android的一个仿酷狗播放器的应用程序源码

一个仿酷狗播放器的音乐播放器源码,对于初学者来说是一个很好的模仿例子

2013-01-03

p2p终结者局域网软件

想在局域网里游刃有余吗?下载来使用使用知道了。

2012-12-06

android工程师面试内部题

想转行做安卓的同志们,面试有这个,offer就不是问题了。

2012-12-06

pageowner 解析工具

该工具组合可以对pageowner进行不同维度的解析,包括下面3各方面: 1.通过关键函数对pageowner进行解析、统计,最终以进程级展示进程的cma内存使用情况,并通过占用size自动排序。 2.该工具可用于分拆pageowner信息,并以进程和线程进行分别拆分,用于更细力度的pageowner拆分。 3.该工具用于解析整个pageowner中各个进程的内存使用情况 解析工具的开发是为了在我们拆分内存布局的时候能够提高效率,不容易出错,达到事半功倍的效果。 在使用过程中,遇到任何问题,都可以免费提供支持。

2022-05-13

linux_kernel_config 中文手册(2.6.28)

linux_kernel_config 中文手册(2.6.28)

2022-04-30

opengrok-1.7.30.tar.gz

opengrok-1.7.30.tar.gz

2022-03-27

syslinux-6.03.tar.xz

syslinux-6.03.tar.xz

2022-03-27

jdk-11.0.14_linux-x64_bin.deb

jdk-11.0.14_linux-x64_bin.deb

2022-03-27

busybox-1.35.0.tar.bz2

busybox-1.35.0.tar.bz2

2022-03-27

高度精简LinuxOS

自定义打包的LinuxOS,该OS只有10M左右,仅包含LinuxKernel+Busybox;

2022-03-26

车载SOA软件架构技术规范

车载SOA软件架构技术规范

2022-03-20

ardupilot-master.zip开源固件源码

ardupilot-master.zip开源固件源码

2022-02-07

MP Mission Planner 飞控地面控制站

MP Mission Planner 飞控地面控制站

2022-01-29

helloworld.zip

HelloWorld

2021-05-11

SELinux4AndroidO

该文档包含如下: m4.pdf/configuring-selinux-policy-report.pdf/implementing-selinux-as-linux-security-module-report.pdf/The_SELinux_Notebook-4th_Edition.pdf/SEAndroid-NDSS2013.pdf/abs2014_seforandroid_smalley.pdf/SELinux_Treble.pdf

2018-02-05

recovery_l10n

这是Google官方发布的一款工具,用来合成recovery模式下文本本地化显示的工具,我已经编译成功,源码也一起上传了,有兴趣的同学可以下载下来研究一下!

2015-04-10

apktool+smali2java

apktool+smali2java方式反编译

2015-03-18

recovery下edify介绍

这个文件是有关edify脚本的一个简单介绍,是从源码中直接复制下来的

2015-02-13

解决彩信gif格式图附件不能正常播放

解决添加gif格式图片为彩信附件,预览不能正常播放,原因为图片由于超出附件大小限制而被压缩

2014-07-26

解决Android4.3彩信幻灯片中gif格式图片不能正常播放

本代码包解决了在Android4.3中MMS模块中添加幻灯片附件,在预览幻灯片的时候,gif格式图片不能够正常播放

2014-07-26

Android4.3系统内置音乐播放器

这是从android4.3中的源码抽取出来的,而且编译运行成功,有兴趣的朋友可以拿来研究一下。

2014-07-11

模仿Android4.3版本短信设置功能

在Android系统源码中所有应用的设置界面都使用preference,该资源源码是模仿短信app中设置界面的UI和部分功能。

2014-07-11

SmartTools

这个小工具可以自动帮助我们插入短信,通话记录,联系人,浏览器书签

2014-07-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除