1

我正在阅读来自 Linux Source 的 .dts 并询问有关设备寄存器空间的信息。以下内容取自“arch/arm/boot/dts/omap3.dtsi”

   dss@48050000 {

            compatible = "ti,omap3-dss","simple-bus";  
            reg = <0x48050000 0x200>;
            ti,hwmods = "dss_core";
            #address-cells = <1>;
            #size-cells = <1>;
            ranges;

                 dispc@48050400 {

                           compatible = "ti,omap3-dispc";
                            reg = <0x48050400 0x400>;
                            interrupts = <25>;
                           ti,hwmods = "dss_dispc";
                                };
                  }

对于节点 dss@48050000 设备的寄存器从 0x48050000 开始,大小为 0x200 。我的疑问是子节点 dispc@48050400 的基地址应该从 0x48050200 开始,因为早期的设备寄存器地址以 0x48050200 结束。

它怎么从 0x48050400 开始。

还有 dts 和 dtsi 文件有什么区别??

4

1 回答 1

2

查看第 2438 页的 omap3 TR(SPRUF98X–2010 年 4 月–2012 年 6 月修订) http://www.ti.com/product/omap3530

您可以看到寄存器映射显示显示子系统寄存器从 0x48050000 开始(与 dts 文件相关)。它还显示寄存器地址存在很大差距,DISPC_REVISION 位于 0x48050400,这也与 dts 文件相关。

我想您可以将寄存器的大小设置为 0x48050000 0x10(因为这是该地址处的寄存器空间的大小),或者您可以将其设置为 0x400,这样它就可以进入下一个块的开头,即使其中大部分空间未使用。无论如何,只要涵盖所有寄存器,这并不重要。

所以这个故事的寓意是软件必须符合硬件,这就是为什么存在差距。

此外,一个 dtsi 文件只是一个 dst 包含文件……一个 dtsi 可以包含在多个 dts 文件中。

于 2013-10-12T10:47:22.060 回答