前言:环境搭建是关键,还没搭建的小伙伴去往上面连接,或者点击我主页进入环境搭建篇
一、认识树莓派设备树结构(如果没有设备树基础,请先去学习再来观看)
请跳转我这篇文章!
二、修改设备树
经过第一点的学习后,想必你也是清楚了设备树开发板产家版,没错,我们的矛头就是bcm2711-rpi-4-b.dts。
让我们打开它,然后添加我们的设备信息:
在根节点下,添加以下内容
gpio4:gpio4@0xfe200000{
#address-cells = <1>;
#size-cells = <1>;
compatible = "test_led";
reg = <0xfe200000 0x00000004
0xfe20001c 0x00000004
0xfe200028 0x00000004>;
status = "okay";
};
根节点
添加后
修改好后,我们回到内核源码目录,执行
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
得到编译出来的.dtb,路径如上图。
三、编写及编译驱动文件、app文件
我们主要是讲步骤,所以代码这里就不展示,否则篇幅过大,代码参考博主的
树莓派4B采用设备树(DTS)提供硬件信息,编写platform驱动控制io(LED)_树莓派设备树-CSDN博客
然后,这里注意一下,编译app文件时,使用32位交叉编译工具,不然就会出错,解决方法在我的环境搭建篇的常见错误那里!!
好了,到这里,我默认你已经有了一个.ko 一个app可执行文件、及一个设备树.dtb文件。
四、挂载文件系统,传输文件
使用环境搭建篇的方法,把第三点得到那三个文件挂载给树莓派,
我这里就展示一下,你应该有3个东西。
然后把设备树.dtb文件替换掉树莓派本身有的那个
替换
然后把app 和 led.ko cp 到 /lib/modules/5.15.92-v8+/
再执行
sudo insmod led.ko
lsmod
就可以看到模块led了。
去到/proc/device-tree/,就可以看设备树节点
去到/dev/就可以看到字符设备名
五、点亮led
执行
gpio readall
执行
sudo ./app 1
如接了led,
执行
sudo ./app 0
六、结束
呐,你成功了开头开心吧,所谓万事开头难!!!