嵌入式Linux驱动开发【学习小结】

文章目录

  • 前言
  • 一、嵌入式Linux驱动程序和单片机裸奔有啥区别?
  • 二、为什么需要嵌入式Linux驱动开发
  • 三、驱动程序框架大致演变过程
  • 总结


前言

随着去嵌入式设备资源不断丰富,主频不断升高,搭载操作系统可以更好的利用MPU资源,更容易实现其复杂功能。
作者也是小白,只学过韦东山大哥的LED驱动和按键驱动的一点皮毛。
嵌入式Linux驱动开发【学习小结】_第1张图片


一、嵌入式Linux驱动程序和单片机裸奔有啥区别?

一般单片机裸奔控制外设,不需要遵循什么设计框架,想怎么来就怎么来,实现功能即可。而嵌入式Linux驱动程序 = Linux驱动设计框架 + 硬件驱动。
裸奔程序比Linux驱动程序更简单,直接。但相比之下其兼容性较差,可扩展性较低。

二、为什么需要嵌入式Linux驱动开发

在该设备硬件外设有驱动程序的基础上,可以快速移植,扩展到其他的设备上。(我根据现有学习的知识推测的,并没有实践经验)
嵌入式Linux驱动开发【学习小结】_第2张图片

三、驱动程序框架大致演变过程

用韦东山老师的流程图,我们一起梳理一下:
下面这些韦东山老师的画的图,我借用一下…
嵌入式Linux驱动开发【学习小结】_第3张图片刚开始利用分层的思想,用面向对象的思想,利用file_operation结构体封装,但是如果使用板子不同引脚,增添相同外设时,需要不断修改底层。
嵌入式Linux驱动开发【学习小结】_第4张图片
采用了分离的思想,左边时单板的platform_device对应一个platform_driver结构体,这样就便于随便修改device,而缺陷时使内核越来越庞大和冗余。
linux爸爸说了arm这些东西都是ass。
嵌入式Linux驱动开发【学习小结】_第5张图片
设备树的概念就是把dts文件转换成一个个的设备结点,消除了内核因为大量没质量的代码而庞大的原因,同样使设备驱动总线模型。左边是一个树结构,右边还是一样的底层驱动程序。最终匹配到Bus,然后执行.probe。
Linux驱动程序还可以提供4种能力,查询,休眠中断,poll,以及异步通知。

总结

想一个人动手做些实际的项目,然而感觉一堵大墙挡在前面。
在这里插入图片描述
有没有大佬带带
在这里插入图片描述

你可能感兴趣的:(arm,单片机,c语言,算法,linux)