随笔分类 -  linux驱动

摘要:一、基本概念 1、临界资源 该资源的访问是受限,一个进程访问了该资源,其他进程就不能访问该资源,得不到该资源的进程,该进程有什么动作: 1)进程就产生阻塞 >进入睡眠状态,使用机制:信号量和互斥锁 2)进程就会进入忙等待 >进程还是运行状态,使用机制:自旋锁 3)进程就会退出 临界资源举例: req 阅读全文
posted @ 2016-10-07 00:12 高傲的monkey 阅读(2006) 评论(0) 推荐(0)
摘要:自动创建设备文件 1.自动创建设备文件的流程 字符设备驱动模块 --》创建一个设备驱动class >创建属于class的device >调用mdev工具(自动完成)--> 生成设备文件 mdev工具会根据/sys下的class找到相对应的device,然后根据device创建设备文件 class / 阅读全文
posted @ 2016-05-06 17:19 高傲的monkey 阅读(961) 评论(0) 推荐(0)
摘要:一。linux中访问外设的方法. 1.IO端口(IO port) linux系统给外设分配不同的端口号,linux利用端口号来访问设备(驱动) (cpu x86) cpu访问外设通过端号,访问通过地址 gec@ubuntu:/mnt/hgfs/tea/demo2$ cat /proc/ioports 阅读全文
posted @ 2016-05-06 15:56 高傲的monkey 阅读(2752) 评论(0) 推荐(1)
摘要:设备驱动程序:以内核模块的形式存在也就是*.ko 设备驱动程序和系统调用关系.系统调用:应有程序和操作系统(内核) 之间的接口(应用程序与内核的交互)设备驱动程序:内核和设备硬件之间接口(内核与硬件的交互) 整个过程实现了应用程序间接访问了底层的硬件。 test.c中调用open 》系统调用(sys 阅读全文
posted @ 2016-05-05 15:57 高傲的monkey 阅读(4323) 评论(1) 推荐(0)
摘要:模块: 模块机制,作用搞高LINUX操作系统的扩充性. 1. 模块概念: 1.动态可加载内核模块LKM 2.内核空间运行 3.是不是一执行文件,是一个没有经过链接,不能独立运行的一个目标文件(.c->.o-->.ko) 4.通insmod命令,把内核模块载入内核空间,rmmod命令 .koc从内核空 阅读全文
posted @ 2016-05-03 19:05 高傲的monkey 阅读(1044) 评论(0) 推荐(0)
摘要:平台总线驱动设计1.平台总线概述(总线驱动中最为重要的一个总线)平台总线(Platform bus)是linux2.6内核加入的一种虚拟总线,其优势在于采用了总线的模型对设备与驱动进行了管理,这总线的模型对设备与驱动进行了管理,这样提高了程序的可移植性。通过平台总线机制开发设备驱动的流程:定义pla... 阅读全文
posted @ 2015-09-20 19:17 高傲的monkey 阅读(272) 评论(0) 推荐(0)
摘要:总线设备驱动模型(举足轻重:这个模型运用到众多驱动中)1.总线模型概述如usb总线,总线上有鼠标驱动,网卡驱动,键盘驱动。现在往总线上插入一个设备,这个设备是usb网卡。首先总线会感知到有一个设备插上来了,那么这个设备到底使用的是哪一个设备,那么这个时候总线就会将总线上挂载的驱动一一和这个设备来匹配... 阅读全文
posted @ 2015-09-20 19:16 高傲的monkey 阅读(415) 评论(0) 推荐(0)
摘要:4.中断分层处理a.中断嵌套中断嵌套指的是当一种中断产生的时候,又发现了另一种类型的中断。b.中断分层方式假如一个中断处理程序需要10秒钟,中断处理程序运行到第七秒的时候,出现了另外一种类型的中断,但是另外一种类型的中断丢失掉了,那么如何解决呢?一种方法是将中断处理的时间尽量缩短,减少丢失中断的可能... 阅读全文
posted @ 2015-09-20 19:14 高傲的monkey 阅读(339) 评论(0) 推荐(0)
摘要:1.混杂设备驱动模型a.混杂设备描述混杂设备概念:在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的混杂... 阅读全文
posted @ 2015-09-20 19:05 高傲的monkey 阅读(301) 评论(0) 推荐(0)
摘要:模拟一个虚拟寄存器设备驱动1.编写驱动#include #include #include #include #include int dev1_registers[5];int dev2_registers[5];struct cdev cdev; dev_t devno;/*文件打开函数*/in... 阅读全文
posted @ 2015-08-14 17:29 高傲的monkey 阅读(468) 评论(0) 推荐(0)
摘要:1.设备描述结构cdev驱动模型种类繁多,这就需要我从众多的模型中提取出他们的一些共性:a.驱动初始化a.1 分配设备描述结构a.2 初始化设备描述结构a.3 注册设备描述结构a.4 硬件初始化b.实现设备操作c.驱动注销---------------------------------------... 阅读全文
posted @ 2015-08-13 23:34 高傲的monkey 阅读(364) 评论(0) 推荐(0)
摘要:1.编译、安装驱动linux系统中,驱动程序通常采用内核模块的程序结构来进行编码,因此,编译、安装一个驱动程序,其实质就是编译、安装一个内核模块。将文件memdev.c makefile 放入虚拟机中,make 得到.ko文件cp .ko rootfs启动开发板 insmod *.ko2.创建设备文... 阅读全文
posted @ 2015-08-13 23:25 高傲的monkey 阅读(321) 评论(0) 推荐(0)