linux driver
文章平均质量分 89
junzhang1122
这个作者很懒,什么都没留下…
展开
-
平台设备+中断+定时综合例子
这是一个关于按键点亮led灯的综合例子,原创 2014-11-23 14:35:00 · 459 阅读 · 0 评论 -
Linux内核通知链原理及机制
一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会原创 2016-02-27 23:43:49 · 341 阅读 · 0 评论 -
Linux LCD驱动分析
一.LCD屏理论1.1 LCD屏基本概念我们知道,诸如PCI、I2C和USB等外围设备总线都来自于系统PC机的南桥,今天我们看到的视频控制器则来自于北桥。LCD主要由TN(扭转向列型)、STN(超扭转向列型)、DSTN(双层超扭曲向列阵)和TFT(薄膜式晶体管型)四种显示器,许多MCU内部直接集成了LCD控制器,通过LCD控制器可以方便地控制STN和TFT屏,其中TFT屏是原创 2016-01-04 13:57:48 · 540 阅读 · 0 评论 -
USB驱动结构分析
drivers\usb\usb-skeleton.cmodule_usb_driver(skel_driver) //是一个宏...int usb_register_driver(struct usb_driver *new_driver, struct module *owner,const char *mod_name)-->driver_register(&new原创 2015-12-12 13:45:13 · 588 阅读 · 0 评论 -
内核通知链原理及机制
声明:此原创非彼原创,资料来源于网络,只是经过加工整理罢了。如果引用了你的资料并没有说明出处,敬请原谅!仅供学习参考。一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户原创 2015-10-06 22:43:44 · 355 阅读 · 0 评论 -
Linux进程调用原理
Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效; 2.加强交互性能:在系统相当的负载下,也要保证系统的响应时间; 3.保证公平和避免饥渴; 4.SMP调度:调度程序必须支持多处理系统; 5.软实时调度:系统必须有转载 2015-08-15 22:56:36 · 1415 阅读 · 0 评论 -
linux块设备驱动
字符设备与块设备I/O操作有一下不同:1:块设备只能以块为单位接受输入和返回输出,而字符设备以字节为单位。大多数设备是字符设备,因为他们不需要缓冲而且不以固定块大小进行操作。2:块设备对应I/O操作有对应的缓冲区,因此他们可以选择以什么顺序进行访问,字符设备无缓冲并且直接进行读写3:字符设备只能顺序的读写,而块设备能够随机的访问。弄懂Linux块设备驱动程序,必须理解块设备原创 2015-05-07 22:55:11 · 537 阅读 · 0 评论 -
Linux驱动之input子系统
input子系统主要应用在 TP,Sensor,和一些按键之类的驱动中,对于驱动工程师来说,写input设备驱动工作量很少,只要是分别一个input_device结构体然后设置事件,当有事件发送的时候上报事件就可以,当然,还是要理清input子系统的框架,这个很重要,以下是我个人对input子系统的理解。input子系统也主要分为三次,input核心层(input.c),input设备层(自己原创 2015-05-06 15:55:56 · 351 阅读 · 0 评论 -
数据段、代码段、堆栈段、BSS段的区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包转载 2015-05-05 23:18:28 · 367 阅读 · 0 评论 -
Linux驱动之i2c
如果应聘Linux驱动的工作岗位,面试官一般就会问你i2c驱动程序框架,下面就以我个人的理解来谈谈i2c驱动程序框架。Linux驱动中的 i2c驱动主要有 四个结构体,要弄清Linux下i2c驱动,必须理解一下四个结构体的关系,struct i2c_adapter { struct module *owner; //所属模块 unsigned int id;原创 2015-05-05 10:42:48 · 512 阅读 · 0 评论 -
linux 驱动之异步通知
linux驱动异步通知是指应用程序app不去主动调用驱动程序,而是有驱动程序主动将发生事件的结果告诉app,比如按键驱动,当有一个按键按下或者抬起的时候,就会主动通知app而无需app一直在那里等待按键事件的发送,中断+等待队列和poll机制也是app主动去调用驱动接口函数,而异步通知是驱动主动告诉app。异步通知必须做到以下几点:1:注册信号处理函数原创 2015-05-03 11:25:25 · 503 阅读 · 0 评论 -
linux驱动之poll
poll机制是指驱动中,如果事件(如中断)没有发生,在一段时间内事件还没有发生,那么就超时返回,如果在这段时间有时间发生,那么就直接相应事件,等事件相应后返回。驱动代码#include #include #include #include #include #include #include #include #include #include #include原创 2015-05-02 20:30:34 · 331 阅读 · 0 评论 -
container_of()宏
在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr: the point转载 2015-04-29 12:18:40 · 264 阅读 · 0 评论 -
linux 下rtc驱动分析
drivers\rtc\rtc-s3c.c s3c_rtc_init platform_driver_register s3c_rtc_probe rtc_device_register("s3c", &pdev->dev, &s3c_rtcops, THIS_MODULE) rtc_dev_原创 2015-04-20 10:50:17 · 373 阅读 · 0 评论 -
fuser 常用场景
fuser通常被用在诊断系统的“resource busy”问题,通常是在你希望umount指定的挂载点得时候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的进程的时候,你可以使用-k option。fuser –k /path/to/your/filename这时fuser会向所以正在使用/path/to/your原创 2015-04-01 15:27:44 · 296 阅读 · 0 评论 -
SD/eMMC寄存器介绍
熟悉SD/MMC的相关寄存器对协议的理解有一定的辅助作用,所以这篇文章来介绍一下SD/MMC相关的寄存器有哪些呢?1.SD卡内部架构在熟悉SD/MMC相关寄存器之前,我们先来看看SD卡的内部架构是怎么样的,如下图所示:2.SD/MMC相关寄存器的介绍从上图中总结出:SD卡内部有7个寄存器.一、OCR,CID,CSD和SCR寄存器保存卡的配置信息;二、原创 2016-03-12 23:13:15 · 6565 阅读 · 0 评论