自学内容网 自学内容网

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马上返回错误(如果驱动程序不进

原文地址:https://blog.csdn.net/Abcd_cnom/article/details/140388942

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!