linux文件驱动框架linux文件驱动

如题所述

linux自动加载驱动的原理?

Linux设备驱动程序工作原理

Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。

系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,运行在核心态,它完成以下的功能:

1.对设备初始化和释放.

2.把数据从内核传送到硬件和从硬件读取数据.

3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据.

4.检测和处理设备出现的错误.

在Linux操作系统下有三类主要的设备文件类型:字符设备、块设备和网络接口。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。

已经提到,用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备?另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他们。设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序。

最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度。也就是说,系统必须在你的驱动程序的子函数返回后才能进行

由于用户进程是通过设备文件同硬件打交道,对设备文件的操作方式不外乎就是一些系统调用,如open,read,write,close....,注意,不是fopen,fread,但是如何把系统调用和驱动程序关联起来呢?

如何用arm-linux-gcc编译驱动程序,Makefile文件怎么写?

这个没有什么特殊的要求。你只要按照你需要的正确的语法规则和编译顺序,将gcc编译器对C语言源程序的编译选项(例如:对源程序只编译不连接的选项为:-c、或者是生成指定的运行文件:-omy_outputfile,等等)写到makefile文本文件中即可。但是一定要注意它们之间在makefile文件之间的前后顺序。

如何在Linux系统安装显卡驱动?

给你总结一下吧!

1.先看硬件列表,用lspci,找到VGA那一行,确定型号2.网上找相应型号的驱动并下载3.安装之前,要禁掉X-serveri:方法为:vim/etc/X11/xorg.conf禁掉其中device部分4.重启系统,以root登录5.找到驱动文件,执行:sudosh./*.run(或其他格式)

6.startx启动X-server

linux驱动设备名在哪个文件夹下?

设备驱动名一般都在/dev目录下。一般常用的设备的设备文件名如下:/dev/hd:IDE设备/dev/sd:SCSI设备/dev/fd:标准软驱/dev/md:软raid设备/dev/loop:本地回环设备/dev/ram:内存/dev/null:无限数据接收设备,相当于黑洞/dev/zero:无限零资源/dev/tty:虚拟终端/dev/ttyS:串口/dev/lp:并口/dev/console:控制台/dev/fb:framebuffer

如何自学linux驱动开发,做驱动开发需要哪些方面的知识?

做嵌入式应用的话一般的编程就可以了。那么嵌入式驱动开发与内核开发的话就需要学习多个方面的知识。我就把这方面的要求给你交流一下:(一家之言啊,自己多年从事嵌入式开发的一点感悟)嵌入式驱动开发需要了解的知识大概有以下几类:

1嵌入式操作系统驱动框架。

每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具体位置与构建驱动程序的主要事项2总线知识,比如PCI、USB总线。

3芯片知识。

驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理4要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识5C++基本用不上,主要是C和汇编。

6做驱动最好要懂内核调试(比如说linux)

温馨提示:答案为网友推荐,仅供参考
相似回答