![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动学习
文章平均质量分 77
bluepcxx
这个作者很懒,什么都没留下…
展开
-
Linux2.6驱动编译分析
驱动与内核相关,所以对驱动的编译来说,真正的编译者是内核的Makefile。可以从下面看到KERNELDIR ?= /linux-2.6.30.4# The current directory is passed to sub-makes as argumentPWD := $(shell pwd)CROSS_COMPILE = arm-linux-CC = $(CROSS_C原创 2014-01-21 19:29:15 · 529 阅读 · 0 评论 -
linux驱动编程--内存与I/O访问
(still a problem)原创 2014-03-25 21:48:07 · 976 阅读 · 0 评论 -
linux驱动编程--RTC(part one)
最近制作了一个RTC驱动,按照面向对象的方式实现之后,有了一些收获就简单记录了下来以供参考原创 2014-05-06 21:07:05 · 851 阅读 · 0 评论 -
linux驱动例3--计时器,带阻塞功能,中断分段
在前面带阻塞功能计时器的基础上,再对中断进行分段处理。中断分段处理有两种常用的方式tasklet和工作队列。 之所以需要将一个中断处理过程分段是因为在处理普通中断时系统需要屏蔽其他中断(?否则可能可能产生混乱),这就导致了系统会对新到中断的响应有延迟。所以考虑了一种新的方式来处理这个问题:就是给中断挂一个可以允许新中断的尾巴;将必要的事在中断中处理,然后快速退出中断状态,把剩余的原创 2014-03-21 20:43:10 · 677 阅读 · 0 评论 -
linux驱动编程--中断
处于改善中断处理效率,中断处理函数被分成了两部分:顶半部和底半部。底半部有三种实现方式:tasklet,工作队列和软中断。Tasklet tasklet运行于软中断上下文,所以在其处理函数中不允许睡眠。其函数解析如下: /** 信息结构体*/ struct tasklet_struct { struct tasklet_struct *next; //信息原创 2014-03-22 15:47:22 · 837 阅读 · 0 评论 -
linux驱动编程--设备模型3--平台设备解析
按照前面理解的设备模型,今天又制作了一个。平台设备版本的 "hello world".原创 2014-04-17 20:29:25 · 956 阅读 · 0 评论 -
linux驱动编程--设备模型2
在前面学习了 kobject和 kset之后,就迫不及待的想开始“研究”设备模型了。它们的工作原理到底是什么,又是怎样组织自己的逻辑结构的?经过这几天的学习,感觉受益匪浅。所以就将自己的理解整理了下来原创 2014-04-15 21:56:49 · 810 阅读 · 0 评论 -
linux驱动例2--带阻塞功能的计时器
在前面的基础上。希望添加一个等待队列,用于阻塞不能得到资源的进程们。在资源释放时,再从阻塞中恢复。#include #include #include #include #include #include #include #include #include #include #include #define DEV_NAME "new_tim原创 2014-03-19 20:42:10 · 746 阅读 · 0 评论 -
linux驱动例1--计时器
1.制作一个定时器驱动#include #include #include #include #include #include #include #include #include #include #define DEV_NAME "new_timer"#define DEV_MAJOR 0#define DEV_MONITOR原创 2014-03-19 20:43:51 · 642 阅读 · 0 评论 -
linux驱动编程--内核时钟浅析
模型: 为了能计时,且可以支持任意多个定时。内核需要使用定时器和中断资源,但内核采用了巧妙的结构,使得只用了一个定时器和中断就实现了上述需求。 内核将所有的定时需求做成哈希链表,然后计算两次定时需求之间的差值,根据定时之间的差值来设置底层定时器的计时时间。从而使得在只使用一个定时器的情况下可以同时满足大量的定时需求。 计时器向量表 在内核中为每原创 2014-03-14 20:28:10 · 622 阅读 · 0 评论 -
linux驱动编程--工作队列浅析
内核默认为每个cpu创建一个worker process,events/0;并在全局的工作队列上为其挂上了一个专属的链表()。工作会被挂到该链表上,由events/0取出来执行。centainly, except for this default worker process.User could create a new worker, too. and the kernel will help原创 2014-03-06 20:01:45 · 879 阅读 · 0 评论 -
linux驱动编程--异步通知与异步I/O
@signal for software is equal to @interrupt for hardware.(信号是软件上对于中断的模拟)原创 2014-03-02 16:47:39 · 804 阅读 · 0 评论 -
Linux驱动编程--阻塞控制
等待队列阻塞原创 2014-02-27 21:24:42 · 738 阅读 · 0 评论 -
linux驱动编程--等待队列浅析
之前查找等待队列资料的时候,对其工作原理一直不熟悉,今天再次查看源码时,收获颇丰。假设要制作一个fifo,用于不同进程间拷贝数据,如果该fifo提供阻塞功能,那么要考虑的下面一些情况:1).读操作时fifo里没有可读数据。2).写操作时fifo里已经写满了。下面是一个关于读的例子:void read(.......){ DECLARE_WAITQUEUE( wait, current)原创 2014-02-26 21:00:30 · 704 阅读 · 0 评论 -
linux驱动编程--几个重要函数及概念
cdev_initcdev_alloc register_chrdev_region()alloc_chrdev_region() cdev_addcdev_del cdev_delunregister_chrdev_region() /***/class_create()device_create()class_destroy()d原创 2014-02-11 21:29:38 · 723 阅读 · 0 评论 -
Linux驱动编程--字符设备文件注册
CreateClassDestroyClass原创 2014-02-07 20:12:23 · 822 阅读 · 0 评论 -
s3c2440简单驱动编程-led
OS :linux cpu :s3c2440 开发板:TQ2440先制作一个驱动的基本构架: 找到外接硬件的对应管教: 现在开始根据手册查找开发板信息(这一步是开发板级信息),由于目标是控制led,故先去“TQ2440的底板原理图”查找管教信息。根据led的电路连接,查找到其对应的cpu管教为GPB5原创 2014-01-24 17:38:03 · 742 阅读 · 0 评论 -
linux2.6驱动编译-常见问题
1).建立了nfs挂载文件夹后,发现一从虚拟机下载资源,就会卡住。并提示 "nfs: server 200.200.200.153 not responding, still trying“。 可能是由于UDP服务在传输较大文件时不稳定造成,可以改用TCP服务 ifconfig eth0 200.200.200.149 up; nfs -o n原创 2014-01-24 15:17:02 · 650 阅读 · 0 评论 -
linux驱动编程--设备模型1
最近学习设备模型的运行机制,进过书上和网上资料的训练,貌似已经修改出了自己的网络权值,所以写了下来并整理一下自己的思路。 之前的驱动程序由于硬件信息和逻辑操作是写在一起的,所以一个驱动只能适应一种平台。为了提高驱动程序的可移植性,就引出了设备模型。 那么现在面临的问题是:设备模型是怎么工作的?原创 2014-04-09 20:32:06 · 1039 阅读 · 0 评论