是否有必要为驱动程序包含DTS文件?

问题描述 投票:0回答:2

我的目标是在当前的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文件才能使其正常工作?

linux-kernel linux-device-driver beagleboneblack device-driver device-tree
2个回答
2
投票

设备树是Linux内核源代码树中的一组文本文件,用于描述某个平台的硬件。他们可以有两个扩展:

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

通常会加载内核映像和设备树二进制文件(特定于您的设备的低级设备描述)。除了APF9328之外,3.8+内核已经为所有Armadeus平台提供了设备树支持。大多数嵌入式平台都没有提供方法发现他们拥有的硬件。你要么必须求助于猜测(这是不可行的),要么为Linux内核提供有关电路板和外围设备的信息。设备树文件存在于arch / your_device_arch / boot / dts中。


1
投票

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

看来您的示例没有从DTS文件中获取任何参数,但另一方面,它硬编码了一些引脚定义,因此您需要处理它们。如果要强制它从DTS文件中读取参数,则应重写驱动程序。你可以使用this作为驱动程序,使用this作为GPIO。然后,您必须在当前DTS文件中包含新驱动程序并重新编译它。

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

© www.soinside.com 2019 - 2024. All rights reserved.