RTC device tree configuration

来自百问网嵌入式Linux wiki

Article purpose

本文介绍了将 RTC internal peripheral 分配给 Linux® OS. 时如何配置。 在这种情况下,它由RTC framework控制。

使用 device tree机制执行配置,该机制提供STM32 RTC Linux驱动程序使用的RTC外设的硬件描述。

DT bindings documentation

RTC由“ STM32 RTC设备树绑定”表示[1]

DT configuration

该硬件描述是STM32微处理器设备树文件(扩展名为.dtsi)和板子设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见 [[Device tree]。 STM32CubeMX可用于生成板卡设备树。 有关更多详细信息,请参考 How to configure the DT using STM32CubeMX.

DT configuration (STM32 level)

T在文件“ stm32mp157c.dtsi”中声明了 RTC节点[2]. 它描述了硬件寄存器地址,时钟和中断。

rtc: rtc@5c004000 {
	compatible = "st,stm32mp1-rtc";
	reg = <0x5c004000 0x400>;                               --> Register location and length
	clocks = <&rcc RTCAPB>, <&rcc RTC>;
	clock-names = "pclk", "rtc_ck";
	interrupts-extended = <&intc GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
			      <&exti 19 1>;
	status = "disabled";
};
Warning.png 该设备树部分与STM32微处理器有关。 它应该保持原样,而不要由最终用户修改。

DT configuration (board level)

该部分用于启用板上使用的RTC,这是通过将 status属性设置为 okay来完成的。

“ st,lsco”属性可用于选择和启用在其上输出RTC低速时钟的RTC输出。 有效的输出值在[3]. 中定义。 可以定义一个名为“默认”的pinctrl状态来为RTC输出保留一个引脚。

DT configuration examples

#include <dt-bindings/rtc/rtc-stm32.h>
...
&rtc {
	st,lsco = <RTC_OUT2_RMP>;
	pinctrl-0 = <&rtc_out2_rmp_pins_a>;
	pinctrl-names = "default";
};

How to configure the DT using STM32CubeMX

STM32CubeMX 工具可用于配置STM32MPU设备并获取相应的platform configuration device tree .
STM32CubeMX可能不支持上述所有属性DT bindings documentation段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入“用户部分”。 然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见 STM32CubeMX 用户手册。