![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核相关
文章平均质量分 83
qq69696698
这个作者很懒,什么都没留下…
展开
-
Linux设备驱动程序的基本知识
设备驱动程序用作硬件与使用硬件的应用程序(用户代码)或内核之间的转译器,它将硬件的工作细节隐藏于幕后,从而起到简化编程的作用。编程人员可以利用一套标准化调用方法(系统调用)编写高级应用程序代码,而不必关心它将控制的特定硬件或运行于其上的处理器。借助定义明确的内部应用程序编程接口(内核API),应用程序代码便可以通过与软件上层结构或底层硬件无关的标准方式与设备驱动程序实现接口。 针对特定处理器原创 2012-04-16 16:00:00 · 2645 阅读 · 0 评论 -
open函数的流程
1. 引言 从事Linux环境工作2年有余,一直懵懵懂懂,1年前拜读了《莱昂氏UNIX源代码分析》一书,感觉自己的学习道路漫漫且修远。最近受chinaunix的精华文帖启发,拟将近来的部分内核调用分析笔记拿出来与各前辈先进共同探讨学习,以壮个人学习之路。 本部分主要讲述的是文件I/O操作的2.6.11内核版本实现,包括了主要的数据结构、宏定义和函数流程原创 2012-08-13 21:36:41 · 2431 阅读 · 1 评论 -
i2c相关知识
在内核中有两种方式的i2c设备驱动的编写方法,一种legacy方式,一种是newstyle方式。韦东山视频和宋宝华书籍里讲解的都是legacy方式,但是在新版本内核中,legacy方式的i2c设备驱动已经编译不过去了,因为几个主要的内核函数都已经不存在了,即内核不再支持legacy方式的i2c设备驱动。下面讲解下newstyle方式的i2c设备驱动。 一>定义并填充i2c_driver:原创 2012-08-05 19:15:55 · 1032 阅读 · 0 评论 -
linux poll函数
# include int poll ( struct pollfd * fds, unsigned int nfds, int timeout); 和select()不一样,poll()没有使用低效的三个基于位的文件描述符set,而是采用了一个单独的结构体pollfd数组,由fds指针指向这个组。pollfd结构体定义如下: # include struct pollfd {原创 2012-04-18 14:38:44 · 13956 阅读 · 0 评论 -
使用 /proc 文件系统来访问 Linux 内核的内容
最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。 /proc 文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,也可以用作一种从用户空间向内核发送信息的手段。实际上我们并不会同时需要实现这两点,但是本文将向您展示如何配置这个文件系统进行输入和原创 2012-04-17 09:58:18 · 835 阅读 · 0 评论 -
ION memory allocator
什么是ION ? 我的理解就是google在android4.0引入的一种内存管理器,来替代之前各个芯片厂家(高通、Intel、TI等)自己的方案.以下是网上找到的: it has become clear that PMEM is considered obsolete and will be replaced by the ION memory manager . ION is a原创 2012-04-16 16:10:50 · 2759 阅读 · 0 评论 -
platform设备驱动
1.1 platform总线、设备与驱动 在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,原创 2011-12-19 10:13:26 · 604 阅读 · 0 评论 -
linux内核可装载模块(lkm)传参机制 module_param
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。 使用下面的宏时需要包含头文件。 通过宏module_param()定义一个模块参数: module_param(name, type, perm); name既是用户看到的参数名,又是模块内接原创 2012-07-19 11:38:00 · 1146 阅读 · 0 评论 -
引导加载程序之争:了解 LILO 和 GRUB
简介: 从普通的桌面用户到 Linux® 系统管理员,大部分 Linux 用户都使用过一种名为引导加载程序的工具。此类工具的不同变种会提供不同层次的支持和功能。在很多情况下,Linux 发行版默认安装的引导加载程序并不总是适合需要;每个引导加载程序的默认设置也是如此。在本文中,Laurence Bonney 讨论了两个流行的引导加载程序 —— LILO 和 GRUB —— 的优点和缺点,并建议了很原创 2012-02-08 11:25:47 · 571 阅读 · 0 评论 -
嵌入式Linux学习漫谈之Linux系统
事物总有个核心,复杂的事物总可以模块化、层次化, 嵌入式Linux也如此。学习嵌入式Linux困难,主要因为涉及知识和概念过多,即比较复杂,所以学习嵌入式Linux的就需要找到核心,需要模块化,需要进行层次划分。 嵌入式Linux系统做模块化处理就是可划分为Bootlo转载 2011-08-05 10:14:59 · 500 阅读 · 0 评论 -
Android 4.0 触摸屏驱动调试记录 及 git patch相关内容
软件平台:Android 4.0 问题描述: 今天在调试电容屏驱动,将Android 2.3的驱动代码直接移植到4.0中,发现触摸屏不能用; 由于硬件已事先在Android2.3上验证过,首先排除了硬件上的问题;触摸屏驱动也在2.3平台上能正 常使用,为什么移植到4.0上就出现问题了呢? 测试步骤: 1、getevent查看事件发现事件上报正常; 2、加串口打印,发现触摸点坐原创 2012-02-06 10:14:48 · 2115 阅读 · 0 评论 -
I2C硬件原理及驱动
I2C总线是由Philips公司开发的两线式串行总线,用于连接微控制器和外围设备。 I2C总线支持多主控模式,任何能够进行发送和接收的设备都可以成为主设备。主控能够控制数据的传输和时钟频率,在任意的时刻只能有一个主控。 组成I2C总线的两个信号为数据线SDA和时钟线SCL。为避免总信号线的混乱,要求各设备连接到总线的输出端必须是开漏输出或集电极开路输出的结构。根据这种结原创 2011-12-16 15:39:15 · 2897 阅读 · 1 评论 -
Linux下串口参数VTIME和VMIN
VTIME指定了等待的时间,VMIN指定了读取字符的最小数量。 它们不同组合地取值会得到不同的结果,分别如下: 1.当VTIME>0,VMIN>0时。read调用将保持阻塞直到读取到第一个字符,读到了第一个字符之后开始计时,此后若时间到了VTIME或者时间未到但已读够了VMIN个字符则会返回;若在时间未到之前又读到了一个字符(但此时读到的总数仍不够VMIN)则计时重新开转载 2011-06-23 13:51:00 · 1007 阅读 · 0 评论