为什么要用设备树device tree

1.什么是设备树

这里不会用太多专业名词来解释设备树是什么,如果需要从专业的角度去理解网上有很多相关的书籍和资源供大家参考。这里我用通俗的语言对设备树做一个解释。

举个例子,你的设备驱动是一套炒菜的流程,但是具体用哪个锅,哪种火,是天然气还是电磁炉,你需要告诉他,这些东西也就是你机器的硬件信息。

2.为什么要用设备树

以往驱动的这些硬件信息都是存在一个单独的文件里的,但是你想想,这么多厨师,这么多种菜,显然每一个都准备一个文件来描述,这个会增加Linux内核的冗余度,对内核非常不友好。当一个公司在一个产品上,比如一台手机上,用到了几十个硬件,而且手机还要迭代做很多代,为了尽量避免因为硬件不同带来的软件增加,就选择了设备树,设备树风格很简单,花上几天的时间去看一下就能明白。

3.一定要用设备树吗?什么时候用设备树比较好?

如果你在大公司搬砖,做的是驱动开发相关的岗位,那这个是必须的技能。但是,如果你只是基于一个soc做一两个硬件的驱动,那么不用也是没有任何问题的。

什么时候用比较好,如果你对板子的硬件信息非常清楚,对手册玩的非常透,你在写驱动的时候能够把硬件信息直接写死,不用设备树直接把数据写到驱动里也未尝不可。

但是用设备树确实会有精简工作流程的作用,问题就在于你愿不愿意花时间成本了。

4.设备树怎么学?难点是什么?

小白建议在b站上看一下原子哥的视频,对于入门来说足够了。

难点在于不同芯片厂商提供的设备树的资料得会看,要搞清楚配置的每一个条目是什么意思,这个是比较难的一点。内核提供了函数让我们直接读设备树信息,如果你有时间且愿意花时间去了解,吃透设备树的信息是如何传递给驱动的,也很有意思的,当然不吃透也不耽误使用。

你可能感兴趣的:(linux设备驱动开发,linux,设备驱动,设备树,device,tree)