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)!