有两个在时钟方面表现不同的板(NXP-EVK 和我的
开发板)。我使用相同的最新 NXP 内核 5.15.71 和几乎相同的设备树。devicetree 中的不同之处与时钟没有什么特别的关系。事实上,唯一的区别是在 eqos 网络接口上使用了另一个 phy。
查看 /sys/kernel/debug/clk/clk_summary 我看到 main_axi 的父时钟不同:
我的
电路板:osc_24m,时钟频率仅为 12MHz。
evk 板:sys_pll_800 和 400MHz 的时钟。
另一个主要区别是 ahb_clock。它有相同的父级,但在我的板上只有 22MHz,而 evk 板在 66MHz。这当然对它所有的孩子都有影响。
还有更多的不同......
我想知道是什么原因,尽管内核完全相同并且设备树非常相似。特别是时钟控制器定义在同一个包括:imx8mp.dtsi
(其他区别是我这边的 hsio_axi 的 enet_phy_ref、enet_
timer、enet_ref(都是 25MHz)。
坦率地说,我不明白我能做什么,甚至连 devicetree 文档我也不明白:
有 6 个时钟和 10 个指定时钟,7 个指定时钟父级和 10 个时钟速率(2 个为零!?!)。他们如何互动?谁控制它?
clk: clock-controller@30380000 {
compatible = "fsl,imx8mp-ccm";
reg = <0x30380000 0x10000>;
#clock-cells = <1>;
clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
<&clk_ext3>, <&clk_ext4>;
clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
"clk_ext3", "clk_ext4";
assigned-clocks = <&clk IMX8MP_CLK_A53_SRC>,
<&clk IMX8MP_CLK_A53_CORE>,
<&clk IMX8MP_CLK_NOC>,
<&clk IMX8MP_CLK_NOC_IO>,
<&clk IMX8MP_CLK_GIC>,
<&clk IMX8MP_CLK_AUDIO_AHB>,
<&clk IMX8MP_CLK_AUDIO_AXI_SRC>,
<&clk IMX8MP_AUDIO_PLL1>,
<&clk IMX8MP_AUDIO_PLL2>,
<&clk IMX8MP_VIDEO_PLL1>;
assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
<&clk IMX8MP_ARM_PLL_OUT>,
<&clk IMX8MP_SYS_PLL2_1000M>,
<&clk IMX8MP_SYS_PLL1_800M>,
<&clk IMX8MP_SYS_PLL2_500M>,
<&clk IMX8MP_SYS_PLL1_800M>,
<&clk IMX8MP_SYS_PLL1_800M>;
assigned-clock-rates = <0>, <0>,
<1000000000>,
<800000000>,
<500000000>,
<400000000>,
<800000000>,
<393216000>,
<361267200>,
<1039500000>;
};