驱动
文章平均质量分 83
草原苍狼
jeffreyst@163.com
展开
-
转载只为记录经典之<linux驱动简介 >
linux驱动简介 Linux设备驱动程序是内核的一部分,它完成以下功能:? 对设备初始化和释放? 把数据从内核传送到硬件和从硬件读取数据? 读取应用程序传送给设备文件的数据和回送应用程序请求的数据? 检测和处理设备出现的错误。系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。Linux转载 2012-01-17 10:55:04 · 733 阅读 · 0 评论 -
为驱动程序添加代码,实现自动生成/dev/下节点
下面代码模板是使用的宋宝华老师的代码,希望他不要生气,本为只是为了共享一些学习经验!!/*====================================================================== A "seond" device driver as an example of kernel timer The initia原创 2012-08-27 14:41:35 · 1488 阅读 · 0 评论 -
Linux内核部件分析<7> 设备驱动模型之driver
上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas转载 2012-08-27 17:38:40 · 794 阅读 · 0 评论 -
Linux内核部件分析<6> 设备驱动模型之device
linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。 头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。struct device { struct devi转载 2012-08-27 17:37:20 · 932 阅读 · 0 评论 -
Uart驱动
博主提示:本文作者不详,但内容很有含量,相信对您一定很有帮助!同时感谢作者的奉献! 尽管一个特定的UART设备驱动完全可以遵循14.2~14.5的方法来设计,即定义tty_driver并实现其中的成员函数,但是Linux已经在文件 serial_core.c中实现了UART设备的通用tty驱动层(姑且称其为串口核心层),这样,UART驱动的主要任务演变成实现serial- core.c中转载 2013-02-21 10:36:05 · 1601 阅读 · 0 评论 -
i2c_driver结构体
i2c_driver结构体 驱动程序的主要工作就是定义并初始化一个i2c_driver结构体。i2c_driver的成员参考上面。 i2c_driver中的driver成员至少应该初始化它的name成员。Legacy model的驱动i2c_driver的函数指针至少应该初始化attach_adapter和detach_ client,另外attach_a转载 2013-03-12 18:06:44 · 1754 阅读 · 0 评论 -
2.6.21相比2.4.18内核机制变更
本人正在把2.4.18的网关,防火墙,等公司的代码从2.4.18移植到2.6.18linux内核上去.本日志会不断更新,希望能让同在进行2.4到2.6内核移植的朋友们一些帮助. 2.4内核: Save_flags();保存标志 cli();关闭中断 Restore_flags();还原标志打开中断2.6内转载 2013-03-29 21:00:29 · 885 阅读 · 0 评论 -
linux 8250.c uart驱动
一:前言前一段时间自己实践了一下8250芯片串口驱动的编写。今天就在此基础上分析一下linux kernel自带的串口驱动。毕竟只有对比专业的驱动代码才能更好的进步,同以往一样,基于linix kernel2.6.25.相应驱动代码位于:linux-2.6.25/drivers/serial/8250.c。二:8250串口驱动初始化相应的初始化函数为serial8250_init().转载 2013-03-20 14:40:08 · 4595 阅读 · 2 评论 -
串口驱动分析之读写数据流
数据读取数据流: 读数据流分为两段,第一段为用户空间从环形缓冲read_buf中获取数据;第二段为硬件设备获取数据写到环形缓冲read_buf中。一: (1) tty_io.cstatic ssize_t tty_read(struct file *file, char __user *buf, size_t count,loff_t *ppos){转载 2013-03-23 12:38:48 · 2207 阅读 · 0 评论 -
Linux中的EAGAIN含义
在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。 从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞转载 2013-03-25 16:51:36 · 1284 阅读 · 0 评论 -
Linux内核部件分析<9> 设备驱动模型之device-driver
Linux内核部件分析设备驱动模型之device-driver前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。本节的实现代码集中在drivers/base/bus.c和d转载 2012-08-27 17:41:34 · 1260 阅读 · 0 评论 -
Linux内核部件分析<8> 设备驱动模型之bus
前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev转载 2012-08-27 17:40:11 · 859 阅读 · 0 评论 -
Linux内核部件分析<5> 设备驱动模型的基石kobject
之前我们分析了引用计数kref,总结了sysfs提供的API,并翻译了介绍kobject原理及用法的文档。应该说准备工作做得足够多,kobject的实现怎么都可以看懂了,甚至只需要总结下API就行了。可我还是决定把kobject的实现代码从头分析一遍。一是因为kobject的代码很重要,会在设备驱动模型代码中无数次被用到,如果不熟悉的话可以说是举步维艰。二是为了熟悉linux的编码风格,为以后分析转载 2012-08-27 17:35:40 · 812 阅读 · 0 评论 -
转载只为记录经典之<linux 驱动是什么>
linux 驱动是什么 亚嵌教育—哈里波侠 2010年7月6日 今天给亚嵌29期的就业班的学员上课,提了一个问题“简单说说linux设备驱动是什么?”对于大家的回答都不很令人满意。帮助大家理顺一下思路,如下:层次关系:linux驱动是直接和硬件打交道的软件程序。层次结构上,它处于操作系统和硬件之间。驱动与linux操作系统(内核)的关系:1.驱动程序提供的一组设备驱转载 2012-01-17 11:41:43 · 664 阅读 · 0 评论 -
转载只为记录经典之<linux下简单的设备驱动开发 >
linux下简单的设备驱动开发 一.设计原理Linux内核中的设备驱动程序是一组常驻内存的具有特权的共享库,是低级硬件处理例程。每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备.设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序.Linux支持3种设备转载 2012-01-18 09:22:54 · 747 阅读 · 0 评论 -
Linux USB 鼠标驱动程序详解
Linux USB 鼠标驱动程序详解USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。 USB 设备驱动程序(usb d转载 2012-06-27 14:37:14 · 849 阅读 · 0 评论 -
cdev 结构
原创 2012-08-15 15:16:12 · 789 阅读 · 0 评论 -
《linux设备驱动开发详解》学习之globalmem
1.代码:#include #include #include #include #include //#include #include #include #include #include #include #include #include #define GLOBALMEM_SIZE 0x1000 /*4KB*/#de原创 2012-08-20 18:01:12 · 1234 阅读 · 0 评论 -
Linux驱动学习
Linux驱动学习(一)注:基于linux-2.6.38 在linux源码的根目录下有一个叫drivers的目录,可以发现linux源码根目录下也就那么十来二十个目录,linux把drivers作为根目录下的一个独立的目录,足见drivers在linux里占有的分量有多重。 打开drivers目录一看,有一种晕呼呼的感觉,好几十个目录就这样“活生生”地摆在眼前转载 2012-08-21 16:01:55 · 984 阅读 · 0 评论 -
在驱动模块初始化函数中实现设备节点的自动创建
在驱动模块初始化函数中实现设备节点的自动创建作者:杨硕,华清远见嵌入式学院讲师。我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构转载 2012-08-23 16:29:27 · 608 阅读 · 0 评论 -
udev原理
udev 2012-04-03 19:29:58| 分类:Linux |字号 订阅第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单!嵌入式的udev应用尤其简单。转载 2012-08-27 11:03:14 · 2063 阅读 · 0 评论 -
mknod 命令
mknod 命令 2009-09-06 17:56:32| 分类:linux指令 |字号 订阅Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录 下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每 个设备号又分为主设备号和次设备转载 2012-08-27 13:54:47 · 1222 阅读 · 0 评论 -
串口驱动程序分析
//串口驱动程序分析 (1),串口写数据 当用户层调用write()函数,就对应调用/driver/char/tty_io.c里面的tty_write() tty_write() ---> do_tty_write() ---> //driver/char/n_tty.c n转载 2013-03-26 09:22:00 · 1139 阅读 · 0 评论