Linux驱动开发-05APP和驱动的交互方式

一、传输数据

APP和驱动:

  • copy_to_user
  • copy_from_user

驱动和硬件:

  • 各个子系统的函数
  • 通过ioremap映射寄存器地址后,直接访问寄存器

二、APP使用驱动的四种方式

驱动程序:提供能力,不提供策略

  • 非阻塞(查询)(应用程序访问底层驱动时(read、write时),驱动没有数据不等待,直接返回错误)
  • 阻塞(休眠-唤醒)(底层驱动没有数据时,应用程序休眠,等底层驱动有数据,通过中断来唤醒应用程序)
  • poll(定个闹钟)(应用程序调用poll函数导致驱动中的drv_poll函数被调用,唤醒有两个条件,时间到或者中断)
  • 异步通知(底层驱动没有数据时,应用程序休眠,等底层驱动有数据,通过中断发送信号来唤醒应用程序)
fd = open(argv[1], O_RDWR | O_NONBLOCK);//第二个参数O_NONBLOCK表示以非阻塞的方式去打开驱动文件,在驱动读函数里面,数据的buf是空的,并且flag是 O_NONBLOCK马上返回错误(如果驱动程序不进行判断以什么方式打开,就无法实现非阻塞方式打开驱动࿰

相关推荐

  1. 按键驱动中断方式按键驱动

    2024-07-20 16:46:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 16:46:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 16:46:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 16:46:02       87 阅读
  4. Python语言-面向对象

    2024-07-20 16:46:02       97 阅读

热门阅读

  1. axios

    axios

    2024-07-20 16:46:02      30 阅读
  2. 使用Spring Boot和RabbitMQ实现消息驱动微服务

    2024-07-20 16:46:02       26 阅读
  3. postgresql 大于当前时间升序,小于当前时间降序

    2024-07-20 16:46:02       24 阅读
  4. 在 C# .NET 中丢弃变量

    2024-07-20 16:46:02       26 阅读
  5. 基于深度学习的故障检测

    2024-07-20 16:46:02       24 阅读
  6. 【Spring Boot 自定义配置项详解】

    2024-07-20 16:46:02       23 阅读
  7. 13、.Net相关的书籍 - .Net循序渐进系列文章

    2024-07-20 16:46:02       28 阅读
  8. OpenWrt安装快速入门指南

    2024-07-20 16:46:02       27 阅读