linux驱动
虎皮猫大人王
这个作者很懒,什么都没留下…
展开
-
A demo usging mmap() to read a file
[cpp] view plaincopy#include #include #include #include #include #include int main (int argc, char *argv[]) { struct stat sb;原创 2012-02-27 15:54:50 · 615 阅读 · 0 评论 -
linux设备模型
linux设备模型的出现是为了让内核获得系统整体配合的信息,对系统结构的一般性抽象描述. 2.6提供了这样的抽象,具体包括: 1,电源管理和系统关机. 2,与用户空间通信 3,热挺拔设备. 4,设备类型. 5,对象生命周期.原创 2012-02-28 10:15:23 · 508 阅读 · 0 评论 -
Linux2.6内核移植NOR FLASH 驱动
一、分区信息HHARM2410-STUDY开发板使用16bit 8M NOR FLASH,分区信息如下:0x00000000-0x00040000 : "bootloader"0x00040000-0x00140000 : "kernel"0x00140000-0x00540000 : "ramdisk"0x00540000-0x00740000 : "cramfs"0x0转载 2012-03-06 13:26:36 · 618 阅读 · 0 评论 -
Linux 2.6.11 MTD驱动情景分析
Linux 2.6.11 MTD驱动情景分析最近几天为了熟悉linux的驱动开发,我选择了其MTD驱动做了一些研究。我能找到的文章中我觉得有些部分不够细致,所以我还是自己写了一部分分析,希望对别人也能有所帮助,也做为自己的一个备忘,。蓝色文字的部分是从网络上摘录的。 一个嵌入式系统经常会使用NOR flash 或NAND flash来存放bootload,内核和文件系统等等。下转载 2012-03-05 00:48:12 · 517 阅读 · 0 评论 -
poll()函数的使用
poll函数用于监测多个等待事件,若事件未发生,进程睡眠,放弃CPU控制权,若监测的任何一个事件发生,poll将唤醒睡眠的进程,并判断是什么等待事件发生,执行相应的操作。poll函数退出后,struct pollfd变量的所有值被清零,需要重新设置。示例是使用poll函数来监测按键的输入----------------------------------------------------转载 2012-03-28 15:19:09 · 706 阅读 · 0 评论 -
工作队列的使用
Linux 2.6内核使用了不少工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列的使用又分两种情况,一种是利用系统共享的工作队列来添加自己的工作,这种情况处理函数不能消耗太多时间,这样会影响共享队列中其他任务的处理;另外一种是创建自己的工作队列并添加工作。(一)利用系统共享的工作队列添加工作:转载 2012-03-28 15:20:10 · 757 阅读 · 0 评论 -
poll函数
poll函数 poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 4.转载 2012-03-28 15:22:24 · 668 阅读 · 0 评论 -
再论检测usb口的设备插拔
以前做过usb口设备的检测,当初有很多疑问,现在水平比当初稍微长了一点,可以总结一下正常情况下怎么做。 两种方式: 1>shell 如果你不用在C代码中实现的可以用此办法。 2>access 如果要在C代码中表达此思想的话,那么就要用到轮循机制中的/dev/input/event%d,当然是用access,检测是否有设备的插入与拔出。 由于工原创 2012-04-01 10:56:23 · 877 阅读 · 0 评论 -
android的root权限问题
今天终于把android的apk正常调用/sys下的bind与unbind。 现象: 插入鼠标后,会在/sys下面生成一个usb设备,其中就会有unbind与unbind。由于项目中需要走自己的usb采集,因此要用到绑定与解绑定。自己写的测试程序,可以正常绑定与解绑定,但是apk调用测试程序后就会出现解绑定失败。 分析过程: 出现这种现象,人的第一反应就会认为是an原创 2012-03-22 14:12:12 · 1012 阅读 · 0 评论 -
linux下的spi调试.
最近手头有一平台要用spi口操作外设寄存器. 查了查,发现其不支持spi操作. 后发现一文章,我是其于此基础上做的. 文章地址为:http://blog.csdn.net/sg131971/article/details/6700636 但是我用的与其有差别, 在此重点说一下, 1,首先配置内核,此处无差别. 2,添加结构体原创 2012-05-28 20:28:23 · 4106 阅读 · 0 评论 -
什么是SPI的bitbang / bit bang / bit-bang / bitbanging
【整理】什么是SPI的bitbang / bit bang / bit-bang / bitbanging在了解了基本的SPI之后,在Linux内核源码里面,发现关于SPI来说,有个叫做bitbang的东西,所以有点迷惑,想搞清楚bitbang是啥意思。找了点资料,大概看明白了:首先,对于多数情况来说,我们所用的SPI,都是有对应的SPI的控制器的,其负责和外部SPI设备进行通信,转载 2012-05-29 09:23:10 · 3882 阅读 · 0 评论 -
SPI总线协议及SPI时序图详解
原文地址: 暂时未找到原文的链接地址---》希望原作者原谅。。。SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。SPI是一个环形转载 2012-05-29 09:24:14 · 584 阅读 · 0 评论 -
linux spi子系统驱动分析
原文网址 : http://blog.chinaunix.net/u2/66039/showart_1686204.html2.6.18内核下已经添加了完整的spi子系统了,参考mtd的分析,将从下到上层,再从上到下层的对其进行分析。以下先从下到上的进行分析: driver/spi下有两个底层相关的spi驱动程序:spi_s3c24xx.c和spi_s3c24xx_gp转载 2012-05-29 09:25:15 · 533 阅读 · 0 评论 -
增加u-boot对ubi的支持
原文地址: http://blog.csdn.net/yuanlulu/archive/2010/08/31/5853676.aspx最近需要让u-boot支持ubi,方便下载ubi根文件系统。由于参照网上的文章http://blog.chinaunix.net/u3/96428/showart_2275685.html做还是有一些错误,所以总结一下自己的移植。转载 2012-05-29 09:25:58 · 606 阅读 · 0 评论 -
UBIFS 文件系统的使用
原文地址: http://www.study-bbs.com/thread-30290-1-1.html一、 UBIFS 简介由IBM、nokia工程师Thomas Gleixner,Artem Bityutskiy等人于2006年发起,致力于开发性能卓越、扩展性高的FLASH专用文件系统,以解决当前嵌入式环境下以FLASH作为MTD设备使用时的技术瓶颈。UBI:一种类似于转载 2012-05-29 09:26:59 · 791 阅读 · 0 评论 -
U-Boot中ubi和ubifs命令的使用
原文地址:http://www.usr.cc/article-873.html(1)查看MTD分区表[cpp] view plaincopyprint?U-Boot$ mtdparts mtdparts variable not set, see 'help mtdparts'no partitions defined defaults: mtdids :转载 2012-05-29 09:28:31 · 2602 阅读 · 0 评论 -
深入分析request_irq的dev_id参数作用
原文地址: http://blog.chinaunix.net/u2/67414/showart_1723891.htmlrequest_irq的作用是申请使用IRQ并注册中断处理程序。request_irq()函数的原型如下:[cpp] view plaincopyprint?/* kernel/irq/manage.c */ int request_ir转载 2012-05-29 09:30:05 · 647 阅读 · 0 评论 -
Linux Platform Device and Driver
转载地址:http://blog.csdn.net/android83/article/details/5983972参考资料:linux-2.6.24/Documentation/driver-model/platform.txthttp://blog.chinaunix.net/u2/60011/showart_1018502.html《platform _device转载 2012-05-29 09:38:55 · 649 阅读 · 0 评论 -
mmap DMA
第 13 章 mmap 和 DMA本章将深入探讨 Linux 内存管理部分,并强调了对设备驱动程序编写者非常有帮助的技术重点。这一章内容属于高级主题,不需要所有人都掌握它,虽然如此,很多任务只能通过更深入地研究内存管理子系统而做到,同时本章也帮助读者了解内核重要组成部分的工作方式。本章内容分为三节。第一节讲述了 mmap 系统调用的实现,mmap允许直接将设备内存映射到转载 2012-05-29 09:42:22 · 961 阅读 · 0 评论 -
映射文件
转载地址:http://sourceforge.net/apps/trac/elpi/wiki/AlpMappedMemory?format=txt= 映射内存 =映射内存提供了一种使多个进程通过一个共享文件进行通信的机制。尽管可以将映射内存想象为一个有名字的共享内存,您始终应当记住两者之间有技术层面的区别。映射内存既可以用于进程间通信,也可以作为一种访问文件内容的简单方法。 映射转载 2012-05-29 09:43:11 · 776 阅读 · 0 评论 -
ARM MMU工作原理剖析
转载地址:http://blog.csdn.net/lihaoweiv/article/details/6080098 一、MMU的产生许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨转载 2012-05-29 09:46:51 · 759 阅读 · 0 评论 -
Using SPI with Linux
转载地址:http://www.armbedded.eu/node/318IntroductionSPI (Synchronous Peripheral Interface) is a synchronous serial interface with which to connect peripheral chips like ADCs, EEPROMS, Sensors or othe转载 2012-05-30 11:18:48 · 1121 阅读 · 0 评论 -
发现一篇比较好的spi文章
转载地址:http://www.embedu.org/Column/Column367.htm作者:刘洪涛,华清远见嵌入式学院讲师。一、概述基于子系统去开发驱动程序已经是linux内核中普遍的做法了。前面写过基于I2C子系统的驱动开发。本文介绍另外一种常用总线SPI的开发方法。SPI子系统的开发和I2C有很多的相似性,大家可以对比学习。本主题分为两个部分叙述,第一部分介绍基于SPI子系转载 2012-05-31 14:45:48 · 1524 阅读 · 0 评论 -
如何学习linux设备驱动
转载地址:http://blog.sina.com.cn/s/blog_407d1abb0100tru9.html如何学习linux设备驱动作者:于连庆,华清远见嵌入式学院讲师。Linux系统目前主要维护2.4和2.6两个内核版本,在http://www.kernel.org/ 网站上已经可以下载到最新的2.6内核linux-2.6.38.6,及最新的2.4内核linux-2.4.37转载 2012-05-31 18:32:01 · 482 阅读 · 0 评论 -
Linux中EXPORT_SYMBOL的用法
转载:http://blog.chinaunix.net/space.php?uid=7547035&do=blog&id=60068EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内转载 2012-06-01 19:26:49 · 671 阅读 · 0 评论 -
关于linux设备模型kobject,kset,ktype
一、sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因此把ktype单独剥离出来,kobj,kset,ktype成为了各个驱动模型最底层的关联元素,并由此形成了sys下的各种拓扑结构。二、关于kobject 首先看一下kobject的原型转载 2012-02-28 16:36:37 · 633 阅读 · 0 评论 -
Linux中Workqueue机制分析
走入Linux的殿堂已经有一年有余了,在这里我想将Linux的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软件开发也接近两年了,在这一段时间内我越发认为软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此转载 2012-02-27 15:55:37 · 532 阅读 · 0 评论 -
Linux驱动的platform机制
转载地址:http://hi.baidu.com/sdqdshixin/blog/item/366c91167e54bd4ef2de3221.html最近在看SPI、I2C这样简单点的总线驱动程序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver.现在Linux中大部分的设备驱动都可以使用这套机制,总线为platform转载 2012-06-01 18:48:29 · 604 阅读 · 0 评论 -
linux 内核模块之间通信
Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。1. 符号导出函数EXPORT_SYMBOL()EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块转载 2012-06-01 20:53:35 · 3204 阅读 · 0 评论 -
Linux驱动的platform机制
最近在看SPI、I2C这样简单点的总线驱动程序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。现在Linux中大部分的设备驱动都可以使用这套机制,总线为platform_bus,设备用platform_device表示,驱动用platform_driver进行注册。 Linux的这种platform drive转载 2012-06-01 22:42:05 · 493 阅读 · 0 评论 -
LINUX中断机制与信号
在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。LINUX中断机制与信号中断和异常 l 中 断(也称硬件中断)定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。分类 : 可转载 2012-02-28 17:46:25 · 726 阅读 · 0 评论 -
内核如何调用spi驱动模块
在做一项目,就是在内核中操作spi1口,即在驱动级别调用spi驱动.说白了,就是在驱动层获得spi_device这个结构体.刚开始把其想复杂了,在网上看了看,看不到什么有用的信息. 因此我就自己查了查spi.c的中的文件,发现了一个函数spi_busnum_to_master,这是用EXPORT_SYMBOL_GPL到内核全局模块的.应该能用.特此记录.原创 2012-06-02 13:50:29 · 1698 阅读 · 0 评论 -
kzalloc 函数详解
用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0.[csharp] view plaincopy/** * kzalloc - allocate memory. The memory is set to zero. * @si转载 2012-02-29 17:37:21 · 600 阅读 · 0 评论 -
mmap
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,转载 2012-01-04 16:22:38 · 581 阅读 · 0 评论 -
sysfs API总结
sysfs是用于表现设备驱动模型的文件系统,它基于ramfs。要学习linux的设备驱动模型,就要先做好底层工作,总结sysfs提供给外界的API就是其中之一。sysfs文件系统中提供了四类文件的创建与管理,分别是目录、普通文件、软链接文件、二进制文件。目录层次往往代表着设备驱动模型的结构,软链接文件则代表着不同部分间的关系。比如某个设备的目录只出现在/sys/devices下,其它地方涉及到它时转载 2012-02-27 16:11:57 · 616 阅读 · 0 评论 -
工作记录之spi调试记录
这周一直在调试spi口,调试通过spi口很简单,但是在与slave的通信上出了问题.不管我怎么发命令,slave就是不响应.刚开始一直怀疑是时序问题,由于在uboot下是正常的,因此我在uboot下把时序抓下来分析,然后再到内核下发数据再对比,发现spi的mosi的输出数据的间隔有一点差别,uboot下是1.4us,而kernel下去是8us,不管我怎么试就再也提不上去了.但是slave还是没原创 2012-06-02 13:46:20 · 975 阅读 · 1 评论 -
kmalloc、vmalloc、malloc的区别
简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大内存只有在要被DMA访问的时候才需要物理上连续vmalloc比kmal转载 2012-02-29 17:38:35 · 562 阅读 · 0 评论 -
内核中调用spi接口
最近在做内核中调用spi接口的东西. 想出了三种办法:1,用ioremap.2,用sys_open或者filp_open.3,用spi.c中的接口实现. 1,ioremap 直接操作寄存器的.不想用这种办法. 2,用sys_open或者filp_open sys_open无法直接调用,一调用就出错,不原创 2012-06-05 19:11:01 · 1500 阅读 · 1 评论 -
I2C总线及EEPROM的Linux驱动程序的设计
之所以转载此博客,是因为这个对linux架构解释的比较清楚. 1 引言 I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象转载 2012-06-05 20:05:16 · 881 阅读 · 0 评论 -
at91的i2c的时钟配置
今天要在做i2c驱动,把at91的相关东西配置好,在/dev底下出现i2c-0节点,发现频率有点高,得降低到100K以下,因为其是用gpio模拟的scl与sda,因此在armarm/mach-*/*_devices.c中有一个结构体为i2c_gpio_platform_data,里面的成员udelay便是修改时钟的.原创 2012-06-05 19:15:29 · 902 阅读 · 0 评论