
Linux基础
文章平均质量分 83
BestW2Y
这个作者很懒,什么都没留下…
展开
-
[Linux 基础] -- Linux v4l2 框架分析
本文转自: Linux v4l2框架分析背景 说明:Kernel 版本:4.14; ARM64 处理器,Contex-A53,双核; 使用工具:Source Insight 3.5,Visio。一、概述V4L2(Video for Linux 2):Linux内核中关于视频设备驱动的框架,对上向应用层提供统一的接口,对下支持各类复杂硬件的灵活扩展; V4L2 框架,主要包括 v4l2-core、media framework、videobuf2 等模块,这也是本文将...转载 2021-12-20 15:00:23 · 1415 阅读 · 0 评论 -
[Linux 基础] -- eMMC 小总结
通俗的来说,eMMC = NAND 闪存 + 闪存控制芯片 + 标准接口封装。 本文大致做下面几点小结:一、MMC 与 Host 之间的连接 连接由下图可见:二、eMMC 和 NAND Flash 与 Host 的连接比较NAND Flash 直接接入 Host NAND Flash 直接接入 Host 时,Host 端通常需要有 NAND Flash Translation Layer,...转载 2021-12-09 13:52:28 · 3383 阅读 · 0 评论 -
[Linux 基础] -- Linux 内核 Makefile 分析
本文是对<嵌入式Linux应用开发完全手册> 16.2.2章节的总结,具体请查看书籍.配置文件 .config 中定义了一系列的变量, Makefile 将结合它们来决定哪些文件被编进内核, 哪些文件被编成模块, 涉及哪些子目录. 顶层 Makefile 和 arch/$(ARCH)/Makefile 决定根目录下哪些子目录, arch/$(ARCH) 目录下哪些文件和目录将被编...原创 2021-12-08 14:48:33 · 497 阅读 · 0 评论 -
[Linux 基础] -- 在 Linux 驱动中使用 gpio 子系统
在Linux驱动中使用gpio子系统 - 黄树超 - 博客园 (cnblogs.com)https://www.cnblogs.com/schips/p/linux_subsystem_using_gpio_ss.html原创 2021-12-08 10:02:21 · 689 阅读 · 0 评论 -
[Linux 基础] -- struct class 详细分析
struct classstrcut class { const char *name; struct module *owner; struct class_attribute *class_attrs; const struct attribute_group **dev_groups; struct kobject *dev_kobj; int (*dev_uevent)(struct device *dev, struct .原创 2021-12-08 10:00:07 · 425 阅读 · 0 评论 -
[Linux 基础] -- udev 和 rules 使用规则
前言:本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅,这些用户包括 Linux 最终用户、设备驱动开发人员、设备测试人员和系统管理人员等。概述:Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0,eth1,sda,sdb 等等。通过观察这些设备的内核设备名称,用户通常能知道这些转载 2021-12-07 13:51:45 · 20200 阅读 · 0 评论 -
[Linux 基础] -- sysfs、udev 和它们背后的 Linux 统一设备模型
引子 —— sysfs 诞生之前一切皆文件,这是 Linux 的哲学之一。设备当然也不例外,它们往往被抽象成文件,存放在 /dev 目录下供用户进程进行操作。用户通过这些设备文件,可以实现对硬件进行相应的操作。而这些设备文件,需要由对应的设备文件系统来负责管理。在 kernel 2.6 之前,完成这一使命的是 devfs。devfs 是 Linux 2.4 引入的一个虚拟的文件系统,挂载在 /dev 目录下。可以动态地为设备在 /dev 下创建或删除相应的设备文件,只生成存在设备的节点。然而它存转载 2021-11-11 10:18:59 · 839 阅读 · 0 评论 -
[Linux 基础] -- Linux问题分析与性能优化
排查顺序 整体情况:top/htop/atop 命令查看进程/线程、CPU、内存使用情况,CPU 使用情况; dstat 2 查看 CPU、磁盘IO、网络IO、换页、中断、切换、系统 I/O 状态; vmstat 2 查看内存使用情况,内存状态; iostat -d -x 2 查看所有磁盘的 IO 情况,系统 I/O 状态; iotop 查看 IO 靠前的进程,系统的 I/O 状态; perf top 查看占用 CPU 最多的函数,CPU 使用情况; perf record...转载 2021-11-04 14:19:03 · 164 阅读 · 0 评论 -
[Linux 基础] -- 驱动调试神器 printk 你掌握了吗?
导读 刚刚开始做Linux相关开发工作时,深感Linux内核代码庞大,要加些自己的驱动进内核代码树,常常深陷bug的泥沼难以自拔,今天来分享一下内核调试利器printk的使用心得。前面一段时间很忙,后期更文频率会渐渐回归正常频率,尽量会保证每周一到两更。感谢各位朋友的关注而没有弃我而去,我定不负厚爱,会持续输出些日常技术工作中的心得体会,如对朋友们有些许帮助,也烦请帮忙点个赞或者在看(这并不会对各位有何不利的影响哈~~~),这也是对我坚持持续输出的大大激励!prin...转载 2021-11-03 15:37:23 · 1627 阅读 · 0 评论 -
[Linux 基础] -- 深入理解 Linux 的 I/O 系统
传统的 System Call I/O 在 Linux 系统中,传统的访问方式使通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到缓存区中,然后通过 write() 方法把缓存中的数据输出到网络端口。read(file_fd, tmp_buf, len);write(socket_fd, tmp_buf, len); 下图分别对应传统 I/O 操作的数据读写流程,整个过程涉及 2 次 CPU 拷贝、2 次 DMA 拷贝、...转载 2021-11-02 16:38:29 · 162 阅读 · 0 评论 -
[Linux 基础] -- Linux 之 fstab 文件详解
前言 /etc/fstab 是用来存放文件系统的静态信息的文件。位于 /etc/ 目录下,可以用命令 less /etc/fstab 来查看,如果要修改的话,则用命令 vim /etc/fstab 来修改。 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。文件示例 一个简单的 /etc/fstab,使用内核名称标识磁盘:字段定义 /e...转载 2021-10-14 15:28:10 · 5671 阅读 · 0 评论 -
[Linux 基础] -- SELinux
一、概览1.1、什么是 SELinux:SELinux 是 Security Enhanced Linux 的缩写,字面意思是安全增强型 linux。1.2、设计目的:避免资源的误用SELinux 是由美国国家安全局 (NSA) 开发的,当初开发这玩意儿的目的是因为很多企业界发现, 通常系统出现问题的原因大部分都在於『内部员工的资源误用』所导致的,实际由外部发动的攻击反而没有这么严重。举例来说,如果有个不是很懂系统的系统管理员为了自己配置的方便,将网...转载 2021-08-03 16:38:47 · 498 阅读 · 0 评论 -
[Linux 基础] -- 一文彻底明白 Linux 中的 selinux 到底是什么
一、前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。 SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。 SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。 如果...转载 2021-08-02 16:50:25 · 933 阅读 · 0 评论 -
[Linux 基础] -- V4L2框架 - videobuf2
本文介绍在 v4l2 框架之下的数据流交互的实现与使用,主要目的是实现一个能够进行用户空间与内核空间进行数据交互、数据流格式设置、数据流 buffer 申请与释放、数据流开启与关闭的 video 设备驱动。简介 videobuf2 用于连接 V4L2 驱动层与用户层,提供数据交流的通道,它可以分配并管理视频帧数据。videobuf 层实现了很多 ioctl 函数,包括 buffer 分配、入队、出队和数据流控制。为什么要有 vdieobuf2? 因为 vide...转载 2021-07-16 14:31:26 · 1588 阅读 · 0 评论 -
[Linux 基础] -- 详细讲解 Linux 启动流程及启动用到的配置文件及脚本
一、详解 Linux 启动流程及需要使用到的配置文件POST 加电自检 --> BIOS(Boot Sequence) -> MBR(bootloader) -> Kernel ->initrd ->rootfs(/sbin/init)下面对每个启动流程做详细解释:1.1、POST(加电自检)计算机本身不执行任何程序,所以系统必须要完成自举的过程,在 CPU 的控制下,将 RAM 芯片中的某个程序映射到 ROM 地址空间,并执行其中的指令完成系统硬件健康状况转载 2021-07-14 10:12:19 · 378 阅读 · 0 评论 -
[Linux 基础] -- V4L2 实例分析 —— vivi.c 源码详解(深度好文)
本文介绍在 v4l2 框架之下的数据流交互的实现与使用,主要目的是实现一个能够进行用户空间与内核空间进行数据交互、数据流格式设置、数据流 buffer 申请与释放、数据流开启与关闭的 video 设备驱动。...转载 2021-04-19 11:22:12 · 4423 阅读 · 2 评论 -
[Linux 基础] -- v4l2 device
本文转自于:https://blog.youkuaiyun.com/u013904227/article/details/80782068本文为 V4L2 中比较容易理解的骨干结构进行介绍,涉及两个核心结构体:v4l2_device,v4l2_subdev。文章围绕这两个结构体以 Linux-4.4 内核的 omap3isp 代码为例进行相关的介绍,所谓介绍还是起到辅助作用,真真儿还是要靠 RTFSC、WTFSC。下面 [该例程] 均指的是 omap3isp 这个例程。一、V4L2 框架补充首..转载 2021-04-02 15:23:51 · 630 阅读 · 0 评论 -
[Linux 基础] -- Linux 内核中断系统(tasklet、工作队列、软中断、线程 irq)
本文转载于微信公众号:嵌入式软件开发交流;原文地址:https://mp.weixin.qq.com/s/vJCoUr8wHanF9Epvi1rKcw一、前言中断在驱动中是非常常用的,无论是外部的 GPIO 中断,还是 SPI,I2C 等发送或接收中断,都是必不可少的。所以今天来看看 Linux 中的中断处理。上面我们根据中断来源,屏蔽方式和中断入口对中断进行了简单的分类。二、中断控制器PIC:可编程中断控制器;GIC:Generic Interrupt Controller.转载 2021-03-30 11:54:11 · 677 阅读 · 0 评论 -
[Linux 基础] -- Linux 如何查询 OS、CPU、内存、硬盘信息?
本文转自于:https://www.cnblogs.com/renshengdezheli/p/13427865.html本文描述了 Linux 查询炒作系统信息,CPU 物理个数,CPU 核心数,逻辑 CPU 数,内存信息查询,硬盘信息查询。一、前言当我们接手了一台或者几台服务器的时候,首先我们有必要对服务器的基本配置有所认识,这样才可以对症下药,对以后的软件部署,系统运维会有事半功倍的效果。二、关于服务器基本配置查询服务器的基本配置一般查询操作系统,CPU,内存,硬盘,下面进行逐.转载 2021-03-29 18:10:58 · 1109 阅读 · 0 评论 -
[Linux 基础] -- Linux TTY Framework(2)_软件架构
一、前言由 “Linux TTY Framework(1)_基本概念” 的介绍可知,在 Linux kernel 中,TTY 就是各类终端(Terminal)的简称。为了简化终端的使用,以及终端驱动程序的编写,Linux kernel 抽象出了 TTY framework;对上,向应用程序提供使用终端的统一接口;对下,提供编写终端驱动程序(如 serial driver)的统一框架。本文是 Linux Framework 分析的第二篇文章将从整体架构的角度,介绍 Linux TTY framewor转载 2021-03-29 14:35:41 · 407 阅读 · 0 评论 -
[Linux 基础] -- Linux TTY framework(1)_基本概念
一、前言由于串口的缘故,TTY 是 Linux 系统中最普遍的一类设备,稍微了解 Linux 系统的同学,对它都不陌生。尽管如此,相信很少有人能回答这样的问题:TTY 到底是什么东西?我们常常挂在嘴边的终端(terminal)、控制台(console)等概念,到底是什么意思?本文是 Linux TTY Framework 分析文章的第一篇,将带着上述疑问,介绍 TTY 有关的基本概念,为后续的 TTY 软件框架的分析,以及 Linux serial subsystem 的分析,打好基础。二、终端转载 2021-03-29 10:47:38 · 268 阅读 · 0 评论 -
[Linux 基础] -- 第三课:Linux 内核对设备树的处理
一、从源头分析 -- 内核 head.S 对 dtb 的简单处理现在我们开始第一节,我们要从源头分析,uboot 将一些参数,设备树文件传递给内核,那么内核如何处理这些设备树文件呢?我们需要从内核的一个执行文件 head.S 开始分析。1.1、r0,r1,r2 三个寄存器的设置BootLoader 启动内核时,会设置 r0,r1,r2 三个寄存器:r0 一般设置为 0; r1 一般设置为 machine id(在使用设备树时该参数没有被使用); r2 一般设置为 ATAGS 或 DTB转载 2021-03-25 17:49:31 · 974 阅读 · 0 评论 -
[Linux 基础] -- udev 抓取 uevent 事件的原理分析
uevent:uevent 是通过netlink socket发送消息给用户进程,这里的应用单纯接收组播消息。udev 实现的简单代码如下: #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <linux/netlink.h> struct uevent { const char *action原创 2021-03-23 17:37:26 · 2031 阅读 · 0 评论 -
[Linux 基础] 嵌入式 Linux ---- uevent 机制:uevent 原理分析(深度好文)
简介:本文主要介绍 uevent 机制是什么,并通过代码分析使用 uevent 机制生成设备节点的过程。而本文将分为两部分,第一部分我们介绍一些预备知识和 uevent 的原理,而第二部分——通过代码介绍使用 uevent 机制创建设备节点。Linux 内核:linux-2.6.22.6所用开发板:JZ2440 V3(S2C2440A)声明:本文主要是看完韦东山老师视频并结合一些博客内容所写,因此文中可能会有其他文章中的内容,如果你觉得我的文章对你构成了侵犯,您可以告诉我,我会对文章进行转载 2021-03-23 11:49:20 · 1784 阅读 · 0 评论 -
[Linux 基础] -- 内核探究:regmap 机制
前言:regmap 机制是在 Linux 3.1 加入的新特性。主要目的是减少 I/O 驱动上的重复逻辑代码,提供一种通用的接口来操作底层硬件上的寄存器。比如,之前如果要操作 i2c 设备的寄存器,我们要调用 i2c_transfer 接口,要操作 spi 设备的寄存器,就要调用 spi_write/spi_read 等接口,如果把它们抽象为 regmap 结构,那么只要调用 regmap_read/regmap_write 就可以了。一、重要结构体内核版本:5.11。1.1、regma转载 2021-03-18 11:56:21 · 1553 阅读 · 0 评论 -
[Linux 基础] -- Linux 设备管理器 udev 详解
一、什么是 udev?udev 是 Linux Kernel 2.6 系列的设备管理器。它主要的功能是管理 /dev 目录底下的设备节点。它同时也是用来接替 devfs 及 hotplug 的功能,这意味着它要在添加/删除硬件时处理 /dev 目录以及所有用户空间的行为,包括加载 Firmware 时。udev 的最新版本依赖于升级后的 Linux Kernel 2.6.13 的 uevent 接口的最新版本。使用新版本 udev 的系统不能在 2.6.13 以下版本启动,除非使用 noudev 参转载 2021-03-18 10:59:35 · 3708 阅读 · 0 评论 -
[Linux 基础] -- Linux 时间管理
时间管理在内核中占有非常重要的地位。相对于时间驱动,内核中有大量的函数都是基于时间驱动的。内核必须管理系统的运行时间以及当前的日期和时间。首先搞清楚 RTC 在 Kernel 内的作用:Linux 系统有两个时钟:实时时钟和系统定时器一、实时时钟一个是由纽扣电池供电的 “Real Time Clock” 也叫作 RTC(实时时钟)或者叫 CMOS 时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。当系统启动时,内核通过读取 RTC 来初始化墙上时.转载 2021-02-25 16:31:19 · 187 阅读 · 0 评论 -
[Linux 基础] -- V4L2 框架 - control
本文介绍在 v4l2 框架下面的 control 控制接口,这些接口通常用来实现一些特效控制、菜单控制等等。一、简介既然涉及到视频输入,就会有很多与 ISP 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。V4L2 很贴心地为我们提供了这样一些接口以供使用(可以说是非常贴心的了),在内核里面,这些控制项被抽象为一个个的控制 ID,分别以 V4L2_CID_xxx 来命令。有许多控制函数并不是单个驱动特定的,这些通用的控制 A.转载 2021-02-25 11:07:44 · 2106 阅读 · 1 评论 -
[Linux 基础] -- V4L2 框架概述
本文开启 Linux 内核 V4L2 框架部分的学习之旅,本文仅先对 V4L2 的框架做一个综述性的概括介绍,然后接下来的文章中会对 V4L2 框架的各个子模块进行一个全面的介绍,包括每一部分的实现原理,如何使用,用在什么地方等等。预计接下来的文章大概有5篇(不带本篇)。坑已经挖好,开始吧。导读:V4L2 是专门为 linux 设备设计的一套视频框架,其主体框架在 linux 内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架。其广泛应用在嵌入式设备以及移动端、个人电脑设备上面,市面上.转载 2021-02-22 17:35:41 · 1656 阅读 · 0 评论 -
[Linux 基础] -- V4L2框架-media device
本文对 V4L2 的运行时数据流设备管理做一个详细的介绍,包括什么叫 [运行时设备管理],它是干什么用的,怎么使用等等。本文的目标是掌握 meida device 的编码使用方法以及功能运用。一、media framework1.1、简介相关的控制 API 在 Documentation/DocBook/media/v4l/media-controller.xml,本文档聚焦于内核测的 media 框架实现。注意:直接查看是看不出啥的,在内核的根目录下 make htmldocs 或者其它的.转载 2021-02-19 15:49:00 · 3731 阅读 · 1 评论 -
[Linux 基础] -- V4L2 框架分析及使用流程分析
一、概述Video4Linux2 是 Linux 内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。就像公司的老板一般都不会直接找底层的员工谈话,而是找部门经理了解情况,一个是因为底层屌丝人数多,意见各有不同,措辞也不准,部门经理会把情况汇总后再向上汇报;二是老板时间宝贵。V4L2 支持三类设备:视频输入输出设备、VBI设备和 radio 设备(其实还支持更多类型的设备,暂不转载 2021-02-18 14:46:53 · 1561 阅读 · 0 评论 -
[Linux 基础] -- Linux media 子系统
一、为什么会有 media 这样的一个子系统?在多媒体的框架中,总是复杂多样的,为了解决多媒体设备的复杂性和数据流动性,创建了 media 子系统。Media 使用一个树状结构,将多媒体数据通路的各个设备连接在一起,方便各个设备的管理和控制。二、media 框架在开机的时候,将会在 [ media-devnode.c ] 中,通过 media_devnode_init() 函数为 media 设备分配一个主设备号,次设备号从 0-255,同时注册一个名字 “media” 的 bus 总线。这个时转载 2020-12-21 19:05:28 · 2958 阅读 · 0 评论 -
[Linux 基础] -- Linux 内核中的 MFD 子系统
内核版本为5.1.3转载 2020-12-17 16:15:23 · 1495 阅读 · 0 评论 -
[Linux 基础] -- Linux内核高精度定时器hrtimer使用实例
一、内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或者内核驱动,以下学习使用 hrtimer(high resolution timer)高精度定时器。二、hrtimer_init 函数初始化定时器工作模式。which_clock 可以是 CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_BOOTTIME 中的一种,mode 则可以是相对时间 HRTIMER_MODE_REL,也可以是绝对时间 HRTIME转载 2020-12-17 11:45:54 · 747 阅读 · 0 评论 -
[Linux 基础] -- Linux 内核中的 GPIO 系统之(2):pin control subsystem
一、pin control subsystem 的软件框架图1、功能和接口概述一般而言,学习复杂的软件组件或者软件模块是一个痛苦的过程。我们可以把我们要学习的那个软件 block 看成一个黑盒子,不论里面有多么复杂,第一步总是先了解其功能和外部接口特性。如果你愿意,可以不去看其内部实现,先自己思考其内部逻辑,并形成若干问题,...转载 2020-09-30 15:45:38 · 504 阅读 · 0 评论 -
[Linux 基础] -- 别再说你不懂 Linux 内存管理了,10张图给你安排的明明白白!
前提约定:本文讨论技术内容前提,操作系统环境都是 X86 架构的 32 位 Linux 系统。虚拟地址即使是现代操作系统中,内存依然是计算机中很宝贵的资源,看看你电脑几个T固态硬盘,再看看内存大小就知道了。为了充分利用和管理系统内存资源,Linux 采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有 4GB 互不干涉的虚拟地址空间。进程初始化分配和操作的都是基于这个 "虚拟地址",只要当进程需要实际访问内存资源的时候才会建立虚拟地址和物理地址的映射,调入物理内存页。打个不是很恰当的比方转载 2020-05-29 18:06:10 · 714 阅读 · 0 评论 -
[Linux 基础] -- Linux 内存映射 mmap 原理分析
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。原理首先,“映射” 这个词,就和数学课上的 “一一映射” 是一个意思,就是建立一种一一对应关系,在这里主要是指硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应,如图1中过程1所示。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存转载 2020-05-27 19:58:41 · 364 阅读 · 0 评论 -
[Linux 基础] -- Pinctrl 子系统之一了解基础概念
一、Linux Pinctrl 子系统简介在许多 soc 内部都包含有 pin 控制器,通过 pin 控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。在软件方面,Linux 内核提供了 pinctrl 子系统,目的是为了统一各 soc 厂商的 pin 脚管理。二、Linux Pinctrl 子系统提供的功能1、管理系统中所有的可以控制的 pin,在系统初始化的时候,枚举所有可...转载 2020-04-29 14:27:19 · 473 阅读 · 0 评论 -
[Linux 基础] -- Linux DRM(三)RK 平台 DRM 代码分析 - Rockchip
一、概览不知道大家是否还记得,之前我有引用 Wiki 中对 DRM 的介绍,这里我们再回顾一下:DRM 由两个部分组成:一是 Kernel 的子系统,这个子系统对硬件 GPU 操作进行了一层框架封装。二是提供了一个 libdrm 库,里面封装了一系列 API,用来进行图像显示。整体来看和 Android 上所采用的 Direct Frame Buffer 差不多。Android Kernel ...转载 2020-04-27 17:30:26 · 9491 阅读 · 1 评论 -
[Linux 基础] -- Linux DRM (二) 基本概念和特性 - Rockchip
一、楔子上篇文章中我们有讲过 DRM 是 Linux 下的图形渲染架构,用来管理显示输出、图层合成与更新、内存管理、分辨率设置等等功能的一套显示管理框架。应用程序可以直接操纵 drm 的 ioctl 或者是用 framebuffer 提供的接口进行显示相关操作。后来大家觉得这样太 Low 了,干脆封装成一个库吧。于是 libdrm 诞生了,它是一个库,其中提供了一系列友好的控制封装,让我们可以...转载 2020-04-26 18:04:51 · 3589 阅读 · 0 评论