- 博客(12)
- 收藏
- 关注
原创 linux设备驱动程序学习(10) 中断处理
尽管有些设备仅仅通过控制其寄存器就可以得到控制,但现实中的大部分设备却要比这复杂一些。因为大部分设备的处理时间与处理器不在同一个周期,且一定会比处理器慢的多,这就造成了一种让处理器等待设备的现象,显然这是不行的,而有一种解决方法就是中断操作。中断仅仅就是一个信号,当硬件需要获
2011-08-29 16:05:10 1587
原创 softirq,tasklet,workqueue
-------------------------------------------------------------------------引------------------------------------------------------------------
2011-08-29 15:34:03 631
原创 linux设备驱动程序学习(9) 与硬件通信
I/O端口 VS I/O内存知识点:1.每种外设都是通过读写寄存器进行控制。2.在硬件层,内存区域和I/O区域没有概念上的区别:他们都通过像地址总线和控制总线发送电平信号进行访问,在通过数据总线读写数据。3.
2011-08-27 17:58:49 1104
原创 linux设备驱动程序学习(8) 分配内存
kmalloc函数#includevoid *kmalloc(size_t size,int flags);1.不会对所申请的内存清零,保留原有数据2.参数:size:分配大小 flags:km
2011-08-26 16:20:14 786
原创 linux设备驱动程序学习(7) tasklet,工作队列,共享队列
tasklettasklet vs 内核定时器相同:始终在中断期间运行,始终会在调度他们的同一CPU上运行,而且都接收一个unsigned long参数不同:不可以要求tasklet在某一给定的时间执行tasklet对中断处理例程来说尤其有用。中断处理例程必须
2011-08-26 10:00:25 1155
原创 linux设备驱动程序学习(7) 时间、延迟及延缓操作
度量时间差概念:时钟中断:由系统定时硬件以周期性的间隔产生hz:上述间隔由hz的值设定,hz是一个与体系结构相关的常数计数器:发生中断一次,计数器加一,这个计数器的值(只有)在系统引导时被初始化为0jiffies变量:unsigned long 型变量,要么与
2011-08-25 14:06:55 1510
原创 linux设备驱动学习(6) 高级字符驱动学习--阻塞型I/0
提出问题:若驱动程序无法立即满足请求,该如何响应? 比如:当数据不可用时调用read,或是在缓冲区已满时,调用write解决问题:驱动程序应该(默认)该阻塞进程,将其置入休眠状态直到请求可继续。 休眠:当一个进程被置入休眠时,它会被标记为一种特殊状态并从调度器运行
2011-08-24 15:05:23 895
原创 linux设备驱动学习(5) 高级字符驱动程序操作--ioctl
ioctl驱动程序可以使用ioctl执行硬件控制。两种原型:1.在用户空间int ioctl(int fd,unsigned long cmd,...);fd:文件描述符cmd:控制命令,,,:可选参数:插入*argp,具体内容依赖于cmd2.驱动
2011-08-22 13:41:56 1110
原创 linux设备驱动学习(4) 并发与静态
一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序时,第一个要记住的规则是:只要可能,就应该避免资源的共享。若没有并发访问,就不会有竞态。这种思想的最明显的应用是避免使用全局变量。但是,资源的共享是不可避免的 ,如硬件资源本质上就是共享、
2011-08-19 16:39:31 787
原创 linux设备驱动学习(3) 字符设备驱动程序
主设备号,次设备号主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核用dev_t类型()来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。在实际使用中,是通过中定义的宏来转换格式。
2011-08-19 13:59:12 880
原创 linux设备驱动学习(2) 构造和运行模块
设置测试系统1.在kernel.org的镜像网站上获得一个“主线”内核。2.准备好一个内核源代码树。2.6内核的模块要和内核源代码树中的目标文件链接,通过这种方式,构造一个更加健壮的模块装载器。Hello World模块#include
2011-08-19 09:43:57 1083
原创 linux设备驱动程序简介
linux设备驱动程序的作用设备 驱动程序就像一个个的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程
2011-08-19 08:36:00 1359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人