2023-09-01 06:13 AM - edited 2023-09-01 06:14 AM
Hello,
I am facing the issue below when build up my image (or u-boot-stm32mp alone)
I mainly followed instructions in https://wiki.st.com/stm32mpu/wiki/How_to_compile_the_device_tree_with_the_Distribution_Package.
But it did not work.
make -f /home/luisa/dev/st/st_distro/stdistro/build-try-test1/tmp-glibc/work-shared/stm32mp151a-bitron-som/uboot-source/scripts/Makefile.build obj=arch/arm/dts dtbs
test -e arch/arm/dts/stm32mp151a-bitron-som-mx.dtb || ( \
echo >&2; \
echo >&2 "Device Tree Source (arch/arm/dts/stm32mp151a-bitron-som-mx.dtb) is not correctly specified."; \
echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'"; \
echo >&2 "or build with 'DEVICE_TREE=<device_tree>' argument"; \
echo >&2; \
/bin/false)
My .dts file
stm32mp151a-bitron-som-mx.dts
stm32mp151a-bitron-som-mx-u-boot.dtsi
are below my building path <builddir>/tmp-glibc/work-shared/stm32mp151a-bitron-som/uboot-source/arch/arm/dts and are as the ones below my mx/bitron_som_20634519_06/CA7/DeviceTree/bitron-som/u-boot directory. I noticed that folder arch/arm/dts holds only .dts and .dtsi files but no .dtb - so why it is expecting a dtb there?
In general, when using OpenSTLinux distribution, is Yocto sufficient to build dtb files?
When one needs to take steps listed in https://wiki.st.com/stm32mpu/wiki/How_to_configure_U-Boot_for_your_board ?
Attached my conf/machine/<machine>.conf file (extended extension to .txt for uploading)
This issue is just the same as 583813 and 53885 but I have found no answer there - so I would thank you for any help.
Solved! Go to Solution.
2023-09-14 03:39 AM - edited 2023-09-14 04:34 AM
I solved my issue, by #including missing .dtsi in my u-boot/xxx.dts and u-boot/xxx.dtsi files. They way they are generated by the CubeMx is not sufficient.
Beyond the above error,
When bitbaking u-boot-stm32mp individually, I got the following error related to scmi_clsk
/ahb/m4@10000000/m4_system_resources/can@4400e000: Reference to non-existent node or label "scmi_clk"
I resolved that by #including stm32mp15-scmi.dtsi
In general, I used stm32mp157c-ev1.dts and stm32mp157c-ev1-u-boot.dtsi (from u-boot repository) as guideline. Providing to my files same #include directives present there, just searching for those matching my board stm32m151a.
In addition, to fix the errors below
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_hse"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_hsi"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_csi"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_lse"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_lsi"
I re-declared clocks clk_hse, clk_hsi, clk_csi,... within the clocks node of my .dts file, which was empty
clocks{
/* USER CODE BEGIN clocks */
clk_csi: clk-csi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <4000000>;
};
clk_hse: clk-hse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
};
clk_hsi: clk-hsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <64000000>;
};
clk_lse: clk-lse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
};
clk_lsi: clk-lsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32000>;
};
/* USER CODE END clocks */
};
NOTICE: those clocks are declared in stm32mp151.dti , which is also #included in my .dts, but the fact that the clock node was initially empty in my .dts file, make me think that the result was not clocks declared at all.
2023-09-14 03:39 AM - edited 2023-09-14 04:34 AM
I solved my issue, by #including missing .dtsi in my u-boot/xxx.dts and u-boot/xxx.dtsi files. They way they are generated by the CubeMx is not sufficient.
Beyond the above error,
When bitbaking u-boot-stm32mp individually, I got the following error related to scmi_clsk
/ahb/m4@10000000/m4_system_resources/can@4400e000: Reference to non-existent node or label "scmi_clk"
I resolved that by #including stm32mp15-scmi.dtsi
In general, I used stm32mp157c-ev1.dts and stm32mp157c-ev1-u-boot.dtsi (from u-boot repository) as guideline. Providing to my files same #include directives present there, just searching for those matching my board stm32m151a.
In addition, to fix the errors below
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_hse"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_hsi"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_csi"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_lse"
| arch/arm/dts/stm32mp151a-ac_wmini_eu_mp151a-mx.dtb: ERROR (phandle_references): /soc/rcc@50000000: Reference to non-existent node or label "clk_lsi"
I re-declared clocks clk_hse, clk_hsi, clk_csi,... within the clocks node of my .dts file, which was empty
clocks{
/* USER CODE BEGIN clocks */
clk_csi: clk-csi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <4000000>;
};
clk_hse: clk-hse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
};
clk_hsi: clk-hsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <64000000>;
};
clk_lse: clk-lse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
};
clk_lsi: clk-lsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32000>;
};
/* USER CODE END clocks */
};
NOTICE: those clocks are declared in stm32mp151.dti , which is also #included in my .dts, but the fact that the clock node was initially empty in my .dts file, make me think that the result was not clocks declared at all.
2023-09-19 12:41 AM
We walked into the same problems and solutions around the same time. 😁
2024-07-31 08:27 AM - edited 2024-08-03 10:10 AM
I got the exact BUG as you do. @luaiza
I solved this by adding this into the .dts file
/* USER CODE BEGIN includes */
#include "stm32mp15-scmi.dtsi"
#include "stm32mp15-scmi-u-boot.dtsi"
/* USER CODE END includes */
And of course the clocks. It seems that STM32CudeIDE won't generate these clocks. Perhaps this thread should be reported to the ST-developers so they can take a look at it.
clocks{
/* USER CODE BEGIN clocks */
clk_csi: clk-csi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <4000000>;
};
clk_hse: clk-hse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
};
clk_hsi: clk-hsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <64000000>;
};
clk_lse: clk-lse {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
};
clk_lsi: clk-lsi {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32000>;
};
/* USER CODE END clocks */
};
}; /*root*/