自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(448)
  • 资源 (19)
  • 问答 (1)
  • 收藏
  • 关注

原创 slab分配器(3):slab内存申请和释放

ref:内存管理之slub

2025-03-11 22:02:10 332

原创 linux内存页块划分及位图存储机制

核心作用与背景是 Linux 内存管理中的一个关键数据结构,主要用于跟踪和管理 ​内存块(pageblock)​的特性。通过,内核可以高效地记录每个内存块的属性,例如迁移类型、分配状态等,从而优化内存分配与回收策略。

2025-03-06 22:23:35 871

原创 伙伴系统的核心实现

下面我们来看下减半分裂过程的实现,expand 函数中的参数在本节示例中:low = 指定分配阶 order = 0,high = 最后遍历到的分配阶 order = 3。

2025-03-03 21:59:46 330

原创 物理内存分配快速路径

伙伴系统有一个特点就是它所分配的物理内存页全部都是物理上连续的,并且只能分配 2 的整数幂个页,这里的整数幂在内核中称之为分配阶。

2025-03-01 19:30:25 946

原创 oled显示图片

【代码】oled显示图片。

2025-02-09 21:18:23 242

原创 linux RT-Preempt spin lock实现

spinlock.h - include/linux/spinlock.h - Linux source code v5.4.90 - Bootlin Elixir Cross Referencer

2025-01-10 23:24:33 382

转载 Linux性能异常经典案例分析之D进程

用户业务场景类似图片服务器,通过负载均衡ULB将用户请求流量打散到A、B、C三台云主机(虚机)上,云主机挂载网络存储UFS(即NFS),用于存储用户请求图片数据。业务上线不久后,某次晚高峰,A、B、C三台服务器同时出现负载异常(load偏高),业务侧出现访问卡顿和业务数据加载缓慢等现象,随即客户侧收到大量用户投诉。2.2 故障分析由于故障现象有一定的误导性,以及对客户业务架构的不够了解,导致排查前期出现了偏离。即故障现象是三台虚机负载同时。

2025-01-04 17:26:19 95

原创 linux进程状态

一、进程状态的定义。

2025-01-04 16:46:37 267

原创 linux RT-Preempt -- 优先级继承实现

ref:

2025-01-02 13:48:59 373

原创 vmcore和kdump

在Linux系统中,vmcore是指内核崩溃时生成的内存转储文件。这个文件包含了系统崩溃时的内存状态,可以用于分析和诊断内核崩溃的原因。符号文件:分析vmcore时,通常需要与生成该内核的符号文件(vmlinux)一起使用,以便正确解析内存转储中的数据。存储空间:vmcore文件可能非常大,尤其是在系统内存较大时,因此需要确保有足够的存储空间来保存这些文件。使用crash工具时,需要提供内核符号文件(通常是vmlinux文件),以便解析vmcore中的数据。bt:显示崩溃时的堆栈跟踪。ps:显示进程列表。

2024-12-14 23:00:27 369

原创 slab分配器(3):slab内存初始化

那就只需要进行merge操作并返回,而无需进一步创建新的。函数中完成了这两个结构体的初始化之后,相当于就是创建了两个。中分配出来的对象,那么这个问题是怎么解决的呢?结构,并对该结构体进行初始化,最终添加到全局链表中。完成的功能比较简单,就是创建一个用于管理。中,有存在对象大小相近,且具有兼容标志的。函数,内核中定义了两个静态的全局变量。结构体初始化,包括了上文中分析到的。来分配的,因此不需要创建一个相关的。结构体对象的缓存池,一个用于分配。在创建的过程中,当发现已有的。结构体对象的缓存池。

2024-11-23 20:59:51 294

转载 slab分配器(2):组织结构

在上小节的内容中,笔者主要为大家介绍了 struct kmem_cache 结构中关于 slab 的一些基础信息,其中主要包括 slab cache 中所管理的 slabs 相关的容量控制,以及 slab 中对象的内存布局信息。上图中的 kmem_cache 结构就好比是超市,slab cache 的本地 cpu 缓存结构 kmem_cache_cpu 就好比超市的营业厅,营业厅内摆满了一排一排的货架,这些货架就是上图中的 slab,货架上的商品就是 slab 中划分出来的一个一个的内存块。

2024-11-23 14:47:29 86

原创 slab分配器(1):基础知识

ref;

2024-11-22 21:14:56 204

