我的目标是将此驱动程序移植到当前的Linux内核上。我到目前为止所做的事情...
1)下载了当前内核版本的源代码。
2)下载了dev_parallel.c,Makefile,Kconfig以便重新编写代码。
3)使用“ make”命令,我能够正确编译驱动程序。
4)使用“ make modules”命令,我可以生成一个.o文件。
5)使用“ make modules_install”命令,我可以得到.ko文件。
6)使用“ modprobe”命令,我可以成功加载模块,而不会出现内核崩溃。
但是,我看到有该驱动程序所在的文件DTS 这里。我知道dts文件被编译为dtb文件,内核在启动时会读取它们,它会自动加载模块。
但是是否有必要拥有这个DTS文件,或者仅modprobe命令可以为我完成这项工作?
我在说的驱动程序是用于电子纸显示器(EPD)的。
因此,如果我连接EPD,然后执行modprobe来加载驱动程序,它将正常工作还是我需要DTS文件才能使其正常工作?
device-driver linux-device-driver linux-kernel device-tree beagleboneblack
我想为 Linux 初始化建立一个里程碑式的路线图,以便于我轻松理解。(对于嵌入式系统)这是我得到的:
我不知道这里究竟什么时候处理devicetree。是在处理 do_initcall() 函数时还是在处理之前?一般来说,何时解析 devicetree,何时处理树节点?预先非常感谢您。
非常感谢对我的想法的任何纠正。
以下是DTS文件的摘录.LINUX /拱/的PowerPC /引导/ DTS/[board_name] .dts
memory {
device_type = "memory";
reg = <0x00000000 0x40000000>; // 1GB at 0
};
Run Code Online (Sandbox Code Playgroud)
嵌入式设备有1 GB的内存.
0x40000000 = 1073741824(十进制).
我得到1 GB的唯一方法是当我计算1073741824作为字节.
这意味着1073741824字节= 1GB.
这是否意味着0x00000000指向RAM中的一个字节数据?换句话说,RAM中的每个字节都有一个地址.
为什么会这样?我们读了8位块?为什么不说一句话?
ram memory-management linux-kernel embedded-linux device-tree
我喜欢在我的 RPi 项目中禁用和启用一些引脚。它们是 GPIO 6、GPIO 5 和 GPIO 26。我喜欢在我自己的内核驱动程序中使用这些 PIN。
对于这个项目,我通过 GPIO 连接了一个简单的电路板。最小系统是通过 yocto 构建的。我喜欢更改设备树文件以禁用/启用 GPIO。
我需要更改或制作我自己的 dts 文件。为此,我认为我需要:
我怎样才能做到这一点?或者我在哪里可以找到来源?
实际上,我正在努力寻找我正在使用的 RPi2 的 dts 文件。我正在检查“raspberrypi2-poky-linux-gnueabi”配方结果(并且没有找到任何文件)。
我没有找到任何关于如何设置 yocto + meta-raspberrypi + 自己的 dts 的教程。如果我们能找出必要的步骤就太好了。