Linux 输入子系统笔记

Linux Input System

内核的输入子系统将内核中各种零散的输入驱动整合起来,并给它们提供统一的用户层接口和驱动接口。输入子系统主要由Input Device Driver 和Input Event Driver 以及Input Core三个部分组成。

Input system summary

  • Input Device Driver 负责和具体的输入硬件驱动交互,根据硬件信号生成硬件事件
  • Input Event Driver 负责将硬件事件转换为用户空间可以识别的事件信号,和用户空间交互
  • Input Core 和其他子系统一样,核心模块负责提供公共算法

Posted by vmlinz Mon, 04 Jul 2011 14:47:27 +0800


Notes on Linux I2C

Linux i2c 笔记

i2c 总线简介

i2c(IIC, 读作/ˈaɪ skwɛərd ˈsiː/或者/ˈaɪ tuː ˈsiː/) 的意思是inter IC,也就是芯片间通信。i2c 总线是由Philips 在80年代早期设计的,用来实现同一个电路板上的各个芯片之间简易通信的总线。

Posted by vmlinz Wed, 29 Jun 2011 14:57:23 +0800


网络设备驱动基础笔记

网络设备驱动基础

网络设备驱动和块设备驱动的功能比较类似,都是发送和接收数据包(数据请求)。当然它们实际是有很多不同的,首先块设备在/dev目录下有设备节点,而网络设备没有这样的设备入口。read,write等常规的文件接口在网络设备下也没有意义。

最大的区别在于:块设备只响应内核的数据请求;而网络设备驱动要异步地接收来自外部的数据包。简单地说,块设备驱动是被要求传输数据而网络设备是主动请求传输数据。

网络设备驱动还需要支持设置地址,修改传输参数等等这样的操作,所以网络设备驱动的api需要提供这些接口。

Posted by vmlinz Sun, 19 Jun 2011 21:41:43 +0800


arm linux 系统调用实现

arm linux 系统调用实现

In this article we will dive into system call interface implementation in arm linux(with gnu eabi).我们将从bionic中的open函数开始追溯arm linux的系统调用实现(使用gnu eabi)。

Posted by vmlinz Thu, 19 May 2011 18:17:35 +0800


GCC 帮助系统文档

使用GCC 帮助系统

前面在使用gcc 帮助的时候老是找不到自己想要的信息,而且手册巨长(有超过10^4页)。于是就RTFM找到一些使用gcc 帮助系统找到自己需要信息的方法,其实就是gcc 手册的帮助部分的内容。大家还有什么技巧都来讲讲,交流中学习。

Posted by vmlinz Sun, 15 May 2011 18:49:42 +0800


Learn Arm Assembly

notes on arm assembly

学习一种计算机体系结构的最好方法就是学习它的汇编 -- anonymous

Posted by vmlinz Fri, 13 May 2011 21:51:15 +0800


Slab Allocator简介

Slab Allocator(对象缓存分配)

Posted by vmlinz Wed, 04 May 2011 17:05:29 +0800


Linux Memory Management Notes

Linux 内存基础

地址类型

linux内核中有许多种不同的地址类型

  • 用户虚拟地址 用户空间看到的常规地址,通过页表可以将虚拟地址和物理地址映射起来
  • 物理地址 用在cpu和内存之间的地址叫做物理地址
  • 总线地址 外围总线和内存之间的地址叫做总线地址。通常他们和物理地址相同
  • 内核逻辑地址 内核的常规地址空间,必定有对应的物理内存与之映射。kmalloc返回的就是内核逻辑地址
  • 内核虚拟地址 内核虚拟地址和内核逻辑地址的相同之处在于,他们都将内核空间的地址映射到物理内存上。但是内核虚拟地址不一定是线性的和一对一的。vmalloc返回的是虚拟地址。

Posted by vmlinz Tue, 03 May 2011 15:15:32 +0800


linux内核延时操作

linux内核延时操作

系统为了实现中断的快速处理,将中断处理程序分为处理中断请求的上半部和延时处理逻辑和I/O的下半部(buttom halves)。下半部的主要实现机制有两种:tasklet和workqueue。

Posted by vmlinz Thu, 28 Apr 2011 17:30:46 +0800


linux 设备驱动模型笔记

Linux device driver model

overview

linux 设备模型的目的是为内核构建统一的模型,从而使系统有一般性的描述。

设备模型的几个主要任务:

  • 电源管理和系统关机:设备模型使得操作系统能够以正确的顺序遍历关闭系统硬件
  • 和用户空间进行通讯:sysfs虚拟文件系统的实现和设备模型密切相关,并向用户空间展现了系统的结构
  • 设备模型:维护设备驱动的体系化数据机构
  • 对象的生命周期:设备模型的创建需要一系列的机制来处理对象的生命周期、对象之间的关系以及这些对象在用户空间的表示

Posted by vmlinz Sun, 17 Apr 2011 18:11:09 +0800