[U-Boot] iMX6 (Arm) failing to initialize console. Hangs when running relocation code.

Doug Bailey dbailey at digium.com
Wed Mar 15 21:34:28 UTC 2017


I have a board that is running u-boot based on "U-Boot 2009.08". I am in
the process of developing another board that is very similar but want to
upgrade the u-boot to "U-Boot 2013.06".

The boards are NXP iMX6DL CPU (ARM) based with 32 bit DDR3 and console via
UART1. These designs are based on the SabreSD reference design.  The u-boot
implmentations are copies of the SabreSD files optimized for my board.

I am loading the boards serially via USB using the imx_usb utility
available from
       https://github.com/boundarydevices/imx_usb_loader.git

I do not have a debugger/JTAG interface.  I have verified that I am working
by manipulating GPIO pins.

Using the older design, I can run the old boot loader fine. When I run the
new version of u-boot, the board boots but does not output anything via the
serial console.  It gets through the board_init_f function but does not
reach the board_late_init function. (Nor do I see it access board_init_r.)

Any suggestions as to how to determine why the serial port is not
outputting?  (I can determine that the serial port initialization functions
are running and I have verified that the IOMuxC setting for the pins is
valid.)

The code between the board_init_f and board_late_init functions appears to
be code that relocates the executable image. (arch/arm/lib/crt0.S) Since
the iMX6 loads the software into RAM before executing u-boot, I am
wondering why I am running this code at all.  Why does the u-boot run the
relocation firmware in this case?


Regards,
Doug Bailey


More information about the U-Boot mailing list