原创 memblock内存分配器

memblock 是 Linux 内核中的一个内存管理子系统,主要用于在系统启动早期阶段管理物理内存。它在内核初始化期间负责管理内存,直到更复杂的内存管理子系统(如伙伴系统)接管。

2024-11-17 22:47:51 353

原创 LRU(Least Recently Used,最近未使用)

lru的引入主要是和内存回收有关。属于内核的大部分page是不能够进行回收的,比如内核栈、内核代码段、内核数据段以及大部分内核使用的page,它们都是不能够进行回收的;相反,进程使用的page,比如进程代码段、进程数据段、进程堆栈、进程访问文件时映射的文件页、进程间共享内存使用的页,这些页框都是可以进行回收的。那么,可回收的page里面选择那些进行回收呢?

2024-11-16 19:35:49 862

原创 PCP(Per-CPU Pageset)

如果PCP列表为空,则从全局内存池中获取一批(batch个 pages),放入PCP列表,然后再从PCP列表中分配所需的page。每个CPU都有自己的PCP列表,这样在分配和释放内存时,可以避免多个CPU同时访问同一个全局内存池,从而提高性能。减少锁争用:由于每个CPU都有自己的PCP列表,内存分配和释放时不需要频繁地获取全局锁,从而减少了锁争用,提高了系统的并发性能。提高缓存命中率:PCP列表中的页面更有可能被同一个CPU再次使用,从而提高了缓存命中率,减少了内存访问延迟。高速缓存中的页框描述符链表。

2024-11-16 12:08:50 1116

原创 内存回收基本原理与内存水位

内核会为每个 NUMA 节点中的每个物理内存区域定制三条用于指示内存容量的水位线,分别是:WMARK_MIN(页最小阈值), WMARK_LOW (页低阈值),WMARK_HIGH(页高阈值)。这三条水位线定义在WMARK_MIN,WMARK_LOW,NR_WMARK这三条水位线对应的 watermark 数值存储在每个物理内存区域 struct zone 结构中的 _watermark[NR_WMARK] 数组中。// 物理内存区域中的水位线。

2024-11-10 17:53:27 1200

原创 linux物理内存管理:node,zone,page

对于物理内存内存,linux对内存的组织逻辑从上到下依次是:node,zone,page,这些page是根据buddy分配算法组织的,看下面两张图:上面的概念做下简单的介绍:内存节点结构体在linux内核include/linux/mmzone.h文件NUMA下每个node由一个pglist_data结构体描述UMA下只有一个node,即全局变量mmzone.h - include/linux/mmzone.h - Linux source code v5.4.285 - Bootlin Elixir Cr

2024-11-10 14:13:27 1057

原创 arm 体系架构-异常中断与恢复

(2)异常的定义就是突发事件,打断了CPU的正常常规业务,CPU不得不跳转到异常向量表中去执行异常处理程序;中断是异常的一种,一般特指SoC内的内部外设产生的打断SoC常规业务,或者外部中断(SoC的GPIO引脚传回来的中断)。(1)针对SoC来说,发生复位、软中断、中断、快速中断、取指令异常、数据异常等,我们都统一叫异常。所以说:中断其实是异常的一种。arm定义好了异常向量表,定义了各种异常发送时跳转的函数。在发生中断时先保存现场,再去处理中断,最后恢复现场。的返回地址,“返回地址”保存的是。

2024-10-27 21:01:38 384

原创 稳定性分析案例

ref:破获ARM64位CPU下linux crash要案之神技能:手动恢复函数调用栈 - 皮皮的技术志 - 博客园

2024-10-27 20:30:20 195

原创 arm 体系架构-过程调用标准AAPCS

ref:ARM体系结构学习笔记:过程调用标准AAPC、 ARM32调用约定、ARM64调用约定_arm64 传参 结构体-优快云博客ARM软件逆向工程入门 01 - ARM调用约定(Calling Convention)_armv7函数调用约定-优快云博客ARM学习(17)ARM函数调用规则_arm bl call 调用函数-优快云博客

2024-10-27 13:18:37 619

原创 arm汇编指令汇总

LDR{条件} 目的寄存器,:从内存中将一个32位的字数据传送到目的寄存器中。该指令通常用于从内存中读取32位的字数据到通用寄存器,然后对数据进行处理。LDR{条件}H 目的寄存器,:从内存中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的。LDR{条件}B 目的寄存器,:从内存中将一个8位的字节数据传送到目的寄存器中,同时将寄存器的。特别说明:当程序计数器PC作为目的寄存器时,从内存中读取的字数据将被当作目的地址,从而实现程序流程的跳转。

