我正在阅读Linux中有关.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文件有什么区别??
发布于 2013-10-12 10:47:22
查看第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文件中。
https://stackoverflow.com/questions/19332492
复制相似问题