程序小白
认证:优质创作者
所在专题目录 查看专题
RT-Thread驱动之路:stm32设备驱动开发之uart注册①
RT-Thread驱动之路:stm32设备驱动开发之uart设备创建②
RT-Thread驱动之路:stm32设备驱动开发之uart操作方法③
RT-Thread驱动之路:stm32设备驱动开发之uart中断处理④
RT-Thread驱动之路:stm32设备驱动开发之浅析注册机制⑤
RT-Thread驱动之路:stm32设备驱动开发之SPI原理①
作者动态 更多
RT-Thread驱动之路: Studio初始化SPI总线③
5天前
RT-Thread驱动之路:Studio修改时钟篇②
6天前
RT-Thread驱动之路: Studio硬件移植篇①
2星期前
RT-Thread驱动之路:stm32设备驱动开发之HWTIMER开发①
3星期前
RT-Thread驱动之路:stm32设备驱动开发之SPI总线操作方法③
3星期前

RT-Thread驱动之路:stm32设备驱动开发之浅析注册机制⑤


       关于驱动最底层的硬件处理并没有全篇展开,基于MCU打造一套驱动都需要不断地迭代测试慢慢的变为一套成熟的驱动,你不可能看完我的长篇废话后就能去写出一套完美的驱动,那么我们的驱动工程师就太不值钱了,文章的目的是让你了解驱动的机制,驱动的调用关系,框架如何完美的匹配驱动程序,了解了这些以后,刚开始可能写的驱动有些蹩脚,但是你知知道驱动和框架的服务关系,你只要不断地尝试慢慢它会越来越好。

       那么你对注册机制的了解有多少呢?你想要APP ——框架——驱动完美的统一,就需要对注册机制有清楚的了解,它实现了一套松耦合的调用关系的建立(我是这样理解的)。

      还记得我最初写裸机程序的时候,程序内部的藕合非常严重,那时候还分什么应用程序、驱动程序、框架还有啥存在的意义?一套函数嵌套的调用关系打天下~!当然不是说逻辑不好或者是嵌套不好,不同的应用场合作用不同,小的项目还是裸奔or实时框架更舒坦。偏题了,我们先看下应用到驱动的调用关系,基于uart的serial层来完成框架关系的建立:

      通过函数指针赋值的方式建立松耦合关系,而不是通过函数嵌套来实现,嵌套是定死的,只能调用固定名称的函数,而函数指针的方式是通过变量的赋值来实现松耦合,你只需要调用函数指针,而不需要关系指针的函数名(或者这里讲地址更精确):

      serial层本质是一个承上启下的框架层,关于承上,上面的代码说明了,APP通过device对象的相关操作就可以操控到serial层的函数,那么serial层最终还要调用真实的uart驱动才能实现:

      关于serial层如何实现底层驱动的访问,假如我们写的是应用那么它是怎么调用的呢?

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 6
关注 139
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