我的目标是在当前的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内核源代码树中的一组文本文件,用于描述某个平台的硬件。他们可以有两个扩展:
通常会加载内核映像和设备树二进制文件(特定于您的设备的低级设备描述)。除了APF9328之外,3.8+内核已经为所有Armadeus平台提供了设备树支持。大多数嵌入式平台都没有提供方法发现他们拥有的硬件。你要么必须求助于猜测(这是不可行的),要么为Linux内核提供有关电路板和外围设备的信息。设备树文件存在于arch / your_device_arch / boot / dts中。
没有必要在驱动程序中使用DTS文件,但出于某些原因,如定义引脚,设置配置等。它应该从DTS文件获取参数,以防止用户修改驱动程序并重新编译它。
看来您的示例没有从DTS文件中获取任何参数,但另一方面,它硬编码了一些引脚定义,因此您需要处理它们。如果要强制它从DTS文件中读取参数,则应重写驱动程序。你可以使用this作为驱动程序,使用this作为GPIO。然后,您必须在当前DTS文件中包含新驱动程序并重新编译它。
对于驱动程序编译,您可以创建内核模块。您可以使用this tutorial作为基础知识。