自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (13)
  • 收藏
  • 关注

原创 alsa驱动架构

从属关系snd_pcm是snd_card的子设备,必须依附于某个snd_card存在;双向引用链表包含所有snd_pcm(父找子);指针指向所属snd_card(子找父);生命周期绑定snd_card的注册/销毁会同步影响所有snd_pcm,是“牵一发而动全身”的根节点。snd_card是声卡的“总控中心”,snd_pcm是总控中心下负责“音频播放/录音”的具体功能模块,没有总控中心,功能模块无法独立存在和工作。

2025-12-18 09:45:38 408

原创 audio drv

模拟输出”和“多声道输出”是音频领域的两个核心概念,分别对应和。

2025-12-17 11:34:48 785

原创 rmap(no check)

结构体核心定位类比(便于理解)vma(VMA)单个进程的「匿名内存区间描述符」(比如进程堆/栈对应的匿名 VMA),是反向映射的「终端节点」某栋楼的「某个房间」(属于特定住户,对应特定内存区间)anon_vma多个共享同一匿名页的 VMA 的「聚合容器」,是反向映射的「核心枢纽」「小区共享大厅」(连接所有共享同一批匿名页的房间)vma和anon_vma之间的「双向链接桥梁」(因为一个 VMA 可关联多个anon_vma,一个anon_vma可关联多个 VMA)

2025-12-16 10:41:15 809

原创 VMA-virtual memory areas

【代码】VMA-virtual memory areas。

2025-12-15 14:18:37 88

原创 slab/slob/slub 分配器

2025-12-15 10:12:58 90

原创 Linux memblock

2025-12-10 17:15:04 281

原创 mmap三种映射方式

【代码】mmap三种映射方式。

2025-12-10 10:42:53 260

原创 Linux页面分配器

【代码】Linux页面分配器。

2025-12-09 09:51:31 105

原创 linux debug工具集合

是 Linux 下 跟踪指定进程(PID)系统调用和信号 的核心调试命令 —— 简单说,它能 “实时监控” 目标进程正在执行哪些内核系统调用(比如 open、ioctl、mmap、close 等)、传递了什么参数、返回了什么结果,还能捕获进程收到的信号,是排查应用与内核(如 DRM 驱动)交互问题的 “利器”strace -p 1234 -e trace=ioctl 跟踪 PID=1234 的 DRM 应用。输出示例(跟踪 DRM 应用进程)命令部分 作用 补充说明。

2025-12-03 17:15:33 271

原创 rbtree

波波微课_红黑树的插入算法蓝不过海呀_红黑树 - 删除。

2025-12-02 20:27:29 403

原创 GEM和TTM

【代码】GEM和TTM。

2025-12-01 17:57:03 248

原创 drm prime和 dma_buf

2025-12-01 17:49:19 135

原创 dma_resv

【代码】dma_resv。

2025-12-01 17:03:33 147

原创 WW-Mutex中两种算法

如果持有锁的是新事务,那么正在请求锁的事务就选择等待如果持有锁的是老事务,那么正在请求锁的事务就放弃请求并终止场景: 事务A启动于10:00, 事务B启动于10:05, 事务C启动于10:10, 如果B持有锁,A和B同时去获取锁,那么结果是怎样?

2025-12-01 11:26:45 441

原创 poll & epoll & select & eventfd

poll 是一种 I/O 多路复用技术,用于监视多个文件描述符的状态(如可读、可写或异常)。它比传统的 select 更高效,尤其在处理大量文件描述符时。

2025-09-08 08:55:04 471

原创 DMA Direct Memory Access

该函数将cpu_addr表示的段虚拟地址映射到DMA缓冲区中,返回该缓冲区的dma_addr_t设备总线起始地址.而且往往对每次DMA传输都会重新建立一个流式映射的缓冲区,所以使用流式DMA映射时,流式DMA映射的特点是DMA传输通道使用的缓冲区不是由当前驱动程序自身分配的,linux内核DMA层为设备驱动提供的建立流式DMA映射的函数。设备驱动程序必须小心负责处理可能出现的cache一致性.

2024-01-01 22:09:08 678

原创 sg_table and scatterlist

sg_table and scatterlist

2023-12-26 23:04:51 1945

原创 OpenGL VBO and VAO

【代码】OpenGL VBO and VAO。

2023-03-22 23:09:38 405

原创 LunarG Vulkan Validiation Layer

1 useful linkhttps://vulkan.lunarg.com/doc/sdk/1.3.211.0/linux/layer_configuration.html2 Configure Vulkan LayersConfiguring Vulkan Layers using Vulkan Configurator .Developers can configure layers through a graphical user interface. Vulkan Configurator

2022-04-19 19:46:20 572

