
kernel
文章平均质量分 56
maze.ma
向wuxiaowen学习!!!
向何小龙学习!!!
展开
-
Linux:tools:dmesg
maze@maze-VirtualBox:~$ dmesg --versiondmesg from util-linux 2.34maze@maze-VirtualBox:~$ dmesg --helpUsage: dmesg [options]Display or control the kernel ring buffer.Options: -C, --clear clear the kernel ring buffer //清空dm.翻译 2021-05-09 10:12:19 · 181 阅读 · 0 评论 -
【linux】Linux kernel uapi header file(用户态头文件)
uapi目录的创建原因Linux在3.7以后把很多header file移到 include/uapi或是arch/xxxx/include/uapi下,为了解决include recursive(循环包含头文件)的问题。英文参考文档:https://lwn.net/Articles/507794/解决include recursive问题的方法例如:在A.h中inline function时发现里面用到的某些struct定义在B.h中,而B.h中又有inline function需要用到A.转载 2020-05-18 10:48:27 · 2999 阅读 · 0 评论 -
6.51 Getting the Return or Frame Address of a Function
6.51 Getting the Return or Frame Address of a FunctionThese functions may be used to get information about the callers of a function.Built-in Function:void *__builtin_return_address(unsigned in...转载 2020-04-16 14:11:13 · 332 阅读 · 0 评论 -
ION基本概念介绍和原理分析[转]
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;...转载 2020-04-23 18:16:17 · 3520 阅读 · 0 评论 -
kernel:container_of()函数简介
container_of(A, B,C)return B的地址。运算逻辑A-C=B.A是一个地址,C是size,B是地址。实际上container_of(ptr, type,member)判断ptr 与 member 类型是否相同 计算member的size大小,结构体的起始地址 = (type *)((char *)ptr - size) (注:强转为该...原创 2019-12-02 21:08:17 · 398 阅读 · 0 评论 -
Linux Kernel Debugging Introduction
Sanjeev Sharma BlogA fine WordPress.com siteDebug kernel panicsDebugging Analysis of Kernel panics and Kernel oopses using System Map:4Linux Kernel Debugging Introduction:There are various wa...翻译 2019-12-02 16:33:01 · 1312 阅读 · 0 评论 -
kernel:driver_learn_summary
Sysfs以及设备模型Sysfs被加载在 /sys/目录下,它的子目录包括1)Block:在系统中发现的每个块设备在该目录下对应一个子目录。每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面属性,如:设备大小。(loop块设备是使用文件来模拟的)2)Bus:在内核中注册的每条总线在该目录下对应一个子目录,如: ide pci scsi usbpcmcia 其中每个总线目录内又包含两...原创 2016-11-25 09:31:51 · 3245 阅读 · 0 评论 -
kernel:tasklet schedule isr 关系
前三者的联系在于中断子系统tasklethttp://www.kuqin.com/shuoit/20140104/337421.html 讲述了什么是tasklethttp://blog.youkuaiyun.com/lizuobin2/article/details/51793911 这篇讲的比较好,把中断对应的机制分的很详细;但是只是做了一个详细的划分,机制原理讲述不清同一个tasklet不能同时...原创 2016-07-28 14:12:54 · 1266 阅读 · 0 评论 -
kernel:最小子系统+ramdisk+initrd 在深入
ramdisk是一种基于内存的虚拟文件系统,通常用于放置内核的中间数据。而initrd全称为"boot loader initialized RAM disk",也就是由启动加载器所初始化的RamDisk设备,它的作用是完善内核的模块机制,让内核的初始化流程更具弹性;内核以及initrd,都由bootloader在机子启动后被加载至内存的指定位置,主要功能为按需加载模块以及按需改变根文件系统。...原创 2016-07-22 14:29:28 · 1560 阅读 · 0 评论 -
hotplug:软件+硬件 学习总结
Q:热插拔A:一个完整的热插拔系统包括热插拔系统的硬件,支持热插拔的软件和操作系统,支持热插拔的设备驱动程序和支持热插拔的用户接口。硬件支持:插入,先数据,后电源;拔出,先电源,后数据uevent, user space event. 内核与用户空间的一种通信机制http://www.wowotech.net/linux_kenrel/uevent.html 主要讲述的是头文件热插拔事...原创 2016-07-13 11:02:22 · 2732 阅读 · 0 评论 -
kernel:论宏定义 #define 摘要
gcc和Linux内核在平行的发展; 先看一个实例 linux-3.0\fs\proc\Kcore.c#define DUMP_WRITE(addr,nr) do { memcpy(bufp,addr,nr); bufp += nr; } while(0)为什么不定义成 #defi...原创 2015-10-23 16:17:56 · 1451 阅读 · 0 评论 -
kernel:linux_module初学回顾
最近接到hr的实习面试通知,是一份内核模块编写的实习吧。(其实这也是我最喜欢从事的工作,因为我很喜欢kernel) 因为明天就要去面试了。这两天重新熟悉了一下模块的编写。闲来无事,随便写写以备以后再次重温,哈哈 感觉人的热情总是会改变的,看了一段时间内核,看源码看的头疼,于是乎转向网络安全去看iptables等防火墙协议去了(以至于电...原创 2015-10-18 14:14:23 · 629 阅读 · 0 评论 -
kernel:堆(heap)和栈(stack)区别
简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap...转载 2015-08-21 16:11:48 · 1154 阅读 · 0 评论 -
kernel:编写你的第一个Linux内核模块(目前校对到杂项设备)
想要开始黑掉核?没有线索不知道如何开始?让我们向你展示如何做… 内核编程通常被视为黑魔法。在Arthur C Clarke的意义上说,它可能是。Linux内核与用户空间有很大的不同:抛开漫不经心的态度,你要格外小心,因为在你代码中的一个小小的bug都会影响整个系统。这里没有简单的方法来做浮点运算、堆栈既固定又小,你写的代码总是异步所以你需要考虑并发性。尽管如此,Linux内核是一个非常大而复杂...翻译 2015-08-18 15:14:39 · 1954 阅读 · 0 评论 -
kernel:关于linux内核重要文件的基本描述-续
0.1 math-emulation.c 程序该目录里应该包含数学仿真代码。目前仅产生一个信号。0.2 bitmap.c 程序该程序主要用于处理 i 节点和逻辑块(磁盘块或区段)的位图 i节点即inode0.3inode.c 程序该程序含有处理 i 节点的函数。0.4 buffer.c 文件该文件中的函数主要用于对设备高速缓冲的操作和处理。空闲缓冲区链表中的缓冲区,...转载 2015-08-11 10:41:52 · 454 阅读 · 0 评论 -
kernel:关于linux内核重要文件的基本描述
linux/Makefile 文件这个Makefile文件的主要作用是指示make程序最终使用独立编译连接成的tools/目录中的build执行程序将所有内核编译代码连接和合并成一个可运行的内核映像文件 image。具体是对 boot/中的bootsect.s、setup.s 使用 8086 汇编器进行编译,分别生成各自的执行模块。再对源代码中的其它所有程序使用 GNU 的编译器 gcc/gas...转载 2015-08-10 19:02:40 · 740 阅读 · 0 评论 -
kernel:阅读linux内核需要的名词注释
IDT:中断描述符表(Interrupt Descriptor Table,IDT)将每个异常或中断向量分别与它们的处理过程联系起来。GDT:全局描述符表,在英特尔x86系列处理器的80286起,为了定义的特点使用不同的存储区,在程序执行期间,包括基地址,大小和访问权限,如可执行可写。LDT:局部描述符表(LDT --- Local Descriptor Table)是保护模式下存储器寻址...原创 2015-08-04 19:53:39 · 767 阅读 · 0 评论 -
kernel:进程03
每个进程都有一组相关的资源限制来指定进程能使用的系统资源数量对当前进程的资源限制存放在current->signal->rlim字段rlim_cur字段是资源的当前资源限制进程恢复执行前必须装入寄存器的一组数据称为硬件上下文进程切换只发生在内核态,在执行进程切换之前,用户态进程使用的所有寄存器内容都意已保存在内核态堆栈上每个进程切换由两部分组成:切换页全局目录以...原创 2015-07-31 16:04:21 · 472 阅读 · 0 评论 -
kernel:进程02
运行队列链表把处于TASK_RUNNING状态的所有进程组织到一起等待队列表示一组睡眠的进程,当某一条件变为真时,由内核唤醒他们,等待队列由双向链表实现睡眠进程分为两种,互斥进程(等待队列元素的flags字段为1)由内核有选择地唤醒,非互斥进程(flags值为0)总是由内核在事件发生时唤醒等待访问临界资源的进程就是互斥进程;等待相关事件的进程是非互斥的每个等待队列链表中的一个元素其...原创 2015-07-30 15:38:58 · 1071 阅读 · 0 评论 -
kernel:进程01
进程是程序执行时的一个实例。你可以把他看做充分描述程序已经执行到何种程度的数据结构的汇集。完全没有用户空间,内核线程共享用户空间,用户线程一个进程必定同时又是一个内核线程task_struct通过pidhash_next与pidhash_pprev两个指针连入到杂凑表的某个队列中线性队列的第一个建立的进程为init_task,这个进程是所有进程的总根,这个线性队列就是以init...原创 2015-07-28 19:27:29 · 699 阅读 · 0 评论 -
tools:oproflie[安装与使用]
./configure的时候,1.缺少popt库-->源码安装popt-1.14.tar.gz2.缺少liberty库--> liberty其实是binutil-dev里的一个库,sudo apt-get install binutil-dev即可。0.引言基于DPDK的发包工具的性能今天已经达到双向1900Wpps了,比昨天又高了200Wpps,正是得益于oPr...转载 2015-05-13 21:28:31 · 1055 阅读 · 0 评论 -
kernel:解压vmlinuz和解压initrd[initramfs]
有时就算只得到一个Linux kernel的rpm包或者直接是编译后的vmlinuz和initrd的binary文件,也需要了解其中的一些细节,可能需要去查找这些binary有没有将我想要的patch编译进去。所以,就有了解压vmlinuz和initrd的需求,记录一下其方法吧。1. 解压vmlinuz:vmlinuz是采用 gzip 压缩的,但它不仅是一个压缩文件,而且在这两个文件的开头...转载 2015-05-13 12:21:24 · 2343 阅读 · 0 评论 -
display:qualcomm-drm-kms
1.架构图1.App或者GUI tool发起绘画请求,最终经过libdrm到kernel驱动GPU进行渲染操作。2.GPU将渲染结果通过memory最终传给上层。3.渲染的一张张结果[多张不同图层]经过kms,displayconntroller合成一张图装换成合适的数据格式最终输出到屏幕上。a.高通方面的源码路径如下kernel/driver/g...原创 2019-05-13 19:28:56 · 6237 阅读 · 1 评论 -
Display中的Component System
OS: Android 7.1Board: Firefly-RK3399Kernel: v4.4.55关于component system,下面是作者的一段话:Subsystems such as ALSA, DRM and others require a single card-leveldevice structure to represent a subsystem. Howe...转载 2019-05-09 17:04:47 · 1144 阅读 · 0 评论 -
lcd:高通lcd移植文档(部分)
环境:IC 8937高通关于lcd提供的完整的工具包kernel部分1.excel :80-NH713-1_R_DSI_Timing_Parameters_User_Interactive_Spreadsheet2.xml : device/qcom/common/display/tools/panel_xxx_xxx_xx_.xml主要修改画红圈部分。h_por...原创 2018-11-12 19:46:12 · 2733 阅读 · 3 评论 -
display:kms-panel-4.14kernel
Panel硬件上对应屏幕本身。Makefiledrm-$(CONFIG_DRM_PANEL) += drm_panel.odrm_kms_helper-y:drm_panel_helper.o 没找到对应函数drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.oobj-y...原创 2019-05-20 20:41:47 · 2946 阅读 · 0 评论 -
display:kms-connector-4.14kernel
DOC: overviewIn DRM connectors are the general abstraction for display sinks, and includeals fixed panels or anything else that can display pixels in some form. Asopposed to all other KMS objects...原创 2019-05-31 13:50:27 · 912 阅读 · 8 评论 -
display:kms-bridge-4.14kernel
https://bootlin.com/doc/training/graphics/graphics-slides.pdf/** * struct drm_bridge - central DRM bridge control structure */struct drm_bridge { /** @dev: DRM device this brid...原创 2019-05-31 16:56:47 · 1477 阅读 · 2 评论 -
Linux GPU Driver Developer’s Guide
总览该框架以基于Wayland的Windowing system为例,描述了linux graphic系统在DRI框架下,通过两条路径(DRM和KMS),分别实现Rendering和送显两个显示步骤。1)Application(如3D game)根据用户动作,需要重绘界面,此时它会通过OpenGL|ES、EGL等接口,将一系列的绘图请求,提交给GPU。a)OpenGL|ES、EG...翻译 2019-05-07 16:54:01 · 8307 阅读 · 1 评论 -
SMMU-System Memory Management Unit
在计算机领域,输入输出内存管理单元(英语:input–output memory management unit,缩写IOMMU)是一种内存管理单元(MMU),它将具有直接記憶體存取能力(可以DMA)的I/O总线连接至主内存。如传统的MMU(将CPU可见的虚拟地址转换为物理地址)一样,IOMMU将设备可见的虚拟地址(在此上下文中也称设备地址或I/O地址)映射到物理地址。部分单元还提供内存保护功能,...转载 2019-04-29 10:51:51 · 2081 阅读 · 0 评论 -
kernel:linux中Oops信息的调试及栈回溯
=============================================================================原文地址:http://blog.micro-studios.com/?p=615#comment-1069看后感想:這点比 ldd3上讲的都仔细2012年11月29日11:24:17:有BUG_ON就不用反汇编了。。。2012年...转载 2018-01-03 17:17:16 · 297 阅读 · 0 评论 -
kernel:Linux 遇到 kernel panic 后可自动重启
现在的 Linux 比10年前要成熟的多,但有时候还是会出现莫名其妙、无法解释的 kernel panic 情况。对于大部分 Linux 用户来说出现 kernel panic 重启一下就可以了,但是对于系统管理员和那些做虚拟主机、共享主机、OpenVZ VPS 主机的 hosting 服务商来说出现未知的 kernel panic、导致系统挂掉可能就不太友好,如果没有 KVM over IP 的...转载 2018-01-11 10:05:03 · 1992 阅读 · 5 评论 -
[驱动开发]如何获取ext_CSD寄存器的值
以获取fw_version为例,也就是获取ext_CSD[261:254]的值: kernel/include/linux/mmc/card.hstruct mmc_ext_csd{+u8 raw_fw_version[8]; /*254 - 8bytes*/} kernel/include/linux/mmc/mmc.h+#define EXT_CSD_FW_VE...转载 2018-01-23 16:53:54 · 4200 阅读 · 0 评论 -
Android中kernel内核模块编译执行
Author: GeneBlue0X01 前言内核驱动是漏洞的高发区,了解Android驱动代码的编写是分析、利用驱动漏洞的基础。本文以一个“hello”驱动为例,简单介绍内核驱动编写、编译的基本过程,包括内核模块的内建编译和动态加载方式的编译。0X02 编写在./goldsifh/drivers文件夹下新建hello目录,在hello目录中新建hello.c文件:#incl...转载 2018-02-22 11:15:11 · 1848 阅读 · 0 评论 -
UART的RTS和CTS
在RS232中本来CTS与RTS有明确的意义,但自从贺氏(HAYES)推出了聪明猫(SmartModem)后就有点混淆了。在RS232中RTS与CTS是用来半双工模式下的方向切换;HAYES Modem中的RTS,CTS是用来进行硬件流控的。通常UART的RTC、CTS的含义指后者,即用来做硬流控的。硬流控的RTS、CTS:RTS(Require To Send,发送请求)为输出信号,用于指示...转载 2018-06-15 13:55:29 · 1599 阅读 · 0 评论 -
I2C从器件地址
指南针芯片和加速度、角加速度芯片用到了I2C通信。其中I2C的从器件地址(我只用到了7位的)的组成如下:1byte = 7bit地址 + 1bit读写标志注:1bit读写标志中,0-发送数据(写),1-请求数据(读)。 有的芯片手册上给的地址包括了1bit读写标志,有的数据手册上给的地址不包括1bit读写标志。举例如下:(1) 3轴数字指南针芯片HMC5881L(3-Axis ...转载 2018-11-05 10:39:31 · 6035 阅读 · 0 评论 -
lcd 调试经验
4.2.1开机时,在开机logo和开机动画之间会闪一下屏 现象分析:开机时,在kernel起来前是LK在支持LCD的显示,kernel起来后会关掉LK那边的电源和clk,然后打开 kernel这边的电源和clk等,这个时候如果点亮背光的接口的调用比LCD初始化接口的调用早,就会引起屏幕闪烁一下的现象 解决方法:调整背光接口和LCD...转载 2018-11-09 14:52:04 · 2595 阅读 · 0 评论 -
linux:内核模块之间通信:EXPORT_SYMBOL
实例如上,功能:声明在audio_wake.c里面的函数可以在gpio_keys.c里面使用。--- a/drivers/input/misc/audio_wakeup.c+++ b/drivers/input/misc/audio_wakeup.c@@ -13,6 +13,8 @@ struct audio_wakeup_data { struct input_dev...原创 2018-11-18 14:13:27 · 1139 阅读 · 0 评论 -
kernel:dts&gpio几种常见设定的pinctrl配置
pinctrl的配置file是<project>.dts备注:配置是以mt6735上gpio84举例的1.配置成输入上拉&pio {test_pull_up: test_pull_up { pins_cmd_dat { pins = <PINMUX_GPIO84__FUNC_GPIO84>; slew-rate = ...原创 2018-11-20 18:42:10 · 8295 阅读 · 0 评论 -
kernel:Bringup ti SN65DSI83-Q1/SN65DSI84-Q1
SN65DSI83是一个mipi转lvds的单路对单路转换器。-Q1个人认为是车规级产品#SN65DSI84是mipi转lvds单路对双路转换器#需要注意的是mipi clock以及lvds clock的计算方法. [github的imx6qp.sh上面有详解https://github.com/mazelinux/PATEO/blob/master/imx/imx6qp_readme.s...原创 2018-12-01 23:57:07 · 2838 阅读 · 5 评论