关于应用程序和驱动关联问题

attachments-2020-05-cSD7pQSz5ec8752367b91.png

attachments-2020-05-WmvRrodT5ec8753140b41.png1:应用程序和驱动程序是怎么关联的?

有如下疑问

2:打开设备节点首先要有设备节点才对,为啥在驱动里面还要去创建设备节点?:

3:还有几句代码还请解释下

attachments-2020-05-W4vLSmxc5ec87760da971.png圈里的程序没理解

4:关于man 2 write,查找的是应用层的write,而不是驱里面的*write

如图

attachments-2020-05-zO9taJGW5ec875a9a6042.png

attachments-2020-05-CfkeEPp45ec8758d853c0.png

请先 登录 后评论

2 个回答

hceng

1. 执行 strace hello,可以看到该应用调用到驱动的整个过程;简单说就是应用打开某个节点,那个节点的驱动,也打开对于的函数,应用open,驱动里的也open,应用的write,驱动也write。


2.打开设备节点首先要有设备节点才对,为啥在驱动里面还要去创建设备节点?

应用是要打开设备节点,这个节点哪里来?就是驱动创建的啊。


3.Linux驱动的框架,创建一个类,创建结果会在sys/class下。

这个就是内核驱动这样规定的,必须创建类。

这几行就是使用class_creatce创建类,然后用宏PTR_ERR宏检查创建的结果是否正确的到对于的err值,IS_ERR和前面的作用类似,个人感觉留一个就行,实际效果可以测下。如果创建结果有问题,就调用unregister_chrdev()释放前面的register_chrdev(),退出。


4.是的

man 1 命令

man 2  系统调用

man 3  库函数

请先 登录 后评论
st_ashang - 论坛编辑
擅长:嵌入式开发

看一下《字符设备驱动视频》(新的老的都行),这些一定讲了,不建议不看视频就提问(先自己尝试解决)

请先 登录 后评论
  • 3 关注
  • 0 收藏,158 浏览
  • 张工 提出于 2020-05-23 09:08

相似问题