2024-10-27 10:38:50 639

原创 Linux & Unix 共享库

ref:Linux & Unix 共享库 一https://www.eet-china.com/mp/a80944.html一文读懂Linux下动态链接库版本管理及查找加载方式 | IdeaWand

2024-10-23 11:14:22 445

原创 linux进程优先级

normal_prio 的值取决于静态优先级和调度策略,可以通过 _setscheduler 函数来设置 normal_prio 的值。MAX_RT_PRIO 的值为100,nice 的范围是 -20 ~ +19,故 static_prio 值的范围是 100 ~ 139。rt_priority 的值也是取决于调度策略的,可以在 _setscheduler 函数中对 rt_priority 值进行设置。prio 的值是调度器最终使用的优先级数值,即调度器选择一个进程时实际选择的值。

2024-09-16 11:05:59 1313

原创 sysfs系统

所以,内核开发人员觉得有必要使用一个独立的抽象接口来描述设备和驱动信息,毕竟直到目前,驱动代码在内核代码中占比非常大,内容也是非常庞杂。与ext系列和fat等文件系统不同的是,sysfs是一个系统在启动时构建在内存中虚拟文件系统,一般被挂载在/sys目录下,既然是存储在内存中,自然掉电不保存,不能存储用户数据。事实上,在之前也有同样的虚拟文件系统建立了内核与用户系统信息的交互,它就是procfs,但是procfs并非针对设备和驱动程序,而是针对整个内核信息的抽象接口。

2024-08-31 21:43:30 292

原创 pwm子系统

ref:

2024-08-24 21:46:56 395 1

原创 c++函数模板

