linux驱动probe函数的实现框架思考

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux驱动probe函数的实现框架思考相关的知识,希望对你有一定的参考价值。

linux驱动probe函数的实现框架思考

.probe函数实现无非就是
1)创建一个私有的driver_data用于区分不同的device,因为一个driver可以管理多个device,
2)parse device tree,并根据配置申请资源、io resource、memory;
3)初始化设备
4)注册对应的子系统暴露对应的接口,子系统相关的底层函数需要你实现,实现/dev/设备的file_operation、sysfs、proc接口。;
5)dev_set_drvdata 绑定私有结构和设备的关系
6)最后注册irq(由于irq注册后,硬件的中断随时发生(一旦注册并enable,那么就随时都可能发生,硬件随时变化,所以随时发生),所以必须在注册irq之前保证irq处理函数所使用的资源已经准备好,所以一般irq会在.probe函数的最后激活。)。

其他功能的实现,你需要思考的架构就是对资源的管理(包括内存和io,包括对上层提供的接口导致上层调用时对资源的访问),和硬件datasheet的阅读(从而知道如何控制硬件,实现目标)。另外是让上层调用read/writ直接访问到硬件;还是驱动通过workqueue polling方式访问硬件,并保存到内存中,上层read/write时从内存取值;还是中断发生时,再访问硬件或者启tasklet、workqueue访问硬件,然后保存到内存中,应用read/write时再从内存中取值。 即在什么context下访问硬件。

关于具体的写linux驱动的方法、技巧和注意事项,欢迎观看我的《如何编写linux设备驱动》的视频:
https://edu.51cto.com/course/17132.html

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

另外我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html

以上是关于linux驱动probe函数的实现框架思考的主要内容,如果未能解决你的问题,请参考以下文章

platform_device 框架 学习总结

linux设备驱动归纳总结:2.match.probe.remove

Linux 自带的LED 灯驱动实验

linux USB设备驱动的问题!

Embeded linux之probe

Linux驱动开发之平台总线