我的目标是在当前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文件才能使其正常工作?
答案 0 :(得分:2)
设备树是Linux内核源树中的一组文本文件,用于描述特定平台的硬件。它们可以具有两个扩展名:
通常会加载内核映像和设备树二进制文件(针对您设备的低级设备描述).3.8+内核已经支持除ArPF9328以外的所有Armadeus平台的设备树。大多数嵌入式平台不支持提供一种发现他们所拥有的硬件的方法。您要么不得不依靠猜测(不可行),要么向Linux内核提供有关主板和外围设备的信息。设备树文件位于arch / your_device_arch / boot / dts中。
答案 1 :(得分:1)
不必在驱动程序中使用DTS文件,但出于某些原因,例如定义引脚,设置配置等。它应该从DTS文件中获取参数,以防止用户修改驱动程序并重新编译。
您的示例似乎没有从DTS文件中获取任何参数,但另一方面,它对某些引脚定义进行了硬编码,因此您需要加以注意。 如果要强制其从DTS文件读取参数,则应重写驱动程序。您可以将this用于驱动程序,并将this用于GPIO。然后,您必须在当前DTS文件中包括新驱动程序,然后重新编译。
对于驱动程序编译,您可以创建一个内核模块。您可以使用this tutorial作为基础知识。