Firefly开发板RK3588设备树修改详解:启用非默认外设(串口UART、IIC、ADC等)

sdk获取和内核编译,参考上一篇博文:rk3588内核裁剪

一、相关文件

文件1:

rk3588_repo_sdk_v1.0.2a/kernel/arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtsi

此文件是针对firefly的板级设备树文件。
文件2:

rk3588_repo_sdk_v1.0.2a/kernel/arch/arm64/boot/dts/rockchip/rk3588s-pinctrl.dtsi

此文件是关于io复用的设备树文件。

文件3:

rk3588_repo_sdk_v1.0.2a/kernel/include/dt-bindings/pinctrl/rockchip.h

此文件是所有具有复用功能的gpio,例如:#define RK_PA4 4
代表的是GPIO_PA_4即A组的GPIO4。

二、设备树文件修改

官方的内核和设备树,默认打开了串口0、串口1、串口6;
定义位于文件rk3588-firefly-itx-3588j.dtsi的170行

开发板启动以后,我们可以在/dev目录下看到的ttyS0和ttyS1就是这两个串口;
另外,这个串口名字,是根据枚举顺序定义的,如果想要更改默认的串口名字,例如想让ttyS0对应到设备树里面的uart1,ttyS1对应到设备树里面的uart0,我们可以自己定义命名规则:

cd /etc/udev/rules.d
touch 90-rename-serial-ports.rule
vim 90-rename-serial-ports.rule
添加如下内容:
ACTION=="add" KERNEL=="ttyS2" NAME="ttyS1"

即可完成自定义的命名。

如果我们自己的底板用到了串口3,那么此时就需要我们自己将串口3的声明加入到此设备树文件中(原开发板的串口3是用复用做音频的IIC)。
首先,定位到文件rk3588s-pinctrl.dtsi中的uart3;此文件中,rk已经将所有的io复用全部写好了,有些板子例如im6ull并没有全部写出来,还需要我们自己根据芯片手册,将io的复用写出来。

可以看到,不止一个引脚可以复用为uart3,我们选择一个自己底板使用io口,然后将复用的lable(uart3m1_xfer)赋值到rk3588-firefly-itx-3588j.dtsi中的uart定义部分,如果我们使用的是PC0和PC1,那么我们的设备树文件就是下面这样:

完成如上操作,即可将uart3使能,其他的adc和iic也是类似的操作;
使用命令:

./build.sh extboot

即可完成设备树的编译,如果内核没有更改,只是改了设备树,编译速度会很快,kernel目录下生成的boot.img就是生成的内核+设备树的镜像,烧录进设备在目录/dev下即可看到ttyS3即uart3.

物联沃分享整理
物联沃-IOTWORD物联网 » Firefly开发板RK3588设备树修改详解:启用非默认外设(串口UART、IIC、ADC等)

发表评论