使用设备树

发布时间 2023-06-17 20:35:02作者: FBshark

不用设备树 pinctrl 子系统下——使能GPIO的办法:

1. 定义相关宏——各寄存器的物理地址

 2. 进行重映射——各寄存器的虚拟地址

 3. 为各个寄存器写入参数

 

 

使用设备树 pinctrl 子系统下——使能GPIO的办法:

1. 添加pinctrl 信息

 2. 添加设备节点信息:

 注意:设备节点中pinctrl-0 要用到添加的 pinctrl 信息,名字应该相同(这里不同,是错误示范)。

 

3. 驱动文件中:找到设备树节点

 

4. 驱动文件中:确定GPIO编号

 5. 由上一步得到的GPIO编号,设置GPIO的输入输出模式

 

对比之下:

1. 设备树方式不需要定义地址宏,不需要查找和设置其时钟寄存器、GDIR、DR寄存器的地址,需要在设备树文件中添加 pinctrl 信息,再在相应的节点添加相应的属性。

2. 设备树方式不需要执行 writel 写入命令,而是通过 GPIO 编号和Linux 提供的 API 函数来设置GPIO的输入输出模式,输出电平。

其中of_find_node_by_path() 在其中起着连接驱动文件和设备树的作用。