linux驱动学习
文章平均质量分 84
yinjiabin
这个作者很懒,什么都没留下…
展开
-
基于mini6410的linux驱动学习总结(二 字符设备与块设备的区别)
在类unix系统中,字符设备和主要有以下3点不同:1、 字符设备是以字节为单位进行访问。块设备是以块为最小单位进行访问。块可以是512字节或一个更大的2次幂的数。2、 在linux系统中,字符设备和块设备都可以以字节为单位进行访问,区别仅仅是二者访问的接口函数不同。3、 块设备与字符设备访问的顺序不同,字符设备只能顺序访问,而块设备可以随机访问。原创 2012-04-24 09:41:48 · 847 阅读 · 0 评论 -
基于mini6410的linux按键驱动实例分析
1、 button.c源代码#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2012-06-05 22:03:23 · 1739 阅读 · 1 评论 -
linux下的硬件访问方法
1、 寄存器与内存 寄存器与内存的区别在哪里呢? 寄存器和RAM 的主要不同在于寄存器操作有副作用(side effect或边际效果):读取某个地址时可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零。2、 内存与I/O 在X86处理器中存在I/O空间的概念,I/O空间是相对内存空间而言的,他们是彼此独立的地址空间,在原创 2012-05-17 17:59:00 · 4730 阅读 · 0 评论 -
linux高级字符设备驱动之 三 阻塞型字符设备驱动
1、阻塞型字符设备驱动的功能 当一个设备无法立刻满足用户的读写请求时应当如何处理? 例如:调用read时没有数据可读, 但以后可能会有;或者一个进程试图向设备写入数据,但是设备暂时没有准备好接收数据。应用程序通常不关心这种问题,应用程序只是调用 read 或 write 并得到返回值。驱动程序应当(缺省地)阻塞进程,使它进入睡眠,直到请求可以得到满足。2、阻塞方式原创 2012-05-16 22:07:17 · 1662 阅读 · 0 评论 -
linux中mmap系统调用原理分析与实现
1、mmap系统调用(功能) void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset ) 内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。原创 2012-05-17 11:48:42 · 25861 阅读 · 3 评论 -
Tiny6410 ——LED 驱动程序设计
1、驱动程序①、led.h[plain] view plaincopy#ifndef _LED_H_ #define _LED_H_ #define DEVICE_NAME "tiny6410_led" #define LED_IOC_MAGIC 'l' // 幻数 #define LED_IOCGETDAT _I转载 2012-05-18 10:01:00 · 1999 阅读 · 0 评论 -
mini6410 led驱动程序(混杂设备增加了详细注释)
本系列文章有本人yinjiabin制作,转载请注明出处:http://blog.csdn.net/yinjiabin/article/details/7489563 定义本次驱动为misc device(杂项设备驱动),包含头文件miscdevice.h,其实所谓的杂项驱动程序就是主设备号为10的字符设备驱动,其实就是用主设备号10调用了函数register_chr原创 2012-04-28 10:45:56 · 2398 阅读 · 1 评论 -
linux高级字符设备驱动之 四 poll方法(select多路监控原理与实现)
1、什么是Poll方法,功能是什么?2、Select系统调用(功能) Select系统调用用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。 int select(int maxfd, fd_set *readfds, fd_set *writefds, fe_set *exceptfds, const struct timeval *原创 2012-05-17 10:16:38 · 3290 阅读 · 0 评论 -
linux设备模型之 kobject原理与实例分析
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->1、Sysfs文件系统 "sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structur原创 2012-05-19 11:11:27 · 3672 阅读 · 1 评论 -
linux设备驱动模型 之driver(驱动)原理与实例分析
1、 驱动描述 驱动程序由struct device_driver 描述 :struct device_driver {const char *name; /*驱动程序的名字( 体现在 sysfs 中 )*/struct bus_type *bus; /*驱动程序所在的总线*/struct module*owner;const char*mod_na原创 2012-05-20 19:10:03 · 2600 阅读 · 0 评论 -
linux设备驱动模型之 kset原理与实例分析
1、 Kset kset是具有相同类型的kobject的集合,在sysfs中体现成一个目录,在内核中用kset数据结构表示,定义为:struct kset {struct list_head list; //连接该kset中所有kobject的链表头spinlock_t list_lock;struct kobject kobj; //内嵌的kobject原创 2012-05-19 22:16:51 · 1853 阅读 · 0 评论 -
linux设备驱动模型之 bus(总线)原理与实例分析
1、 设备模型 随着技术的不断进步,系统的拓扑结构也越来越复杂,对智能电源管理、热插拔的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,Linux 2.6内核提供了全新的内核设备模型。2、 设备模型元素 总线 驱动 设备3、 总线 总线是处理器和设备之间的通道,在设备模型中原创 2012-05-20 10:13:05 · 2463 阅读 · 0 评论 -
Linux系统调用fcnt()l函数详解
功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd是被参数转载 2012-07-27 11:22:25 · 8345 阅读 · 0 评论 -
关于文件结束符EOF
EOF 是 End Of File 的缩写。在 C 语言中,它是在标准库中定义的一个宏。人们经常误认为 EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数(比如 -1)。EOF 也不是文件中实际存在的内容。EOF 也不是只表示读文件到了结尾这一状态(这种状态可以用 feof() 来检测),它还能表示 I/O 操作中的读、写错误转载 2012-11-14 15:57:37 · 6500 阅读 · 1 评论 -
linux高级字符设备驱动之 二 内核等待队列
在Linux驱动程序设计中,可以使用等待队列来实现进程的阻塞,等待队列可看作保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待等列中取出进程。Linux 2.6内核提供了如下关于等待队列的操作:1、定义等待队列 wait_queue_head_t my_queue2、初始化等待队列 init_waitqueue_head(&my_qu原创 2012-05-16 20:45:35 · 1070 阅读 · 0 评论 -
linux中断处理原理分析
1、 中断概念 为什么需要中断? 1)外设的处理速度一般慢于CPU 2)CPU不能一直等待外部事件 所以设备必须有一种方法来通知CPU它的工作进度,这种方法就是中断。2、 中断实现 在Linux驱动程序中,为设备实现一个中断包含两个步骤: 1)向内核注册中断 2)实现中断处理函数原创 2012-06-04 15:49:59 · 109 阅读 · 0 评论 -
linux设备总线驱动模型 之 platform总线驱动
1、 Platform总线 Platform总线是linux2.6内核加入的一种虚拟总线。platform机制的本身使用并不复杂,由两部分组成:platform_device和platform_driver Platform 驱动与传统的设备驱动模型相比,优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,原创 2012-06-04 10:37:47 · 1229 阅读 · 0 评论 -
基于mini6410的linux驱动学习总结(三 使用驱动程序)
Linux用户如何使用驱动程序?Linux用户程序通过设备文件(又名:设备节点)来使用驱动程序操作字符设备和块设备下图是linux系统中应用程序、驱动、硬件之间的关系图。 设备(字符、块)文件在何处?设备文件存放在dev目录下。原创 2012-04-24 09:52:34 · 771 阅读 · 0 评论 -
基于mini6410的linux驱动学习总结(一 驱动程序介绍)
1、什么是驱动程序? 使硬件工作的软件。2、驱动分类 1)字符设备驱动 2)网络接口驱动 3)块设备驱动 2.1 字符设备 字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open, close,read和write 系统调用。 2.2块设备原创 2012-04-24 09:12:57 · 837 阅读 · 0 评论 -
基于mini6410的linux驱动学习总结(四 设计字符设备驱动程序)
涉及的知识点1、设备号2、创建设备文件3、重要数据结构4、设计字符设备驱动的步骤 1.设备号设备号用来做什么?设备号作用:主设备号用来标识与设备文件相连的驱动程序。次编号被驱动程序用来辨别操作的是哪个设备。**主设备号用来反映设备类型****次设备号用来区分同类型的设备**1.1主次设备号1)内核中如何描述设备号? dev_t**其实质为un原创 2012-04-24 20:20:26 · 1196 阅读 · 0 评论 -
基于mini6410的linux驱动学习总结(五 字符设备驱动程序实例分析(虚拟设备驱动))
1、 程序要实现的功能 使用一个虚拟的设备来模拟一个字符设备,该虚拟设备为一块内存。在内存中开辟一块4K的空间,将4K的内存看作一个字符设备,编写一个字符设备驱动程序来操作这块内存。2、实验环境 内核版本:linux-2.6.35-323、字符设备驱动程序设计步骤 Step1:设备注册 在linux 2.6内核中原创 2012-04-25 15:49:27 · 3468 阅读 · 0 评论 -
mini6410 PWM驱动程序
本系列文章有本人yinjiabin制作,转载请注明出处:http://blog.csdn.net/yinjiabin/article/details/7489563 #include #include #include #include #include #include #include #include #include #include原创 2012-05-01 16:04:13 · 1376 阅读 · 1 评论 -
mini6410按键驱动程序
本系列文章有本人yinjiabin制作,转载请注明出处:http://blog.csdn.net/yinjiabin/article/details/7489563#include #include #include #include #include #include #include #include #include #include原创 2012-04-29 21:06:08 · 1292 阅读 · 0 评论 -
mini6410 adc驱动程序
本系列文章有本人yinjiabin制作,转载请注明出处:http://blog.csdn.net/yinjiabin/article/details/7489563 #include #include #include #include #include #include #include #include #include #include原创 2012-05-01 15:58:08 · 996 阅读 · 0 评论 -
linux高级字符设备驱动(一 设备Ioctl控制)
1. Ioctl 用来做什么? 大部分驱动除了需要具备读写设备的能力外,还需要具备对硬件控制的能力。例如,要求设备报告错误信息,改变波特率,这些操作常常通过ioctl方法来实现。1.1 用户使用方法 在用户空间,使用ioctl 系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,..原创 2012-05-02 15:55:59 · 3501 阅读 · 0 评论 -
带Ioctl命令的字符设备驱动程序
1. memdev.c驱动程序#include #include #include #include #include #include #include #include #include #include #include #include "memdev.h"static int mem_major = MEMDEV_MAJOR;mod原创 2012-05-02 21:16:19 · 1205 阅读 · 0 评论 -
ubuntu下安装配置minicom(解决默认的端口/dev/tty8,改不过来的问题)
Minicom是linux下串口通信的软件,下面讲下ubuntu Minicom的安装和配置。安装:sudo apt-get install minicom或在新立得软件包管理器中搜索“minicom”,安装搜索到的minicom配置:在使用minicom之前, 首先要保证你对串口有读/写的权限. 串口COM1对应ttyS0, COM2对应ttyS1.使用这个命原创 2012-05-07 17:09:46 · 10956 阅读 · 1 评论 -
解决ubuntu编译内核uImage出现问题"mkimage" command not found - U-Boot images will not be built问题
问题: "mkimage" command not found - U-Boot images will not be built解决方法: 如果使用的是Ubuntu 9.10及以上版本,可以使用下面的命令安装mkimage: #apt-get install uboot-mkimage安装完成后在编译内核make umage原创 2012-05-08 16:45:47 · 3594 阅读 · 0 评论 -
解决ubuntu下:Install ncurses(ncurses-devel) and try again的问题
:Install ncurses(ncurses-devel) and try again。做一个简单的铺垫,ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序已经不再使用。假如要编译一些老的程序,还是会经常碰到。解决这个问题可以通过下面的解决方法来搞定。打开一个终端输入下面这条语句按回车进行安装即可。apt-get install libncurses5-dev原创 2012-05-08 11:14:20 · 4404 阅读 · 0 评论 -
linux设备驱动模型之 device(设备)原理与实例分析
1、 设备描述 Linux 系统中的每个设备由一个 struct device 描述:struct device {...... ...... ...... ...... ...... ......struct kobject kobj;char bus_id[BUS_ID_SIZE]; /*在总线上唯一标识该设备的字符串 */struct bus_t原创 2012-05-20 18:12:51 · 2627 阅读 · 1 评论 -
linux vim配置总结
我的vim配置主要有以下优点:1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码4.按“F2”可以直接消除代码中的空行5.“F3”可列出当原创 2012-11-20 09:48:13 · 3527 阅读 · 2 评论