[U-Boot] Getting U-Boot running on Toradex Colibri T20 on Iris board

Stephen Warren
2013-11-25T17:40:52Z

On 11/25/2013 03:00 AM, Andrzej Telszewski wrote:
> On 09/26/2013 10:42 PM, Stefan Agner wrote:
>> Am 2013-08-07 10:15, schrieb Andrzej Telszewski:
>>> Hi,
>>>
>>> I'm trying to get the U-Boot running on the Iris board with the
>>> Toradex Colibri T20 module. I was able to flash the U-Boot and it
>>> starts but then immediately stops with the only message being:
>>>
>>> U-Boot 2013.07 (Aug 06 2013 - 17:47:43)
>>>
>>> TEGRA20
>>> Board: Toradex Colibri T20 on Iris
>>> DRAM:
...
> You are correct, the problem with the U-Boot not starting was the value
> of the odmdata.
>
> I was flashing the chip with the following:
> # nvflash --bct colibri-t20-256-1.2-nand.bct --setbct --configfile
> nand.cfg --odmdata 0x1 --create --bl loader.nb0 --go
>
> and when I changed it to:
> # nvflash --bct colibri-t20-256-1.2-nand.bct --setbct --configfile
> nand.cfg --odmdata 0x10000000 --create --bl loader.nb0 --go
>
> the U-Boot has started correctly.
>
> BTW, can you confirm that the nvflash command line switches I'm using
> are correct and also that the new odmdata value (0x10000000) is a
> correct one?

I would suggest flashing with an OSS flashing utility. See:

https://github.com/NVIDIA/tegra-uboot-flasher-scripts/blob/master/README-developer.txt

> My next issue is with booting the kernel, so I appreciate if you can
> also help me with it. I noticed that the U-Boot (version 2013.10)
> environment for the T20/Iris is quite bare and it looks for the boot
> scripts (e.g. boot.scr.uimg or boot.scr), which I presume sets up the
> whole environment before the actual booting. Do you know if I can find
> the scripts somewhere or do I need to write them myself?

See https://github.com/NVIDIA/tegra-uboot-scripts

> Nonetheless, I have tried to boot the kernel with the bare environment,
> but had no bigger luck. I have compiled the kernel version 3.12.1 with
> the "tegra_defconfig" and LOADADDR equal to 0x00008000. I used the tftp
> to transfer the kernel image to the board and tried to boot it, but the
> only thing I get is the "Starting kernel ...". I believe the kernel
> might be booting, but does not give any feedback on the console and what
> is more, immediately after the boot command, the ethernet seems to be
> disabled, because the LEDs on the connector are switched off.
>
> The reason I think the kernel boots to some stage is that, if I change
> the odmdata to 0x100C0000, I got the message:
> Error: unrecognized/unsupported machine ID (r1 = 0x00000000).
>
> Available machine support:
>
> ID (hex) NAME
> ffffffff Generic DT based system
> ffffffff NVIDIA Tegra SoC (Flattened Device Tree)
>
> Please check your kernel config and/or bootloader.
>
> So I guess the kernel is actually doing at least some initial tasks.

You're probably not passing a device tree to the kernel. A device tree
is now required on all Tegra boards in the upstream kernel.

You may get more information out if you enable DEBUG_LL and add
"earlyprintk" to the kernel command-line. When enabling DEBUG_LL, you'll
need to tell the kernel which UART to use for the DEBUG_LL output. You
can either hard-code this to the correct UART, or select an
"AUTO_ODMATA" option, which will obtain the UART ID at run-time from the
ODMDATA value, in which case you'll need to encode the correct UART ID
into ODMDATA, which I guess value 0x100c0000 must do, since that gets
you the early output you mentioned above.