驱动学习
文章平均质量分 82
bbs598598
这个作者很懒,什么都没留下…
展开
-
Linux 2.6下Driver开发的34个变化[转贴]
Linux2.6内核驱动移植嵌入式系统|linux|ARM|单片机'h7@!A-L5}7e[I;H 随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。特别声明:转载 2012-05-31 15:16:43 · 1533 阅读 · 0 评论 -
'/etc/init.d/rcS'启动打不开
'/etc/init.d/rcS' 文件系统中有这个文件啊 怎么报错说没有呢? 用光盘里面的内核镜像就不会出现这个问题 自己移植的内核刷上去就会这样 怎么办啊?以前也移植成功过没出现这个问题啊 已经搞了N天了快崩溃了 急急急补充一下 rcS 以及 init.d 和 etc 目录的权限都是 777原因找到了 是这个选项 choose原创 2012-07-01 20:44:10 · 4681 阅读 · 0 评论 -
poll机制分析(韦东山)
poll机制分析所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。一、内核框架:对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析sys_poll,即可理解p转载 2012-07-12 14:38:30 · 859 阅读 · 0 评论 -
异步通知
异步通知意味着设备可以通知应用程序自身可被访问,实现了异步IO。 在ldd3中给出了设备驱动实现异步信号的详细操作顺序:1.当发出 F_SETOWN,什么都没发生,除了一个值被赋值给 filp->f_owner.2.当 F_SETFL 被执行来打开FASYNC, 驱动的 fasync方法被调用.这个方法被调用无论何时 FASYNC的值在 filp->f_fla转载 2012-07-13 09:52:08 · 582 阅读 · 0 评论 -
详细注释FL2440按键中断驱动(含poll机制),测试成功
平台:FL2440 内核版本linux 2.6.28效果:没有按键时,程序进入休眠,每5秒打印超时信息。按键时响应中断,并输出是按下还是松开。转载注明:http://blog.csdn.net/bbs598598/article/details/7742052#include /*模块有关的*/#include /*内核有关的*/#include /*文件系统有关的*/原创 2012-07-12 22:23:52 · 2067 阅读 · 0 评论 -
异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasyncxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信转载 2012-07-14 09:23:07 · 1359 阅读 · 0 评论 -
自旋锁
一种广泛应用的同步技术是加锁。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把”锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁上。如果内核控制路径希望访问资源,就试图获取钥匙”打开门”。当且仅当资源空闲时,它才能成功。然后,只要它还想使用这个资源。门就依然锁着。当内核控制路径释放了锁时,门就打开,另一个内核控制路径就可以进入房间。图5转载 2012-07-16 10:54:06 · 2971 阅读 · 0 评论 -
嵌入式开发板linux驱动与pc——linux驱动的makefile
1、开发板linux驱动makefileKERN_DIR = /bbs/linux-2.6.28.7all:make -C $(KERN_DIR) M=`pwd` modules clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m += globalmem.o2、p转载 2012-07-17 21:22:24 · 1365 阅读 · 0 评论 -
register_chrdev()与register_chrdev_region()
分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下:extern int register_chrdev_region(dev_t,unsigned int,const char*);表示静态的申请和注册设备号extern int alloc_chrdev_region(dev_t,unsigned int,const char*);表示动态的申请和注册设备号e转载 2012-07-18 16:47:13 · 799 阅读 · 0 评论 -
十 ARM9(2440)的IIC——理论知识及程序实例
原文地址:十 ARM9(2440)的IIC——理论知识及程序实例作者:骨Zi里德骄傲概述S3C2440A RISC 微处理器可以支持一个多主控IIC 总线串行接口。一条专用串行数据线(SDA)和一条专用串行时钟线(SCL)传递连接到IIC 总线的总线主控和外设之间的信息。SDA 和SCL 线都为双向的。多主控IIC 总线模式中,多个S3C2440A RISC 微处理器可转载 2012-07-30 09:26:41 · 1640 阅读 · 0 评论 -
ARM的嵌入式Linux移植体验之设备驱动
作者:宋宝华 文章来源:天极开发设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: ·设备初始化、释放; ·提供各类设备服务; ·负责内核和设备之间的数据交换; ·检测和处理设备工作过程中出现的错误。 Linux下的设备驱动程序被组织为一组完成不同任务的函数转载 2012-07-30 09:32:38 · 630 阅读 · 0 评论 -
RTX下IK220计数卡的PCI示例代码,自己分析用
////////////////////////////////////////////////////////////////////// IK220_RS485_APP.c - C file//// //////////////////////////////////////////////////////////////////#include "IK220_原创 2012-08-23 09:21:07 · 3582 阅读 · 0 评论 -
转载的PCI驱动帖子整理
我有一块FPGA+PLX9030的继电器板,板的作用就是要通过上位机控制继电器的动作,在Windows平台下的驱动已经完成,并验证好用。现在想在运行有VxWorks5.5的Pentium3目标机上使用,则需要开发VxWorks的PCI驱动,目标机安装的是Tornado2.2版本。看了不少论文,里面提到了一些有用的思路,然后我就编写了下面的PCI设备初始化函数: int pciDevConfi转载 2012-09-01 08:35:22 · 2053 阅读 · 0 评论 -
我的第一个简单的linux打印输出驱动(文件自动注册有问题)
平台:linux 2.6.28.7#include #include #include #include #include #include #include #include /*#include #include #include #include */static struct class *firstdrv_class;s原创 2012-07-01 20:39:50 · 853 阅读 · 1 评论 -
linux驱动编写之十三(设备模型之sysfs,bus,device,driver源代码分析)
sysfs文件系统存在于内存中,是一个虚拟文件系统,其提供了kobject对象层次的视图,可以让用户以一个简单文件系统的方式来观察系统中的各种设备的拓扑结构,使用属性对象,kobject可以导出文件的方式,将内核变量提供给用户读取或者写入。在2.6内核的系统中,都拥有sysfs文件系统。sysfs将kobject对象与目录项紧密联系,通过kobject结构体中的dentry字段实现的。sy转载 2012-07-01 18:30:40 · 1128 阅读 · 0 评论 -
class_create(),class_device_create()或device_create()自动创建设备文件结点
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_creat转载 2012-07-01 17:26:28 · 666 阅读 · 0 评论 -
class_create(),device_create自动创建设备文件结点 .
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_cre转载 2012-07-05 19:13:44 · 4578 阅读 · 0 评论 -
关于LED中的down()up()
down(&leds_lock); //为什么这里 要down()和up(),我看过韦东山讲同步与互斥那个视频时,将up()放在了close中,还有就是 case2中为什么没有使用up()和down(),总之我这一块很迷惑,不知道这个程序是怎么实现的 不同次设备号控制不同的led,不理解这里的down()和up()作用是什么。请老师解答!!!!原创 2012-07-05 22:12:16 · 1955 阅读 · 0 评论 -
cdev结构
在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构,在写驱动时,转载 2012-07-07 15:47:15 · 742 阅读 · 0 评论 -
udev轻松上路 (做2.6移植的朋友不要错过:)
第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单! 嵌入式的udev应用尤其简单。 第二、为什么udev要取代devfs? 这是生产关系适应生产力的需要,udev好,devfs坏,用好的转载 2012-07-07 16:31:13 · 2043 阅读 · 0 评论 -
简单linux驱动小例子
我们来写一个最简单的字符设备驱动程序。虽然它什么也不做,但是通过它可以了解Linux的设备驱动程序的工作原理。把下面的C代码输入机器,你就会获得一个真正的设备驱动程序。不过我的kernel是2。0。34,在低版本的kernel上可能会出现问题,我还没测试过。#define __NO_VERSION__#include #include char kernel_vers转载 2012-06-27 21:28:47 · 1146 阅读 · 0 评论 -
Linux字符设备驱动程序的一个简单示例
一.开发环境:主 机:VMWare--Fedora 9 开发板:友善之臂mini2440--256MB Nandflash 编译器:arm-linux-gcc-4.3.2 二.驱动源码:该源码来源于国嵌的学习资料,是一个很浅显易懂的程序,非常适合初学者,我加上了一些注释。memdev.h#ifndef _MEMDEV_H_#define _MEMDEV_转载 2012-06-28 21:36:47 · 735 阅读 · 0 评论 -
linux设备驱动程序之简单字符设备驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一转载 2012-06-28 22:04:08 · 1044 阅读 · 0 评论 -
linux中断之中断注册
专业的linux驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux下通过request_irq来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以linux-2.6.34为例,对比老版本进行说明。 request_irq()函数在include/linux/interrupt.h中定义,原型为: static inline int __must_转载 2012-07-11 13:37:46 · 5713 阅读 · 1 评论 -
fl2440按键中断驱动
#include #include #include #include #include #include #include #include #include #include #include //copy_to_user#include //内核时钟#include //atomic_t#include //转载 2012-07-11 15:56:22 · 627 阅读 · 0 评论 -
与中断有关的数据结构
1.概述通过前文,我们已经知道了中断通常由上下两部分组成。在上部分,也就是中断处理程序,完成中断请求的响应以及完成那些对时间要求紧迫的工作;而在下部分,通常完成那些被推后的工作,因为这部分工作对时间的要求相对宽松一些。通过了解上下两部分的工作情况,可以更好的理解中断这个概念。从下半部分执行机制来看——不管是tasklet还是工作队列——这些推后的工作总是在上半部分被调用,然后交给内核在适当转载 2012-07-11 20:14:18 · 1478 阅读 · 0 评论 -
转:一个相当详细的MINI2440按键驱动详解
/*mini2440_buttons_my.c*//*后面加了_my*//*按键驱动程序*//*mini2440所用到的按键资源*//**************************************************//* 按键 对应的IO寄存器 对应的中断引脚*//* K1 GPG0转载 2012-07-11 13:42:49 · 935 阅读 · 0 评论 -
使用IPMI工具实现对服务器的远程管理
认识IPMI回顶部 对于网管员来说,服务器远程管理是一个非常重要的技术,而在服务器远程管理方面,典型的解决方案是基于服务器操作系统的软件管理方式,但这样的方式有一个致命的缺陷就在于对操作系统的依赖程度太高,一旦系统出现问题将无能为力,影响到服务器的日常运行。而我们今天要向大家介绍的是一种无需依赖于操作系统的远程管理方式——基于智能平台管理界面 (IPMI)的远程管理方式。IPMI转载 2016-04-04 10:07:43 · 52701 阅读 · 2 评论