一、大体调用过程

应用程序位于用户空间,驱动程序位于内核空间,Linux系统规定,用户空间不可以直接调用内核空间的函数。所以必须经过系统调用,应用程序才可以调用驱动程序的函数。具体系统调用的过程,这是属于更高级别的知识,以后有机会再补充,大体就是通过C库函数实现的,目前只要知道这个过程即可。另外,应用程序通过系统调用去调用驱动程序的函数,还有一个前提就是驱动程序必须留有接口,这里的接口就是ops函数操作集(有点类似Windows的DLL),所以我们一般在驱动程序中设计好接口,然后实现接口函数。

二、具体实施过程

2.1根据对设备的操作需要,设计驱动程序的接口, 如下:

2.2在驱动程序中实现接口,如下:

static int xxx_open(struct inode *inode, struct file *filp)

{

/* 实现具体的功能*/

return 0;

}

static ssize_t xxx_read(struct file *filp, char __user *buf, size_t cnt, loff_t *off)

{

/* 实现具体的功能*/

return 0;

}

static ssize_t xxx_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *off)

{

/* 实现具体的功能*/

return 0;

}

2.3在应用程序通过C库函数,调用驱动程序的接口,实现对设备的操作:

先打开设备文件得到文件标识符:fd = open(filename, O_RDWR);

根据文件标识符实现读操作:ret = read(fd, databuf, sizeof(databuf));

根据文件标识符实现写操作:ret = write(fd, writebuf, sizeof(writebuf));

2.4如果使用设备树的话,在设备树文件dtsi中增加设备信息。

Linux应用程序调用驱动程序的过程相关推荐

  1. 驱动开发(一)——(单片机程序、Linux应用程序与驱动程序分析)

    文章目录 前言 157准备工作 配置交叉编译链 编译内核 编译解压glibc 单片机程序 应用程序 驱动程序 三者的关系 前言 学习资料,跟的韦东山老师的视频,大家可以上百问网下载资料 百问网. 我使 ...

  2. Linux应用程序和驱动程序如何完成交互,应用程序和驱动的简易交互方式的实现...

    应用程序和驱动的简易交互方式的实现 一般应用程序要操作设备, 都需要相应的设备驱动程序配合才行, 因为在应用层一般都把设备当成一个文件来操作, 所以,如果要给设备发送特殊的命令,一般要用ioctl函数 ...

  3. linux c程序调用脚本,C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  4. python程序调用函数的过程_Python_自定义函数_使用_运行流程

    定义函数会创建一个函数类的对象,有type函数. >>> type(print_new) 调用新函数的语法和调用内置函数是一样的,直接打印函数名: >>> prin ...

  5. python程序调用函数的过程是什么_Python:函数定义和调用时都加*,有什么作用?...

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:玩蛇网

  6. linux 触摸屏程序,触摸屏工作原理以及驱动程序详细分析

    编者:这部分还是比较长的,因此没有放在上个移植里面.这里主要说触摸屏的工作原理,以及对上述驱动程序代码的简单分析.分析中参考了网上的很多资料.感谢原作者的无私奉献,因为涉及多篇,在此就没有注出原作的链 ...

  7. nw.js 调用驱动程序_使用NW.js创建照片发现应用程序(第2部分)

    nw.js 调用驱动程序 NW.js (formerly known as Node Webkit) is a framework for creating cross-platform deskto ...

  8. arm64 linux 除零正常返回,arm64程序调用规则

    前言 这篇主要介绍arm64程序调用规则,详细分析了程序调用过程中,参数是如何传递的.Android.iOS.Linux等基本遵循这些规则,但是各个操作系统平台也有小部分自己特定的规则.下一篇,我将介 ...

  9. 嵌入式程序调用函数的内部过程和机制

    在嵌入式程序中,当一个函数调用发生时,它的内部机理是什么,执行了哪些步骤?如下所示是一个程序在运行时,它的内存分布状况. 当一个程序开始运行时,它的代码被装入到内存,保存在代码区,包括主函数和其他函数 ...

最新文章

  1. 边城高级中学2021届高考成绩查询,湖南省花垣县边城高级中学2021届高三第二学期学科素养测试英语试题及答案.doc...
  2. 12bit的图像如何向8bit转化_【福联影像】10bit显示器比8bit专业在哪?想告别色彩断层必须要了解...
  3. 如何使用C或C ++获取目录中的文件列表?
  4. CSS中常见的长度单位
  5. android view xml,如何将View添加到XML布局android
  6. mysql profiling表_mysql8 参考手册-INFORMATION_SCHEMA PROFILING表
  7. java中 immutable,future,nio
  8. oracle stream 主键,oracle stream配置向导
  9. 人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?
  10. php7如何安装swoole,初学Swoole:PHP7安装Swoole的步骤
  11. 1002. 三角形 (
  12. 总结一些Android好用的开源库
  13. [Markdown][HTML]特殊符号
  14. 怎样注册一个codepen账号
  15. MySql round用法
  16. bugku never_give_up file_get_contents()有php://input漏洞 eregi \x00绕过
  17. 华硕 x570 Ryzen 9 5900X电脑 Hackintosh 黑苹果efi引导文件
  18. tftp linux 配置管理
  19. 信佛的人对佛教的诘问
  20. su:密码正确,但权限被拒绝

热门文章

  1. JavaScript 数组字符串方法
  2. linux系统忘记管理员密码怎么办
  3. python爬取新浪博客_python网络爬虫 新浪博客篇
  4. ARP攻击原理和kali实现ARP攻击
  5. 沉默的螺旋理论(转载)
  6. lrc格式歌词格式化处理函数封装,返回对象数组
  7. 【Unity之c#专题篇】—核心章题单实践
  8. 花季那年北漂(茫茫然)
  9. Centos6 标准分区转换为 LVM 分区就这么简单
  10. 2021年仙桃高考 成绩查询,2021年仙桃高考状元名单公布,仙桃文理科高考状元是谁...