
Am 15.05.2019 um 20:43 schrieb Adam Ford:
On Wed, May 15, 2019 at 1:25 PM Simon Goldschmidt simon.k.r.goldschmidt@gmail.com wrote:
Am 15.05.2019 um 20:12 schrieb Adam Ford:
I am trying to add DM support in SPL along with device tree support similar to how it's being done for the omap3_logic boards. Unfortunately, I think something is going wrong in the initialization with CONFIG_DM enabled for SPL because I get no text data, and it doesn't appear to boot.
I tried enabling DM in SPL and using the older platdata method without success. I have disabled DM_SERIAL in SPL and tried enabling the serial debug stuff, and I get nothing. I don't have a debugger, so it's a bit more difficult to troubleshoot.
The main difference between the am35 and omap3 is the memory controller, and I've tried to model the am35 after the omap3 boards I also maintain. I was hoping someone might have any suggestions on how to track down the issue. As of right now, I have OF_CONTROL working in U-Boot and with DM disabled in SPL, everything is good.
I don't know that mach, but reading the files, you're calling 'spl_early_init()' from your 'board_init_f()'. The problem I had there was that I did not have enough heap - and notice you need pre-reloc heap enabled.
I have a device tree setup with a variety of pre-reloc entries. There is an omap3-u-boot.dtsi file which sets this up. dtc -I dtb -O dts spl/u-boot-spl.dtb lists a bunch of nodes for gpio, mmc, serial, and some misc dependencies.
Is there somewhere else I need to enable the pre-reloc stuff?
None that I know of. But I haven't made the transition to DM SPL, I only suffered when adding more DM drivers...
Are you sure that omap3-u-boot.dtsi gets auto-included? I don't know exactly how that automatism works...
spl_early_init() parses the dts and binds the drivers, and even the default CONFIG_SPL_SYS_MALLOC_F_LEN of 1 KiB wasn't enough for me. Oh, and of course you need CONFIG_SYS_MALLOC_F enabled when calling spl_early_ini() from board_init_f in SPL.
My updated defconfig file has:
CONFIG_SYS_MALLOC_F_LEN=0x4000 CONFIG_SYS_MALLOC_F=y
That should probably be enough :-)
Anyway, before calling spl_early_init(), I thought there shouldn't be anything going wrong, so debug UART should work when initialized before spl_early_init() is called?
Have you double-checked you're not hitting some size limit of your platform?
Regards, Simon