问题一
编译设备树时报错:
Warning (clocks_property): /pl061@9030000:clocks: cell 0 is not a phandle reference
设备树是qemu执行dump生成的,然后执行反编译得到dts,警告处的源码为:
警告大概意思是时钟的参数应该是一个phandle,也就是其他节点的引用。但是设备树是反编译的,只有地址,忽略警告直接使用设备树是没问题的。
如果想去除警告,则需要将0x8000改为对应节点的引用,根据官方的描述:
kernel.org/doc/Documentation/devicetree/bindings/arm/primecell.txthttps://www.kernel.org/doc/Documentation/devicetree/bindings/arm/primecell.txt
时钟应该是apb-pclk,刚好设备树有这个节点:
为了方便取个别名:
修改警告处的源码:
现在编译就不警告了。
问题二
另外还有一个警告是有关gpio的:
Warning (gpios_property): /gpio-keys/poweroff:gpios: cell 0 is not a phandle reference
其实也是引用的问题,在设备树源码中可以找到一个gpio-controller的节点:
这个节点就是gpio的控制器,并且phandle的地址就是警告处的地址。使用相同的方法更改即可:
问题三
另外记录一个qemu设备树问题。
在dump设备树时,建议指定gic的版本号。
在启动qemu时使用相同的版本号,否则可能会启动不了虚拟机。