Linux应用程序如何调用驱动程序

 我来答
wangyuhangjing
推荐于2017-10-01 · TA获得超过217个赞
知道答主
回答量:57
采纳率:0%
帮助的人:79.1万
展开全部
一般的驱动程序是不允许应用程序调用的,只有当驱动程序留出这种供外界访问的接口才行,这种接口一般包括read,write,open,ioctl等接口,如果驱动中预留出了这些接口,就可以在应用程序中调用,比如fd=open(设备,参数);或者fd=ioctl(设备,参数);,这样就会调用到这个设备驱动中的open或者ioctl函数。所以一般如果想再应用程序中调试某个驱动程序,常见的方法就是自己建立一个驱动模块,这个模块中预留出对外接口,比如ioctl。然后在你新建的这个驱动模块中完成ioctl函数,如下:
int device_ioctl(fd,argv) {
/* your function; */
}
static struct file_operations device = {
.ioctl = device_ioctl //预留外部接口
};
应用程序如下:
ioctl(device,argv);
上面这句就可以完成你的模块中ioctl中的功能。
I多多问题多多
2012-01-03 · TA获得超过379个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:101万
展开全部
这个很难一两句话能说清楚的拉
驱动程序 只是一个模块 其中有一些操作方法 如ioctl方法
注意:驱动程序不是运行着的 只有初始化时运行一下初始化函数 以致为了节省空间在初始化完后都可以删掉驱动程序的初始化函数(如果在初始化函数前加上__init)
其他的操作方法只有在应用程序调用到时才运行到对应的操作方法(即驱动中对应的函数)。
在应用程序中调用ioctl时 由linux系统内核去实现 最终调用到 驱动程序的那个ioctl方法
具体的调用过程就要去分析一下linux的这段内核源代码了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
allen_wuhan
2012-01-02 · 超过86用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:50%
帮助的人:172万
展开全部
需要了解一下Linux下,程序的层次,驱动程序应该就是核心层的一个任务,核心层的任务预留了应用层的调用接口。可以从一个串口的通信程序研究起。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a_网明天涯
2012-01-03 · 超过15用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:33.3万
展开全部
基本都是通过接口调用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式