1 前言
如何去描述设备这一定是设备驱动需要考虑的重要问题。早先,linux中ARM架构使用源文件中的宏、结构等去描述设备,不过现在已全面转向设备树。使用文本来描述设备,肉眼可见的方便。本文就是本人学习设备树的笔记,即是对自己学习的知识做个总结和整理,也为方便后来人。
2 为什么需要设备树
2.1 单片机中的设备驱动
在单片机编程中,通常不存在复杂的驱动框架,所有关于设备本身以及使用设备的程序都混杂在一起。比如使用芯片at24c08
,通常的做法是建立一个名为at24c08.c
的源文件以及at24c08.h
的头文件,然后在上述两个c语言文件中定义芯片使用的管脚、占用的中断、驱动程序等。
假如另外一个项目也用到了该芯片,那么我们直接把相应的头文件、源文件复制过来就可以了吗?当然不是,最起码,芯片使用的引脚可能变化了,因此要修改定义的相应硬件信息。经过简单的修改似乎就能使用了,看起来也挺方便的。果真方便么?有技术大牛说过,复制粘贴往往伴随着坏味道。现在考虑坏在哪里,通过这种方式管理外设,则当存在很多使用at24c02的项目存在时,那么就相应存在着多份有细微差别但大部分重复的at24c08.c
和at24c08.h
,如果驱动本身没问题还好,如果有bug,那么bug也被复制了,维护起来绝对让人头疼,一次维护要囊括多份,使它们仅保持部分硬件信息的差异。否则,有些bug修复了,有些bug没有修复&#