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

Stefan Agner
2013-11-25T21:14:15Z

Hi Andrzej,

Am 2013-11-25 11:00, schrieb Andrzej Telszewski:
> 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?
Well, if it works, its not too bad :-).

However, the upstream BCT has the console set to UART too:
http://nv-tegra.nvidia.com/gitweb/?p=tools/tegra-cbootimage-configs.git;a=blob;f=tegra20/toradex/colibri-t20/colibri-t20_256_v12_nand.bct.cfg

> 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?
Yes there are not a lot defaults, you need to configure it by yourself.
Especially nvflash uses its own partition layout which is not support by
U-Boot directly. You need to set a matching partition layout using
mtdparts yourself too. The U-Boot environment is at 2 MB, which is in
the BCT configuration table downstream, you might want to alter that too
if you plan to use nvflash.

> 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:
This are the odmdata which are set upstream. It looks like the kernel
correctly uses them, since you get console output.

> 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.
The upstream kernel uses device tree, so you need to load the device
tree binary too. Use

$ make dtbs

to compile them, you can find the dtb in the folder
arch/arm/boot/dts/tegra20-iris-512.dtb. You need to load them too (from
the U-Boot command prompt):

usb start
setenv ipaddr 192.168.10.90
setenv serverip 192.168.10.3
setenv bootfile uImage
tftp ${kernel_addr_r}

setenv bootfile tegra20-iris-512.dtb
tftp ${fdt_addr_r}

setenv bootargs "console=ttyS0,115200n8 earlyprintk root=/dev/sda1 rw
rootdelay=5 ${mtdparts}"
bootm ${kernel_addr_r} - ${fdt_addr_r}

Just verified 3.12 on my setup, it works but I had to alter the sm2_reg
microvoltage to 3800000 in the device tree file.

--
Stefan