linux驱动篇
Yang-Zheng
linux
展开
-
应用程序与驱动程序是如何发生关联的
一般驱动函数通过file_operations这个结构体预留出外部接口(这种接口一般包括read,write,open,ioctl等),只有当驱动程序中预留了这种供外部访问的接口,用户程序才能访问驱动程序,即read,write,open,ioctl。也就是通过该结构把系统调用和驱动程序相关联起来的;当应用程序向系统审请要对相应硬件进行I/O操作时,即read,write,open,ioctl。系原创 2013-12-17 11:45:08 · 2094 阅读 · 0 评论 -
Linux Platform驱动程序框架解析
1.platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问转载 2013-12-31 15:45:17 · 774 阅读 · 0 评论 -
内核request_mem_region 和 ioremap的理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令转载 2013-12-17 15:48:40 · 673 阅读 · 0 评论 -
wake_up_interruptible 函数
功能:唤醒注册到等待队列上的进程原型: #include void wake_up_interruptible (wait_queue_head_t *q);说明: 唤醒 q 指定的注册在等待队列上的进程。该函数不能直接的立即唤醒进程,而是由调度程序转换上下文,调整为可运行状态。变量:q : 等待队列变量指针。转载 2013-12-18 09:49:56 · 21671 阅读 · 1 评论 -
linux字符设备驱动实例
//#globalvar.c#include //模块所需的大量符号和函数定义#include //指定初始化和清楚函数#include //文件系统相关的函数和头文件#include //cdev 结构的头文件#include //在内核和用户空间中移动数据的函数MODULE_LICENSE("GPL"); //指定代码使用的许可证//文件操作函数的声明转载 2013-12-19 20:40:39 · 1407 阅读 · 0 评论 -
颜色空间之YCbCr
YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。 主要的子采样格式有YCbCr 4:2:0、YCbCr 4:2:2 和转载 2014-08-23 17:28:13 · 2643 阅读 · 1 评论 -
在ARM Linux下使用GPIO模拟SPI时序详解
Author:杨正 Data:2016.1.1 Mail:yz2012ww@gmail.com一、 概述SPI是英文SerialPeripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI是一种高速、全双工、同步通信总线,标准的SPI有4个引脚,常用于单片机和EEPROM、FLASH、实时时钟、数字信号处理等器件的通信。SPI通信原理要比I2原创 2016-01-06 18:44:08 · 18648 阅读 · 1 评论 -
Linux驱动 container_of
在学习Linux驱动的过程中,遇到一个很好玩的内核函数,准确的说是一个很好玩的宏,叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:439/**440 * container_of - cast a member of a structure out to the containing structure441 * @ptr: th转载 2013-12-30 20:41:28 · 698 阅读 · 0 评论 -
ADC驱动在FL2440的开发
一、开发环境 主 机:fedora 14 (2.6.33.7) 开发板:FL2440(nandflash:K9F1G08 128m) 编译器:arm-linux-gcc 4.3.2 二、原理分析 1. S3C2440内部ADC结构图。我们从下面的结构图和数据手册可以知道,该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN转载 2013-12-15 21:29:29 · 1104 阅读 · 0 评论 -
Linux设备驱动Hello World程序介绍
本文由赵锟翻译,转载于“酷壳”:http://cocre.com/?p=566 by Valerie Henson07/05/2007(译者注:本文的例子是只能在linux的2.6内核下使用的,2.6以上的内核,译者没有做过实验,2.4是要修改make文件才能运行。)本文的出处:这里自古以来,学习一门新编程语言的第一步就是写一个打印“hello转载 2013-12-15 19:07:12 · 633 阅读 · 0 评论 -
LED 驱动程序
一、开发环境软件开发环境:linux-3.0硬件开发环境:fl2440开发板日期:2013.12.28二、驱动程序1.注册主次设备号2.注册驱动程序3.led硬件初始化,配置相应寄存器4.释放资源/*******************************************************************************原创 2013-12-28 20:37:08 · 1118 阅读 · 0 评论 -
FL2440 ADC 数据采样
一、开发环境软件开发环境:linux-3.0硬件开发环境:fl2440开发板日期:2013.12.22二、这个ADC驱动程序虽然很简单,但是我在写的时候费了很多时间,因为一开始我用中断来读数据,然而AD的中断号跟LCD的中断号共用了,用了共享中断,还是没能解决,由于能力有限,就没有用中断。下面是我写的ADC驱动的代码:/*************************原创 2013-12-28 20:23:36 · 937 阅读 · 0 评论 -
GPIO驱动相关笔记
打算跟着友善之臂的《mini2440 linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的定义,并对驱动加以验证 ***************************************转载 2013-12-30 10:59:42 · 875 阅读 · 0 评论 -
hi3516d打开ttyAMA2 ttyAMA3的方法
修改/arch/arm/match-hi3516a/core.c,添加如下代码:131 HIL_AMBA_DEVICE(uart0, "uart:0", UART0, NULL);132 HIL_AMBA_DEVICE(uart1, "uart:1", UART1, NULL);133 HIL_AMBA_DEVICE(uart2, "uart:2", UART2,原创 2016-10-14 16:32:22 · 4754 阅读 · 0 评论