我正在阅读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文件之间有什么区别??
答案 0 :(得分: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文件中。