原创 Framebuffer

FramebufferA Framebuffer is a collection of buffers that can be used as the destination for rendering.OpenGL has two kinds of framebuffers: the Default Framebuffer, which is provided by the OpenGL Context; and user-created framebuffers called Framebu

2022-01-19 10:10:32 376

原创 OpenGL Buffer Object

1 Buffer ObjectBuffer Objects are OpenGL Objects that store an array of unformatted memory allocated by the OpenGL context (AKA(also know as) the GPU). These can be used to store vertex data, pixel data retrieved from images or the framebuffer, and a va

2022-01-14 14:19:17 402

原创 OpenGL Context

1 OpenGL ContextAn OpenGL context represents many things.A context stores all of the state associated with this instance of OpenGL.It represents the (potentially visible) default framebuffer that rendering commands will draw to when not drawing to a fr

2022-01-13 16:49:04 457

原创 Configure and build Mesa3D

1 环境Mesa3D 21.1.4Mesa3D-demosUbuntu 20.042 配置环境sudo apt install gcc;sudo apt install g++;sudo apt install vim;sudo apt install libx11-xcb-dev;sudo apt install libxext-dev;sudo apt install libxfixes-dev;sudo apt install libxcb-glx0-dev;sudo ap

2021-08-11 14:21:48 501 1

原创 Makefile compile Error Debug

my work directory and original MakefileAfter I run it, error will happenI added the CFLAGS = -c, then it successed.

2021-07-30 16:18:36 252

原创 dma-buf

【代码】dma-buf。

2021-07-20 00:08:59 596

原创 KGDB调试内核

1 环境Ubuntu 20.04VMware Worksation 16 PlayerLinux Kernel 5.4.02 设置虚拟机2.1 准备两台虚拟机准备一台虚拟机,然后克隆一台虚拟机,下面以左边为客户端和右边为目标机展示.2.2 配置虚拟机配置串口配置客户机(左边客户端)和目标机(右边服务器端)\.\pipe\com_1配置好后,请使用如下图方式验证2.3 配置服务器端grub配置好串口后请打开服务器端grub,添加如下的信息.sudo

2021-07-14 23:14:50 631 4

原创 Linux USB驱动分析(四)

环境Linux Kernel 5.0Source Insight 3.5xHCI Spec前言接下来我们分析USB设备接入系统后的整个流程,接下来我们分析xHCI驱动流程。首先我们需要对xHCI有基本的认识.

2021-05-20 22:15:26 355

原创 Linux USB驱动分析(三)

环境Linux Kernel 5.0Source Insight 3.5USB Spec 2.0USB驱动分析(二)中,我们分析了hub_probe()函数.我们分析下,USB设备接入后,整个流程。1 背景知识The Hub Class defines one additional endpoint beyond Default Control Pipe, which is required for all hubs: the Status Change endpoint.The ho

2021-04-27 23:21:59 910

原创 Linux USB驱动分析(二)

