Linux kernel 是否需要包含驱动程序的DTS文件?

Linux kernel 是否需要包含驱动程序的DTS文件?,linux-kernel,linux-device-driver,beagleboneblack,device-driver,device-tree,Linux Kernel,Linux Device Driver,Beagleboneblack,Device Driver,Device Tree,我的目标是在当前Linux内核上移植驱动程序。 我至今所做的事情 1) 下载了当前内核版本的源代码 2) 下载了dev_parallel.c、Makefile、Kconfig,以便对代码进行返工 3) 使用“make”命令,我能够编译没有错误的驱动程序 4) 使用“makemodules”命令,我能够生成一个.o文件 5) 使用“makemodules\u install”命令,我能够获得.ko文件 6) 使用“modprobe”命令,我能够在没有任何内核恐慌的情况下成功加载模块 但是我看到这个

我的目标是在当前Linux内核上移植驱动程序。 我至今所做的事情

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

2) 下载了dev_parallel.c、Makefile、Kconfig,以便对代码进行返工

3) 使用“make”命令,我能够编译没有错误的驱动程序

4) 使用“makemodules”命令,我能够生成一个.o文件

5) 使用“makemodules\u install”命令,我能够获得.ko文件

6) 使用“modprobe”命令,我能够在没有任何内核恐慌的情况下成功加载模块

但是我看到这个驱动程序有一个DTS文件。我知道dts文件被编译成dtb文件,内核在启动时读取这些文件,并自动加载模块

但是是否有必要使用这个DTS文件,或者只使用modprobe命令就可以了

我所说的驱动程序是用于电子纸显示器(EPD)


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

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

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


对于驱动程序编译,您可以创建一个内核模块。您可以使用进行基本操作。

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

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


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

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

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

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

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

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

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

你引用的驱动程序实际上没有从设备树中读取任何内容。它似乎是一个独立的字符驱动程序,因此不需要DTS文件。也要对照AM355x TRM检查硬编码信息。您引用的驱动程序实际上没有从设备树中读取任何内容。它似乎是一个独立的字符驱动程序,因此不需要DTS文件。另外,请根据AM355x TRM检查硬编码信息。