STM32MP157D bring up
gianluca
gianlucarenzi at eurek.it
Fri Aug 5 12:05:22 CEST 2022
Hello list!
First of all, sorry if I ask here the same question I asked in the ST
Community Forum, but I think for a u-boot (SPL) related question is
better to use this Mailing List.
I have to boot up a custom board based on STM32MP157D MPU with 1GB of
SDRAM (2x4 Gb 16bit chips) for a total of 32bit 8 Gigabit DDR3.
Basically more or less like the STMicroelectronics ED1 Board.
I am using a u-boot v2022.01-rc3 from the last months of the 2021.
I am using it because I have already built a custom board with
STM32MP151 MCU adapting some code / drivers / configuration and I do not
want to reinvent the wheel with another u-boot version.
I want to up-to-date u-boot to the latest version, and if possible, ask
for an inclusion update in the main tree of u-boot in the next release
window.
Anyway, I am stuck when loading from microSD the SPL and before
relocating u-boot to the 1Gig SDRAM space.
I have (as far as I know) enabled the lowlevel serial output to have
some stuff in the serial line (uart4) and I clearly see what's happen
until it hangs.
I used to have clk init code with a lot of debugging information, just
to see if the device-tree is configured correctly.
> stm32mp1_clk rcc at 50000000: hsi clock rate: 64000000Hz
> stm32mp1_clk rcc at 50000000: hse clock rate: 24000000Hz
> stm32mp1_clk rcc at 50000000: csi clock rate: 4000000Hz
> stm32mp1_clk rcc at 50000000: lsi clock rate: 32000Hz
> stm32mp1_clk rcc at 50000000: lse clock rate: 32768Hz
> stm32mp1_clk rcc at 50000000: No source clock "i2s_ckin"stm32mp1_clk rcc at 50000000: DT for PLL 0 with OPP
> stm32mp1_clk rcc at 50000000: DT for PLL 1 @ st,pll at 1
> stm32mp1_clk rcc at 50000000: DT for PLL 2 @ st,pll at 2
> stm32mp1_clk rcc at 50000000: DT for PLL 3 @ st,pll at 3
> stm32mp1_clk rcc at 50000000: configuration MCO
> stm32mp1_clk rcc at 50000000: switch ON osillator
> stm32mp1_clk rcc at 50000000: come back to HSI
> stm32mp1_clk rcc at 50000000: pll stop
> stm32mp1_clk rcc at 50000000: configure HSIDIV
> HSI_KER clock is the parent STGEN of clk id 128
> id=6 clock = 3d09000 : 64000 kHz
> stm32mp1_clk rcc at 50000▒
From now, I think the UART controller is updated/modified to the
baudrate change and the stuff to write to serial console has some
garbage on screen...
> ▒▒▒▒▒f▒▒f▒▒▒▒▒
> f
> ▒f3▒▒▒?`?▒▒▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒▒▒▒▒f??<f<怘▒?`?▒▒▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒f
> ▒▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒▒03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒▒▒03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒Ø03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒▒▒x<▒▒~<f??f<▒3xf▒▒▒x▒▒▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒f?`?▒f?`?▒3xf▒▒▒03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒f?`?▒f?`?▒3xf▒▒▒▒03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒f?`?▒f?`?▒3xf▒▒Ø03`▒▒f▒▒x
> x▒▒▒f▒▒f▒▒▒▒▒▒▒▒f▒
> ▒▒▒▒▒▒▒▒▒▒f?`?▒f?`?▒3xf▒▒▒x▒▒?`?▒▒▒▒f▒▒▒▒▒▒▒▒f▒
> Q▒EeKC▒▒▒JUc▒KT▒U▒▒▒▒▒▒▒▒▒▒5j▒jUԵ▒J▒,▒k▒
> Rk▒$▒X▒Y▒▒*▒T▒
> ▒▒▒,k
> R▒R&&NC▒Z▒O▒,[k▒
> R▒▒*Ͳ▒▒▒▒▒▒▒▒Z!▒5R▒▒▒ѕ▒▒:▒▒▒ɥ▒▒▒չѕɁB▒Eu▒▒* R.V,WVHhWk▒S
> W▒5▒k
...and from now on, it seems to work fine...
> ▒,PM▒▒00000: oscillator off
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 151 ha
> U-Boot SPL 2022.01-rc3 (Aug 05 2022 - 11:10:07 +0200)
> RAM: DDR3-DDR3L 32bits 533000kHz
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_disable: id clock 228 has been disabled
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 220 has been enabled
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 222 has been enabled
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 226 has been enabled
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 229 has been enabled
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 224 has been enabled
> id=15 clock = 1fc4ef40 : 533000 kHz
> stm32mp1_clk rcc at 50000000: computed rate for id clock 224 is 533000000 (parent is PLL2_R)
> stm32mp1_clk rcc at 50000000: stm32mp1_clk_enable: id clock 228 has been enabled
> get_ram_size(c0000000, 40000000)
> info.size: 4
> DDR invalid size : 0x4, expected 0x40000000
> DRAM init failed: -22
> ### ERROR ### Please RESET the board ###
>
And it hangs here.
Looking with a oscilloscope, I can tell the STPMIC1 is not produce the
buck2 voltage for the DDR RAM (1.35V). It is 0V.
I suppose the SPL driver need to talk with i2c bus to it, and activate
the buck2 voltage as well as the other voltages.
All other voltages I can measure, they are fine, i.e. the VDD CORE is
between 1.2V or 1.35V, the VDD is 3.3V (buck3) and 3.3V in the buck4.
I don't know if the SPL code for power regulators is working fine, so
starting from device-tree point-of-view, it seems every pin involved
(pinmux), every device core involved (pinctrl_z, i2c4, pmic as node of
i2c4) has the correct tags to be built into the pre-relocation code:
> u-boot,dm-pre-reloc;
> status = "okay";
I would like to knwo how to increase or enable the serial debug output
for those drivers running in the SPL code. I have a batch of 10 boards,
and all are (non)working with the same error...
Thank you,
Gianluca
--
Eurek s.r.l. |
Electronic Engineering | http://www.eurek.it
via Celletta 8/B, 40026 Imola, Italy | Phone: +39-(0)542-609120
p.iva 00690621206 - c.f. 04020030377 | Fax: +39-(0)542-609212
More information about the U-Boot
mailing list