是否需要为驱动程序包括DTS文件?

时间:2019-02-02 11:04:02

标签: linux-kernel linux-device-driver beagleboneblack device-driver device-tree

我的目标是在当前Linux内核上移植this驱动程序。 直到现在我所做的事情。...

1)下载了当前内核版本的源代码。

2)下载了dev_parallel.c,Makefile和Kconfig以便重新编写代码。

3)使用“ make”命令,我可以毫无错误地编译驱动程序。

4)使用“ make modules”命令,我可以生成一个.o文件。

5)使用“ make modules_install”命令,我可以获取.ko文件。

6)使用“ modprobe”命令,我能够成功加载模块,而没有任何内核崩溃。

但是我看到here上有此驱动程序的DTS文件。我知道dts文件会被编译为dtb文件,内核会在启动时读取这些文件,它会自动加载模块。

但是有必要拥​​有这个DTS文件吗,或者只是modprobe命令可以为我完成这项工作?

我正在谈论的驱动程序是用于电子纸显示器(EPD)。

因此,如果我连接EPD,然后执行modprobe来加载驱动程序,它将正常工作还是我需要DTS文件才能使其正常工作?

2 个答案:

答案 0 :(得分:2)

设备树是Linux内核源树中的一组文本文件,用于描述特定平台的硬件。它们可以具有两个扩展名:

  • *。dtsi文件是设备树源包含文件。他们描述了几种平台共有的硬件,这些平台的* .dts文件中包含这些文件。
  • *。dts文件是设备树源文件。他们描述了一个特定的平台。

通常会加载内核映像和设备树二进制文件(针对您设备的低级设备描述).3.8+内核已经支持除ArPF9328以外的所有Armadeus平台的设备树。大多数嵌入式平台不支持提供一种发现他们所拥有的硬件的方法。您要么不得不依靠猜测(不可行),要么向Linux内核提供有关主板和外围设备的信息。设备树文件位于arch / your_device_arch / boot / dts中。

答案 1 :(得分:1)

不必在驱动程序中使用DTS文件,但出于某些原因,例如定义引脚,设置配置等​​。它应该从DTS文件中获取参数,以防止用户修改驱动程序并重新编译。

您的示例似乎没有从DTS文件中获取任何参数,但另一方面,它对某些引脚定义进行了硬编码,因此您需要加以注意。 如果要强制其从DTS文件读取参数,则应重写驱动程序。您可以将this用于驱动程序,并将this用于GPIO。然后,您必须在当前DTS文件中包括新驱动程序,然后重新编译。

对于驱动程序编译,您可以创建一个内核模块。您可以使用this tutorial作为基础知识。