iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第五十一章 添加设备树节点

本章导读

在上一章节已经对 DTS 的语法做了比较详细的介绍,在本节中根据前面讲解的语法,从头到尾编写一个小型的设备树文件。我们会以一个虚拟的设备作为参考,提前假设一些外部设备和功能。当然这个虚拟的设备没有任何的意思,只是为了复习掌握前面学习的设备树语法。在实际产品的开发过程中,我们不需要从头编写一个 dts 设备树文件,一般都是使用 soc 厂商提供的 dts 文件,我们只需要根据自己的实际情况修改添加自己的内容即可。

本章内容对应视频讲解链接(在线观看):

在设备树种添加自定义节点  https://www.bilibili.com/video/BV1Vy4y1B7ta?p=26

51.1 查看设备树节点方法

我们打开内核源码arch/arm/boot/dts/目录,如下所示:

输入命令编辑设备树文件

vim  stm32mp15xx-itop.dtsi

 

打开文件后,我们首先找到根节点,如下图所示: 

我们可以在根节点的末尾准备添加设备节点,那么我们怎么来验证自己添加设备节点成功了呢?设备树可以在linux系统里面以文件或者是目录的形式表示出来,这里有两种方法。

方法一,我们进入到开发板的/proc/device-tree/目录下,如下图所示

cd /proc/device-tree
ls

比如说,我们想要查看根节点下的“model”“compatible”,输入以下命令

cat model

cat compatible

 

接下来我们可以用这种方法来验证在设备树文件里面我们是否成功添加了自己的节点。

方法二,我们也可以进入开发板的/sys/firmware/devicetree/base/目录下,可以发现,该目录下和方法一中的内容相同,如下图所示:

 

51.2 添加自定义节点

在设备树文件stm32mp15xx-itop.dtsi文件中在根节点的末尾添加自定义的节点,添加以下内容

       test: test{
                #address-cells = <1>;
                size-cells = <1>;
                compatible = "test";
                reg = <0x5000A018 0x04>;
                no-map;
       };

如下图所示,添加完保存退出。

注意,添加自定义节点前要注释掉冲突使用的设备。添加完保存文件并退出,接下来编译设备树文件。

51.3 编译设备树文件

如果环境没有dtc工具,需要安装dtc工具。输入以下命令安装dtc工具:

apt-get install device-tree-compiler

 

然后我们回到内核源码目录下,输入“./create.sh 对内核设备树进行编译,编译完成如下图所示: 

将output目录下的设备树内核的镜像文件bootfs.ext4文件烧写到开发板上。

51.4 运行测试

烧写完成之后,将开发板启动后进入/proc/device-tree目录下,如下图所示:

cd /proc/device-tree

ls

 

输入以下命令查看test节点信息,如下图所示:

cd test

cat compatible

cat name

 

51.4.1 验证结论

我们在源码目录下使用以下命令

 vim arch/arm/boot/dts/stm32mp15xx-itop.dtsi

对我们的设备树文件stm32mp15xx-itop.dtsi进行修改验证两个结论

1 通过节点的引用来修改原来节点里面的内容

2通过节点的引用往原来的节点里面添加内容

我们添加了节点引用status = “okay”,并且重新赋值给compatible为“test1234”。在根节点下方添加如下内容

 &test{
                 compatible = "test1234";
                 status = "okay";
};

修改完设备树文件,然后编译烧写到开发板上面进入/proc/device-tree目录下,如下图所示:

cd /proc/device-tree

cd test

cat compatible

cat status

 

由上图可知,我们验证的两个结论完全正确,已经可以查看到覆盖掉的compatible属性显示“test1234”,可以查到status属性的状态为“okay”。 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