"When I was your age, we had 8 bit CPUs and assembler! And we liked it! And we didn't complain!" above is "cut -> copy -> paste -> modify" from www.ethernut.de/en
Bamo128 is a resident monitor program and bootloader for AVR8 microcontrollers. The monitor is written in assembler (GNU toolchain: avr-as) and communicates with the host-PC via a serial interface with an appropriate terminal program (preferably arduinokermit or minikermit from http://minikermit.googlecode.com).
With bamo128 you can: - visit/modify/copy the different memories of the AVR8 microcontroller. - load arduino sketches and asm/C/C++ programs in flash (with the bootloader of bamo128 over serial port) and execute (also in step-mode and with break-points) the machine-code. - visit and modify cpu-state (flags, regs,...). - disassemble flash instructions. - load data in eeprom and sram. - copy data/programs between flash, ram and eeprom.
Useful monitor functions can be linked to external ASM/C/C++ programs with a linker script or arduino sketches can use monitor functions and variables via fixed monitor addresses. For this functionality Bamo128 needs 4 KWords (8K Bytes) of flash memory advantageously in the boot section of the microcontroller and about 256 bytes ram for monitor variables (MONRAM).
In version 08 and later we use bamo128 at boards with the atmega128 (CharonII with 32K external RAM and the Mica2 without external RAM), the atmega1280 on the ArduinoMega board and the atmega328 (ArduinoDuemilanove).
You can use Bamo128 as bootloader and comfortable monitor in an arduino environment. The bootloader works fine together with the arduino IDE (linux or windows).
The project has a own repository with more informations (WIKI) and could be accessed through the http://bamo128.googlecode.com .