Field-upgrade bitwizard boards

From BitWizard WIKI
Revision as of 23:05, 18 May 2013 by Rew (talk | contribs)

Jump to: navigation, search

If you have a raspberry pi, and there is a reason to upgrade your bitwizard board and you have a raspberry pi, then this can be done....

Get the modified avrdude binary from:

Next you have to make a connection from your raspberry pi SPI0 bus to the programming connector for your board.

First the SPI0 bus on the raspberry pi. On rpi_serial and RPI_UI you have a 6-pin SPI connector. usually marked "SPI0". (sometimes it is marked SPI2... sorry.).

On your target board there is a pattern of 6 pads that form the programming connector. However 5 of the six pins are shared with the SPI connector. So using the SPI connector is more convenient. We'll take care of the sixth next.

Near the SPI connectors, on most boards you'll find a solder jumper. At the moment the center pad is connected to one of the other pads with a tiny track. Your SPI connector becomes a programming connector if you short the center pad with the pad without the tiny track. I use a 7cm piece of 220V cord that has been stripped for 1cm as a brush against the two pads that I want to connect. Any other trick that connects the two pads will work.

On the rpi_ui the procedure to make the SPI0 port a programming port is slightly different: Put a jumper on the jumper block in the 1-2 position (horizontal, near the SPI connector). Most of you won't have a jumper block installed. Any temporary connection between the two pins is acceptable, provided you can keep it stable for the few seconds it will take to program the board.

Then to program the board, you will have to do something like:

avrdude -P gpio -c gpio -p atmega328  -U flash:w:i2cmega_rpi_ui.hex

of course substituting the name hexfile that we sent you.

for the devices with atmega328 parts, you will need to add the definition of the mega328 to your /etc/avrdude.conf file:

part parent "m328p"
    id                  = "m328";
    desc                = "ATmega328";
    signature           = 0x1e 0x95 0x14;

just below the definition of the ATmega328p . ... XXX ad lineno, xxx add link to complete file... XXX add link to fixed ".deb" file.

After flashing you will have reset the eeprom. It is cleared with the main flash. Thus any values saved in the eeprom like the serial number, contrast settings and startup texts will have been wiped. We hope to upgrade the procedure soon to be able to restore them.


The avrdude GPIO programmer will 'grab' the programming pins from the SPI module if you have it loaded. The SPI module will take them back if you remove it from the kernel and re-insert it, or if you use gpio_setfunc . (Use the first method until I have time to document how to do it with gpio_setfunc).