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

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:
The Colibri T20 board used is: 256MB RAM V1.2A
Could you please give me any idea what I might be doing wrong?

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:
The Colibri T20 board used is: 256MB RAM V1.2A
Could you please give me any idea what I might be doing wrong?
Latest U-Boot worked on my Setup (Colibri T20 on the Evaluation Board). Although, I use the 512MiB variant:
TEGRA20 Board: Toradex Colibri T20 on Iris DRAM: 512 MiB
So it must be DRAM related. RAM will be initialized according to ODM data, see query_sdram_size in ./arch/arm/cpu/tegra-common/board.c. How do you flash u-boot? Using tegrarcm or nvflash? Can you verify your ODM data?
-- Stefan

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:
The Colibri T20 board used is: 256MB RAM V1.2A
Could you please give me any idea what I might be doing wrong?
Latest U-Boot worked on my Setup (Colibri T20 on the Evaluation Board). Although, I use the 512MiB variant:
TEGRA20 Board: Toradex Colibri T20 on Iris DRAM: 512 MiB
So it must be DRAM related. RAM will be initialized according to ODM data, see query_sdram_size in ./arch/arm/cpu/tegra-common/board.c. How do you flash u-boot? Using tegrarcm or nvflash? Can you verify your ODM data?
Hi Stefan,
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?
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?
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.
Any help appreciated!

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-dev...
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.

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=bl...
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
participants (3)
-
Andrzej Telszewski
-
Stefan Agner
-
Stephen Warren