Linux驱动
文章平均质量分 79
喜欢哲学的女孩
人生苦短,何必将就
展开
-
【Linux驱动】第一个驱动程序
将近俩月的时间一直都在朝驱动程序这个方向前进,从刚开始买了一块TQ2440开发板,然后进开始修改、烧写Uboot,修改、裁剪、烧写Linux内核,然后就是一些服务器的搭建tftp、samba等,还有交叉编译环境的搭建,然后是修改驱动程序,一直到现在写了自己的第一个驱动程序,明白了编写驱动程序的流程,虽然只是类似于Helloworld的简单的不能再简单的程序,但是这也算是站在了神秘的驱动程序的家门口原创 2014-06-08 11:41:28 · 1399 阅读 · 0 评论 -
【Linux设备驱动】TQ2440按键驱动程序设计
这几天又回到了驱动程序学习的轨道上来。还是从简单的硬件开始一步步的来学习驱动。使用TQ2440开发板上的按键来设计按键驱动程序。★关于按键的结构体按键的结构体主要有:对应的中断号,中断触发方式,按键名称struct button_irq_desc { int irq; //中断号 unsigned long flags;//中断触发方式 char *name;//中断名称};原创 2016-06-03 14:38:59 · 1122 阅读 · 0 评论 -
【Linux驱动】自动创建设备节点
开始学习驱动的时候,是将驱动程序编译成模块然后用mknod命令手动建立设备节点以提供给应用程序调用。这对于刚开始调试驱动程序的时候常用的一种方法。但是,当有种需要必须在系统启动的时候就将驱动程序就绪,来供应用层程序调用。这时就不能再手动的建立设备节点了,而必须自动的创建设备节点(不需要人为的操作)。★注册类注册类的目的是为了使mdev可以在/dev/目录下建立设备节点。首先要定义一个类原创 2014-06-29 00:54:02 · 2017 阅读 · 0 评论 -
【Linux设备驱动】字符设备驱动
★关于设备号◇什么是设备号?它有什么作用?设备号是一个整形数字,它起到连接设备文件与设备驱动的作用。◇它具体是怎样进行连接的?在内核中,字符设备被保存在一个kobj_map结构的cdev_map变量中。通过kobj_map函数将设备号(主次设备号)与字符设备结构体cdev保存到cdev_map中。这个过程实现在cdev_add()函数中,代码如下:int cdev_add(原创 2016-05-31 16:53:10 · 458 阅读 · 0 评论 -
【Linux驱动】TQ2440 LED驱动程序
★总体介绍LED驱动程序主要实现了TQ2440开发板上的4个LED灯的硬件驱动,实现了对引脚GPIOB5、GPIOB6、GPIOB7、GPIOB8的高低电平设置(common-smdk.c中已经实现了对引脚的配置),利用测试程序调用该驱动程序,通过命令控制LED灯的亮灭。★详细介绍1、驱动程序代码:My_led.c#include #include #include #inc原创 2014-06-12 00:12:45 · 1645 阅读 · 0 评论 -
fork,你拿什么证明你的写时拷贝(COW)
本文转载于:http://blog.chinaunix.net/uid-24774106-id-3361500.html 前段时间在学习内核的进程管理方面的东西,看了进程创建和进程调度的代码,想写个大而全的东西,即有内核代码分析,又有一些实验在效果上证明内核的代码。 但是这篇文章很难产,感觉自己还是驾驭不了这个宏大的主题。 好久没写文章了,今天就放弃这个想法,写一个简单的东西。转载 2015-02-12 12:01:18 · 798 阅读 · 0 评论 -
linux驱动中的write函数
Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一 个简简单单的write函数能够完成向转载 2015-01-21 17:01:41 · 1871 阅读 · 0 评论 -
【Linux 驱动】设备驱动程序再理解
学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下。★什么是驱动程序刚开始学习设备驱动程序的时候,产生了许多的问题。什么是驱动程序?驱动程序是干嘛的?它是如何工作的?它又是如何跟操作系统联系起来的?一系列的问题,现在有些地方还是不一定清楚,但是相比起刚开始的那个阶段,感觉自己还是清楚了很多。设备驱动程序说白了(实质原创 2014-06-19 00:35:14 · 2052 阅读 · 0 评论 -
【Linux驱动】TQ2440 DM9000E网卡驱动移植(Linux-2.6.30.4)
花了一天的时间研究了一下Linux-2.6.30.4版本内核下关于TQ2440 DM9000E的网卡驱动移植,总结一下自己的收获。 其实,在Linux-2.6.30.4版本内核下有关于网卡驱动,但是这个网卡驱动不是针对于 DM9000E,而是针对于 DM9000的。因此要在此基础之上修改一些参数,并且打上必要的相关代码。这个网卡驱动移植是参照了“天嵌科技出品-Linux移植之Ste原创 2014-05-23 00:34:21 · 1825 阅读 · 0 评论 -
linux驱动开发的经典书籍
Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为《linux_device_driver 3rd Edition》,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了。但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的。除了这本Jonathan Corbet, Gr转载 2014-05-29 10:19:37 · 1141 阅读 · 0 评论 -
【Linux驱动】Linux-2.6.20.4内核移植
最近一段时间一直在学习向TQ2440开发板移植内核、移植驱动。真心觉得这方面的知识有很大的难度。但是从另一角度去看,难度越大,能力提升的空间就越大!!1、解压源码从网上下载一个Linux 内核,我是用的是Linux-2.6.20.4。然后用命令解压。建议解压到“/home/用户名”目录下。我的内核源码存放在:2、添加对ARM的支持因为所用的是TQ2440开发板,属于ARM9。因原创 2014-05-18 12:46:49 · 1439 阅读 · 2 评论 -
【Linux驱动】文件描述符以及相关知识
1、文件描述符Linux操作系统中,几乎所有的设备都被抽象成为设备文件。因此,当我们想对设备进行操作的时候可以直接去操作其相应的设备文件。设备文件即是文件,要想对文件进行操作,无非就是:打开文件、关闭文件、写入数据、读出数据等,它们分别对应的函数有open(),close(),write(),read(),就以其中的open()函数做一个分析。open函数的作用是打开一个文件。(1)它的定原创 2014-05-28 17:38:08 · 2029 阅读 · 0 评论 -
很好的linux下GPIO驱动详解文章
打算跟着友善之臂的《mini2440 linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的定义,并对驱动加以验证 ***************************************转载 2014-06-11 08:44:04 · 724 阅读 · 0 评论 -
linux驱动头文件位置的说明
zhuanghttp://blog.csdn.net/dreaming_my_dreams/article/details/7745148在不同版本的内核源码上,头文件所在的位置是不同的,比如说在#include#include同样是regs-gpio.h,是在比较低的版本(比如2.6.25)上位于arch/arm/include/asm中,而mach/regs转载 2014-06-07 17:24:01 · 804 阅读 · 0 评论 -
【Linux设备驱动】Linux输入子系统之底层驱动
★什么是Linux输入子系统?为何引入Linux输入子系统?Linux输入子系统是为多种不同的输入设备提供一种统一的机制,将它们归属到统一架构下面。在输入子系统以前,输入设备(鼠标、键盘)都是采用字符设备或者混杂设备进行处理。因此就会产生一个问题,如何将硬件不同、类型不同的输入设备进行统一的处理,才有了后面的Linux输入子系统。★Linux输入子系统的层次结构Linux输入子系统分为原创 2016-06-21 11:48:33 · 656 阅读 · 0 评论