Based upon the TinyOS-Bootloader for the Imote2, a new, completely rewritten Bootloader was developed.
Outline
Comparison old vs. new version
Disadvantages of the standard-bootloader (preinstalled/TinyOS):
- platform specific implementation of codeloader (MS Windows + cygwin)
- support only for C-executeables (gcc)
- support for images up to 1-2MB, depending on location (primary/secondary)
- unreliable communication, sometimes failes
- low data-programming speed <20kb/s on USB
- possible corruption of the bootloader itself
- bad and incorrect documentation
- platform independent codeloader (java) based on libusb
- support for C/C++-executeables (gcc / g++)
- capable of updating itself
- capable of replacing the TinyOS bootloader
- support for images up to 28MB
- support for independent configuration/data storage
- communication model is technologie independent (programming via wireless may be possible with same communication protocol)
- programming only at boottime - more reliable
- avoids accidental programming of false node due to node specific configuration
- higher data-programming speed >100kb/s
- documentation via technical report and detailed using doxygen
Documentation
Currently the documentation is only available in german - and is released by a bachelor thesis. A technical report will be published in english.Implementation details can be found in the doxygen-documentation (soon).
Codeloader vs. Bootloader

This small image should illustrate the difference between the two names "bootloader" and "codeloader". The bootloader resides on the Imote2 and is static, except for your new releases. The codeloader is a small Java program and is located on the pc-side. The new image is sent by the codeloader via USB cable to the bootloader on the Imote2.
using the TinyOS-Bootloader (not yet implemented)- using an additional JTAG-Flasher (.NET edition or problems with the above method)
- Installation instructions for codeloader
Building an image for the Imote2 platform
NOTE: Your "old" TinyOS applications won't run directly by using the new code-/bootloader. We have changed the image location, which makes it neccessary to relink (recompile) your source code with the new linker script and the changed object files.
First, you have to downloadimote.a and imote2.ld.
After compiling the image with xscale-elf-gcc / xscale-elf-g++, the linker stage needs to be adjusted. If you have the objects a.o and b.o, and your final image should have the name image.out the command line for the C++ version will be:
xscale-elf-g++ -o image.elf a.o b.o -Wl,-whole-archive imote.a -Wl,-no-whole-archive -nostartfiles -T imote2.ld xscale-elf-objcopy -Obinary image.elf image.out
Using Codeloader to flash Imote2
Uploading a simple image to the new bootloader. Consider you want to flash image.out:
java -jar codeloader.jar -file image.outAfter starting the Imote, the image will be transferred.
Details on using the codeloader (i.e. configuration files)
NOTE: The new bootloader will only accept new images at boottime. This is wanted and expected behaviour and not considered as a fault.
Download
- Codeloader (Java) (formerly USBLoaderHost)
- libusb-driver for...
- Installation Package for Windows (including LibUsb-Win32 and libusbJava)
- Linux
- Mac
- Bootloader image 1.0
- Config for OpenOCD for JTAGkey-Tiny
- Imote2 serial number-tool (src, win, linux)
- Image scripts
- patched jflashmm
- codeloader.sh
- Source-Code
Currently, we will only post the source code on demand, please ask.
References
Authors
Concepts and realization by| Übergeordnete Seite: Dipl.-Inf. Marc Krämer | |
| Feedback | |
| Email an den Verantwortlichen dieser Seite (kraemer@informatik.uni-kl.de) |
| English | |
| This page in english. Diese Seite auf englisch. |
![[Logo der AG Vernetzte Systeme]](/images/vs.gif)