linux driver
longshan_2009
这个作者很懒,什么都没留下…
展开
-
字符设备驱动之防抖动
先附上学习的图片:从上面图片可以看到,按键在没有按下的时候,2440的引脚是处于高电平状态(3.3v),按键按下后,2440的引脚接地,处于了低电平状态。理论上按键的时序波形应该为:电平的跳变是至上而下,如下图所示。实际上,由于按键中金属之间的接触原因会导致出现抖动,从而出现下面的波形:按下一次按键,出现多次上下波动的现象为了解决这个问题,可以使用定时器。定原创 2013-03-28 22:33:20 · 653 阅读 · 0 评论 -
S3C2410 UART 的驱动实例
S3C2410 串口硬件描述S3C2410 内部具有 3 个独立的 UART 控制器,每个控制器都可以工作在 Interrupt(中断)模式或 DMA(直接内存访问)模式,也就是说 UART 控制器可以在 CPU 与UART 控制器传送资料的时候产生中断或 DMA 请求。S3C2410 集成的每个 UART 均具有 16 字节的 FIFO,支持的最高波特率可达到 230.4Kbit/s。转载 2013-04-11 15:36:01 · 1432 阅读 · 0 评论 -
Linux 终端设备驱动
在 Linux 系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux 系统中包含控制台、串口和伪终端 3 类终端设备。终端设备在 Linux 系统中,终端是一种字符型设备,它有多种类型,通常使用 tty 来简称各种类型的终端设备。tty 是 Teletype 的缩写,Teletype 是最早出现的一种终端设备,很像电传打字机,是由 Teletype 公司生产的。转载 2013-04-11 12:28:56 · 1439 阅读 · 0 评论 -
同步互斥阻塞
同步互斥阻塞目的:在同一时刻只允许一个应用程序打开/dev/***下面试着在驱动中的open函数中加入:static int canopen = 1;if(--canopen!=0){ canopen++; return -EBUSY;}加入这段代码的意思在app调用open函数打开对应的设备后,最终调用底层驱动的open函数,在这个open函数中,如果canopen不原创 2013-03-28 13:25:50 · 630 阅读 · 0 评论 -
驱动中的异步通知机制
异步通知机制之前所说的几种方法:1.查询:耗资源2.中断:read()不会返回3.poll:在指定时间read返回他们的共同特点都是应用程序主动的去read,有没有一种方法驱动去提醒应用程序去读?有,那就是异步通知机制程序之间发信号kill -9 PIDkill :发送者PID:接受者举个例子:#include void my_s原创 2013-03-28 11:25:37 · 821 阅读 · 0 评论 -
中断与时钟
本章主要讲解 Linux 设备驱动编程中的中断与定时器处理。由于中断服务程序的执行并不存在于进程上下文,因此,要求中断服务程序的时间尽可能地短。因此,Linux在中断处理中引入了顶半部和底半部分离的机制。另外,内核中对时钟的处理也采用中断方式,而内核软件定时器最终依赖于时钟中断。问题:什么是进程上下文?中断与定时器所谓中断是指 CPU 在执行程序的过程中,出现了某些突发事件时 CP转载 2013-04-10 17:17:15 · 1233 阅读 · 0 评论 -
2410LCD 设备驱动
S3C2410 LCD 控制器硬件描述S3C2410 内部集成了 LCD 控制器,它支持 STN 和 TFT 屏,其特性如下。1.STN 屏支持 3 种扫描方式:4 位单扫描、4 位双扫描和 8 位单扫描。支持单色、4 级灰度和 16 级灰度屏。支持 256 色和 4096 色彩色 STN 屏(CSTN)。支持分辨率为 640*480、320*240、160*160 以及其转载 2013-04-10 11:20:03 · 688 阅读 · 0 评论 -
LCD 设备驱动
在多媒体应用的推动下,彩色 LCD 越来越多地应用到了嵌入式系统中,掌上电脑(PDA),手机等多采用 TFT 显示器件,支持彩色图形界面,能显示图片并进行视频媒体播放。帧缓冲(Framebuffer)是 Linux 为显示设备提供的一个接口,它允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。LCD 硬件原理利用液晶制成的显示器称为 LCD,依据驱动方式可分为静态驱动、简单矩阵转载 2013-04-09 14:58:15 · 1568 阅读 · 0 评论 -
Flash驱动
Flash 在嵌入式系统中是必不可少的,它是 BootLoader、Linux 内核和文件系统的最佳载体。在 Linux 内核中,引入了 MTD 层为 NOR Flash 和 NAND Flash 设备提供统一的接口,从而使得 Flash 驱动的设计工作大为简化。Linux MTD 系统层次在 Linux 系统中,提供了 MTD(Memory Technology Device,内存技术设转载 2013-04-09 11:46:04 · 1501 阅读 · 0 评论 -
input子系统分析
Linux的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输入子系统进行详细的分析。结构:下面根据上面的结构一层一层的分析一、硬件驱动层(input_dev)1 input 子系统入门 输入子系统又叫 input 子系统。其构建非常灵活,只需要调用一些简单的函数,就可以将一个输入设备的功能呈现给应用程序。本节将从一个原创 2013-03-28 23:14:54 · 740 阅读 · 0 评论 -
对字符设备的一些理解
问题1:上层的系统调用open是如何调用到底层的file_operation的open函数的??解答:首先使用ls -l /dev/* 看一下里面的设备,取tty0为例:crw--w---- 1 root root 4, 0 2013-03-23 19:13 /dev/tty0上面示例显示了下面几个重要信息:c :字符设备4:主设备号0:次设备号通过设备类型(c)和原创 2013-03-23 20:25:39 · 885 阅读 · 0 评论 -
对按键的几种操作方式
一、查询方式在应用程序中直接使用while(1)死循环对按键的状态进行读取,这种方式所占的CPU很多,不推荐使用。驱动:ssize_t second_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos){ /* 返回4个引脚的电平 */ unsigned char key_vals[原创 2013-03-23 22:05:47 · 776 阅读 · 0 评论 -
i2c架构
转载:i2c架构分析一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员 的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而 I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协转载 2013-04-03 16:14:24 · 635 阅读 · 0 评论 -
open系统调用流程
仅仅是分析时的记录........假设有一个点灯的应用程序,这个程序所需要做的工作为:1.读写文件2.点灯,获取按键等等 在应用层有:open read write (由c库实现) 驱动层有:led_open led_read led_write问题:应用层(open,read,write)是如何调用到底层驱动的led_open,led_read,led_原创 2013-03-20 23:40:07 · 1919 阅读 · 0 评论 -
i2c设置中断的原因?
IIC接收数据只是存到指定的寄存器中,如果你不取走,下次再接收数据就直接冲掉了,所以IIC接收到数据之后给CPU中断,中断服务程序去处理这些收到的数据!查找中断源是一种保险的做法,要是由于其他的哪几种原因产生了中断,但是此时数据并没有接收完,中断服务子程序去处理数据了,结果就不对了!如果你自己敢保证不会出现哪几种情况就可以完全不用写!读写操作发送模式中当发送了数据时, IIC原创 2013-04-01 21:54:11 · 6062 阅读 · 0 评论 -
ARM Linux S3C2440 之UART分析
本文转载并加入自己的看法:2440uart在分析ARM-Linux s3c2440中UART的时有必要先了解 s3c2440A中串口的硬件知识。硬件篇:S3c2440A串口提供三个独立的异步串行通信I/O端口(asynchronousserial I/O ports)。每一个串口均可以以普通中断方式或者DMA方式进行数据收发。采用系统时钟时,最大速率为115.2kbps转载 2013-04-02 11:12:16 · 1393 阅读 · 0 评论