嵌入式Linux中文站

Linux 音频设备驱动架构及应用编程

阅读(342)

最早出现在Linux上的音频编程接口是OSS(Open Sound System),它由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口。OSS出现的历史相对较长,这些内核模块中的一部分(OSS/Free)是与Linux内核源码共同免费发布的,另外一些则以二进制的形式由4Front Technologies公司提供。由于得到了商业公司的鼎力支持,OSS已经成为在Linux下进行音频编程的事实标准,支持OSS的应用程序能够在绝大多数声卡上工作良好。 虽然OSS已经非常成熟,但它毕竟是一个

linux framebuffer 驱动

阅读(288)

framebuffer 设备即帧缓冲设备(简写fb)提供了显示接口的抽象描述。他同时代表着显示接口的存储区,应用程序通过定义好的函数访问,不需要知道底层的任何操作。 Framebuffer 驱动使用的设备节点,通常位于/dev 目录,如/dev/fb*.从用户角度看,fb 设备和其他/dev 下面的设备类似:普通的字符设备,主设备号29,次设备号定义fb 的索引。通常,使用如下方式(前面的数字表示次设备号)0 = /dev/fb0 第一个fb 设备,1 = /dev/fb1 第二个fb 设备,fb 也是一

linux驱动--内核和驱动关系

阅读(371)

概述 Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加 载: (1)直接编译进Linux内核,随同Linux启动时加载。 (2)编译成一个可加载和删除的模块。 驱动程序向内核添加了一些函数,是内核的一部分。例如Open(), Release(), Read(), Write()。这些函数由内核在适当的时候来调用,可以用来完成硬件访问等操作。驱动程序占kernel源代码超过50%。 内核中printk()函数的设计目的并不是为了和用户交流,它实际上是内核的一种日志机制,用

linux驱动的入口函数module_init的加载和释放

阅读(190)

就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件: #include linux/init.h #include linux/module.h #include linux/kernel.h 其中,init.h 定义了驱动的初始化和退出相关的函数,kernel.h 定义了经常用到的函数原型及宏定义,module.h 定义了内核模块相关的函数、变量及宏。 几乎每个linux驱动都有个module_init(与module_

linux设备驱动之控制台驱动

阅读(135)

一:前言 我们在之前分析过input子系统和tty设备驱动架构.今天需要将两者结合起来.看看linux中的控制台是怎么样实现的. 二:控制台驱动的初始化 之前在分析tty驱动架构的时候曾分析到.主设备为4,次设备为0的设备节点,即/dev/tty0为当前的控制终端. 有tty_init()中,有以下代码段: static int __init tty_init(void) { #ifdef CONFIG_VT cdev_init(vc0_cdev, console_fops); if (cdev_add(

Linux USB驱动工作流程

阅读(285)

1. USB主机 在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。 因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动, 前者控制插入其中的USB设备 , 后者控制USB设备如何与主机通信 。Linux内核USB核心负责USB驱动管理和协议处理的主要工作。主机控制器驱动和设备驱动之间的USB核心非常重要,

Linux平台总线驱动设备模型

阅读(268)

platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。 总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 Linux2.6系统中定义了一个bus_type的实例platform_bus_type [cpp] view plain cop

Linux字符设备驱动之异步通知

阅读(129)

poll机制可实现有数据的时候就去读,没有数据的时候,如果超过规定一个时间,就表示超时时间。poll机制需要应用程序主动去读,而异步通知并不需要,一旦设备就绪,则主动通知应用程序,应用程序不需要主动查询设备状态,类似于中断的概念,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来 等待信号的到达。 在linux中,异步通知是使用信号来实现的,而在linux,大概有30种信号,比如大家熟悉的ctrl+c的SIGINT信号,进程能够忽略或者捕获除过SIGSTO