Archive for the ‘Bootloaders’ Category

January 28th, 2013
Booting Mars ZX3 eCos binary from RedBoot over TFTP

tftboot

We’re continuing our series of posts on using eCos and RedBoot on Enclustra’s ZX3 Zynq module – this time with a practical scenario which you might find useful.

It’s a typical case — you’d like to load binaries of eCos apps with RedBoot via TFTP; how to get going on that?

We assume that you have RedBoot running on the board and have an eCos binary ready to roll. If not, see the instructions on our github on how to compile those and use them with the board.

First you have to do is to set up a TFTP server so that you are sure your binary is available from the module. On a Debian Wheezy installation (and probably any other Linux distro) you might use the instructions from Timesys.

With one exception: if you do not have a ‘tftp’ file in ‘/etc/xinetd.d’ siply create one and paste the content from the site into it.

Now you should boot up RedBoot to the prompt. Of course by then it’s nice to have a console window (for example, minicom) with a connection to the board open.

If you had the Ethernet cable attached during boot you’ll probably get IP address via DHCP (if RedBoot is configured to use that, which it is by default) — this was the case in the example from the attached screenshot, where the board received an IP address of 192.168.1.27. You should be able to see the IP information as one of the first messages RedBoot prints to the console.

If a network connection wasn’t configured automatically during startup you should configure it manually with:

1
ip_address -l <xxx.xxx.xxx.xxx> (where xxx.xxx.xxx.xxx is IP address)

for a static IP, or

1
ip_address -d

to get an IP over DHCP (for example, it you forgot to plug in a cable before bootup).

The next step is to set a default server IP address (= where the eCos binary will be downloaded from) with:

1
ip_address -h <xxx.xxx.xxx.xxx>

(where xxx.xxx.xxx.xxx is the server IP address — in our case, 192.168.1.70)

You could use ping to check if the connection is configured properly. To do that use:

1
ping -h <xxx.xxx.xxx.xxx>

(where xxx.xxx.xxx.xxx is the host IP just like above)

Note that in RedBoot the ping program is not what you would normally expect in Linux or Windows — for example it does not show any progress or state messages. You have to wait until it exits, and if you interrupt it, you will see information about how many ICMP packets were received out of the 10 to be sent.

If the connection works properly, you can now download a test application from the TFTP server with:

1
load <name_of_application_binary>

(in our case, this was clock0, a standard eCos clock test).

With the default setting the board should use the TFTP protocol and the server IP set earlier, but if you want to change some parameter see the relevant section of the eCos documentation.

You should now see som information about entry point address ranges of the loaded binary.

To run the app you just loaded simply type:

1
go

And you’re ready! See the attached screen for the result.

July 20th, 2012
Running RedBoot on Enclustra’s ZX3 Zynq module

For the past few weeks we have been busy porting eCos to Encustra’s Zynq module, with a partial sponsorship from the Swiss company. The initial version of the port is ready, eCos passes most tests and it is possible to run RedBoot – the eCos bootloader – on the board.

With the ability to directly download and boot ELF files, RedBoot is definitely an interesting alternative to U-Boot, typically used to boot Linux for the Zynq. RedBoot is also a handy tool when it comes to debugging the application code. RedBoot can be loaded automatically by Xilinx’s first stage bootloader, using the boot header mechanism.
RedBoot on the ZX3 Zynq module
Currently, our version of RedBoot has limited functionality, but it will evolve as we go on to provide a complete set of drivers and some interesting functionalities that we will show in upcoming posts.

ITR GmbH has donated some of the basic platform code for Zynq, which was valuable help.

June 14th, 2012
U-Boot for Colibri Tegra 2 pushed to github

In our post from over a year ago we published some patches to U-Boot which allowed us to use it with the Colibri Tegra 2 module from Toradex, the first widely available embedded SoM featuring an Nvidia CPU.

A long time has passed since then, and – as you can probably see if you follow the blog – we have been busy with lots of other things in the meantime. But as we have noticed that the the code lives on and has been put to good use, we thought it a good idea to include it on our github for more convenience and a clearer picture – the original manner of publishing of the code was the result of the haste which always accompanies work with hot technologies.

Our github fork of U-Boot shows how the necessary patches are applied in the proper order and might be helpful for people exploring how bootloaders are ported between different ARM modules and boards.

It is worth noting that those changes were performed before we got any CPU datasheets from Nvidia, using virtual platform tools that we are developing. This was a great example of a scenario where the appropriate tools really made a difference!

If you are interested in open source and new embedded technologies, follow us throughout the summer (the easiest way to do is through our twitter) – there will be a lot going on. One of the more interesting technologies we are already working with is Xilinx Zynq, be sure to come back soon for updates about that and other really interesting topics.

April 24th, 2011
U-Boot for Toradex Colibri Tegra 250 Module

Recently our friends at Toradex released engineering samples of the fantastic Colibri Tegra module based on the famed NVIDIA Tegra 2 Cortex-A9 MPCore. The only thing it was lacking was open-source software for the boot process.

We’ve decided to port the well-established U-Boot bootloader (from DENX) as it’s suited best for booting our internal, console-only port of the Linux 2.6.36 kernel.

In the attachment to this post you will find the source files necessary to build and run U-Boot on Toradex’ Orchid and Iris carrier boards. For those who want to miss out on the fun of building it from scratch, a binary image is included. The bootloader runs at a 115200 baudrate, on UART_A.

The major functionalities which are featured in this release are:

  • Separate configuration layout files for Toradex/Colibri
  • PLL, Clock and pinmux configuration
  • cores initialization
  • UART_A initialization, serial console
  • Initialization for USB ULPI (SMSC USB3340)
  • Asix AX88772B USB 2.0 Ethernet support

Detailed information, descriptions of the patching and compilation processes are provided in the attached manual.

The code is released under GPL.

We’d like to thank Toradex for allowing us to get an early sample of the Iris board, which greatly helped our development effort.

Attached .tar.gz file: u-boot-2011.03-rc2-toradex-colibri-tegra.tar.gz

Attached .pdf file: U-Boot_Colibri_Manual.pdf

Attached .bin file: u-boot-2011.03-rc2-toradex-colibri-tegra.bin

 

Copyright © 2009 - 2013 ant micro. All rights reserved. | Design: Duind.com