环境Linux Kernel 5.0Source Insight 3.51 hub_probe()函数USB驱动分析(一)中,初始化并注册USB xHCI Host, 初始化并注册Root Hub, 最终调用hub_driver的hub_probe()函数.static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id){ struct usb_host_interface *desc;

2021-04-25 21:55:30 779

原创 Linux USB驱动分析(一)

1 USB总线初始化1.1 usb_init()函数在usb_init()函数中主要有如下的三个主要函数,分别注册usb总线,初始化usb hub驱动,注册usb设备通用驱动.static int __init usb_init(void){ int retval; retval = bus_register(&usb_bus_type); retval = usb_hub_init(); retval = usb_register_device_driver(&usb_ge

2021-04-24 21:55:35 1580

原创 vim使用手册

Vim 使用方法1 vimrc 配置(1)打开vimrcvim ~/.vimrc(2)填入下面的配置信息set nocompatiblefiletype offset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()Plugin 'VundleVim/Vundle.vim'call vundle#end()filetype plugin indent on"scope---------------------------------

2021-03-23 17:35:15 241

原创 Makefile

Makefile 常用规则wildcardone use of the wildcard function is to get a list of all the C source files in a directory.//获取当前目录下全部.c文件-test.c hello.c$(wildcard *.c)patsubstwe can change the list of c source files into a list of object files by replacing

2021-03-21 12:37:48 280 3

原创 PCIe Spec View (一)

PCIe Spec Overview

2021-03-18 20:55:30 4006 1

原创 字符设备驱动 (二)

1 开发环境Linux Kernel 4.18.0QEMU 5.2.0-vexpressSource Insight 3.52 并发控制linux设备驱动中存在多个进程对资源共享并发访问.因此需要对驱动并发控制进行深入分析.2.1 基本概念并发(Concurrency)指的是多个执行单元同时、并行被执行.竞态(Race Conditions):并发的执行单元对共享资源的访问则很容易导致竞态.临界区(Critical Section):每个进程中访问临界资源的那段代码称为临界区.临界

2021-02-23 14:26:07 437

原创 lseek的使用

NAMElseek - reposition read/write file offsetSYNOPSIS#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);DESCRIPTIONlseek() repositions the file offset of the open file description associated..

2021-02-02 10:14:14 210

原创 字符设备驱动 (一)

1 字符设备驱动 (一)Linux Kernel 4.18.0QEMU 5.2.0-VexpressSource Insight 3.52 字符设备驱动Linux从各异的设备中提取共性,将其划分成三大类:字符设备、块设备和网络设备。常见的字符设备有键盘、鼠标、液晶显示、打印机等。2.1 字符设备结构体在Linux内核中使用cdev描述一个字符设备struct cdev { struct kobject kobj; struct module *owner; /*所属模块*/

2021-01-27 22:06:02 294

原创 Linux Kernel编译流程 (二)

1 vmlinux研究vmlinux文件的产生, zImage和Image产生Linux Kernel 4.18.20Source Insight 3.51.1 find all target首先当我们执行sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-命令后, 默认的target是all,所以我们首先在顶层Makefile中找到all, 发现如下代码片段cfg: u-boot.cfgall: $(ALL-y) cfg $(call

2021-01-19 19:36:35 2084 3

原创 Linux Kernel 编译流程 (一)

1 .config 文件产生研究Linux Kernel .config文件的产生, 添加自己的配置Linux Kernel 4.18.20Source Insight 3.51.1 find %config当我们执行sudo make ARCH=arm vexpress_defconfig命令行后,make会进入顶层Makefile文件,执行下面的语句. 而%config依赖scripts_basic 和 ouputmakefile, 所以我问首先去看scripts_basic#SRCAR

2021-01-18 23:28:25 3385

原创 u-boot 编译流程 (一)

1 .config研究.config文件的产生流程,添加自己的配置U-Boot 2017.11Source Insight1.1 find %config当我们执行sudo make smdk5250_defconfig命令行后,make会进入顶层Makefile文件,执行下面的语句. 而%config依赖scripts_basic 和 ouputmakefile, 所以我问首先去看scripts_basic%config: scripts_basic outputmakefile FORC

2021-01-18 14:25:37 571 2

原创 u-boot 编译流程 (二)

1 U-Boot.bin研究U-Boot.bin的产生,从而进一步研究Linux内核编译流程1.1 find all target首先当我们执行sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-命令后, 默认的target是all,所以我们首先在顶层Makefile中找到all, 发现如下代码片段all: $(ALL-y) cfg$(call cmd,cfgcheck,u-boot.cfg)1.2 find $(All-y) and cf

2021-01-17 01:21:40 1401

关于磁盘结构的详细文档

详细的描述了磁盘的结构...

2017-02-16

英特尔80386程序员参考手册

英特尔80386程序员参考手册

2017-05-20

基于单片机的温湿度采集系统/VC++上位机

最全面的一个小系统,温湿度,液晶,VC++上位机,完全可以当作一个课程设计,甚至自己改改CPU,加点外设就可以当作毕业设计。较详尽的安装方法和文档 ,以及程序

2016-09-05

DHT11在液晶lcd1602显示

在编的时候用的是DS18B20的文件,,所以名字看起来像是假的,,但是我已经弄出来了,,要注意里面的接口(各个单片机开发板的接口不一样):比如DHT11的数据接口(P3^7),还有LCD1602(液晶三个控制口P2^0 P2^1 P2^2 和 P0液晶8位数据口),都要改一下。

2015-04-16

链表队列工具.rar

链表和队列工具,基于c实现,提高开发效率。优快云是全球知名中文IT技术交流平台,创建于1999年,包含原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区.

2020-12-06

C_C++_设计模式_doc.rar

C和C++和设计模式文档, 包含c和c++基础的文档,c和c++进阶的文档,设计模式基本理论和知识。(后面不用看了:--))C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,

2020-07-23

UNIX环境高级编程

UNIX环境高级编程,明了的目录,详细的内容,清晰的字迹。

2016-09-26

UNIX环境高级编程(第二版)

UNIX环境高级编程,明了的目录,详细的内容,清晰的字迹。

2016-09-26

arm汇编手册

常用指令的详细用法,清晰的目录。

2017-06-24

LINUX内核设计与实现(第二版)

带目录,内容清晰

2016-09-08

液晶1602显示18b20温度

STC89C52 液晶1602 温传18B20 已实现温度显示

2015-04-15

空空如也

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

TA关注的人

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