函数模板是C++中的一种特性,它将将参数列表中的全部或者部分参数类型剥离了出来,允许你编写一个通用的函数。函数模板的格式包括模板声明、模板参数列表和函数定义。返回类型 函数名(参数列表) {// 函数体template <typename T>:这是模板声明,T 是一个类型参数。你也可以使用 class 关键字代替 typename,效果是一样的。返回类型:函数的返回类型,可以是模板参数 T 或其他类型。函数名:函数的名称。参数列表:函数的参数列表,可以包含一个或多个模板参数 T。

2024-07-13 18:08:18 670

原创 WebRTC AudioProcessing 移植调试

ref:

2024-06-19 18:48:16 559

原创 视频码流分析工具

一、VQ Analyzer。

2024-05-24 21:11:21 1050

原创 C/C++ 修改系统时间导致sem_timedwait阻塞

ref:c++ - sem_timedwait with CLOCK_MONOTONIC_RAW/CLOCK_MONOTONIC - Stack Overflowhttps://www.cnblogs.com/xiaolincoding/p/11369715.htmlsem_timedwait 和修改系统时间_monotonic system-wide clock-优快云博客

2024-05-18 00:59:12 229

原创 openmax

ref:

2024-02-02 22:25:57 376 1

原创 TCP性能分析

ref:TCP性能和发送接收窗口、Buffer的关系 | plantegg

2024-01-14 18:11:40 581

原创 tcpdump常用命令

ref:Home | TCPDUMP & LIBPCAPhttps://www.cnblogs.com/onlyforcloud/p/4396126.html

2024-01-14 16:32:00 721

原创 paho mqtt qos

ref:Paho MQTT C Client Library: MQTTClient_connectOptions Struct Referencepaho mqtt c 源码分析-5 (Qos) - 简书https://github.com/eclipse/paho.mqtt.c/issues/297What is MQTT Quality of Service (QoS) 0,1, & 2? – MQTT Essentials: Part 6

2024-01-03 22:02:37 512

原创 内核网络状态监控

查看相应参数在当前运行机器的值可以通过/proc/sys/net/目录下的文件内容查看。

2023-12-18 14:05:29 494

原创 fd信息查看

一、/proc/pid/fdinfo和/proc/pid/fd的含义。

2023-12-10 23:16:43 721

原创 ffmpeg常用命令

其中:input.mp4是指要转换视频文件的名称,根据实际而定;output.mp4是转换后的输出文件名。

2023-12-07 20:19:03 1260

原创 YUV&RGB

RGB和YUV格式阐述;YUV优点说明

2023-12-02 20:51:15 923

原创 弱网模拟工具

一个人晚上在家通过 Wi-Fi 上网,在线电影播放基本流畅,可一旦在晚间用网高峰期打视频电话就画面糊,这时不仅可能带宽受限了,还可能有较高的丢包率。与有线网络通信相比,无线网络通信受环境影响会更大,比如高层建筑、用户的移动、环境噪音、封闭的环境等,网络服务质量相对不稳定,导致用户经常在弱网环境下通信。例如,在车库的视频通话通常都不如在室外的质量。除了受环境影响外,网络覆盖、过载控制、邻区漏配等,也会造成呼叫失败、服务质量下降。这些真实的用户场景。

2023-12-02 18:02:05 6447

原创 H264初探

ref:【科普】“视频”是怎么来的?H.264、码率这些词又是什么意思?_哔哩哔哩_bilibiliH.264编解码原理浅析 - 知乎

2023-12-02 17:48:16 615

sata协议相关.7z

sata协议相关

2021-11-16

teraterm-4.105.7z

teraTerm终端工具

2021-05-16

InstallerProjects.vsix

InstallerProjects.vsix,亲测2019可用,2017应该也可用。 vs2019默认是没有Setup Project这个项目选项的,需要从官网下载安装

2020-10-23

rvct编译器官方文档.rar

rvct编译器官方文档,包含了armcc、armlink、armar等工具链的详细使用说明

2020-10-23

DUI0491C_arm_compiler_reference.rar

下载自官网,arm_compiler_reference 链接: https://developer.arm.com/documentation/dui0206/j/using-scatter-loading-description-files/examples-of-specifying-region-and-section-addresses/assigning-sections-to-a-root-region

2020-07-27

knobcontrol.7z

旋钮控件源码及其使用示例

2020-04-10

SHTester.7z

一个非常好用的调试蓝牙串口的上位机软件,可以方便地对HC04 05 06等型号的蓝牙进行设置

2019-06-12

gcc-arm-none-eabi-4_9-2014q4-20141203-linux.tar.bz2

linux下编译BlHeli源代码所需要的工具链

2019-06-12

ICM20948驱动代码数据手册等官方资料

所有资源全部下载自官网,自己整理后得到。包括数据手册,用户手册,硬件设计手册,评估板所有资料,包括原理图,驱动代码等等。

2019-03-11

flash_loader_demo_v2.8.0

flash_loader_demo_v2.8.0 stm32使用串口下载程序的官方软件

2019-03-11

STM32使用cubemx和HAL库驱动ICM20602

工程代码,源代码 软件平台:cubemx mdk 硬件平台:stm32f103rct6 ICM20602

2019-03-05

Keil.STM32F0xx_DFP 包括2.0.0和1.4.0两个版本

Keil.STM32F0xx_DFP 包括2.0.0和1.4.0两个版本,可以根据不用的mdk版本选择不用的pack

2019-02-22

NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。

NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。

2018-11-03

Newtonsoft.Json.dll

用来解析json数据的强大的开源控件,下载于官网,亲测可用。

2018-10-18

BLHeli-master最新版

BLHeli_S SiLabs最新更新于Jun 14, 2018 BLHeli_32 ARM更新于Aug 21, 2018 BL版本REV14.9

2018-09-06

BLHeliSuite16714901(2018-02-25 更新)

给BL电调升级程序的上位机,下载自官网,官网显示更新时间为2018-02-25

2018-09-06

MPU6050官方原本英文资料

官方英文原版,主要包含如下,开发必备资料。最新 1、MPU-6000 and MPU-6050 Product Specification Revision 3.4 2、MPU-6000/MPU-6050 9-Axis Evaluation Board User Guide 3、MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2 4、InvenSense ARM Reference Board Application Note

2018-02-03

MPU6500官方原版英文资料

MPU-6500-Datasheet,MPU-6500-Register-Map.pdf。压缩文件包括原版的英文数据手册和MPU-6500 Register Map and Descriptions Revision 2.1

2018-02-03

ICM-20602官方英文原版数据手册

官方原版英文资料High Performance 6-Axis MEMS MotionTracking™ Device,The ICM-20602 is a 6-axis MotionTracking device that combines a 3-axis gyroscope, 3-axis accelerometer, in a small 3 mm x 3 mm x 0.75 mm (16-pin LGA) package.

2018-02-03

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

TA关注的人

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