MembersPage/MattiasSandgren/NickesBMW/AvrBootCode (2011-03-08 12:29:03)

AVR boot code how to

Due to a failure with the electrical system in the car last year, we had to replace the AVR, the new chip was missing a boot loader so this page is about what I did to program the AVR.

The main source of information about the boot loader is here : GenBoard/Firmware/BootLoader. The command line for the most recent avrdude is a bit different to the advice given there, but it's easy to figure out (don't use -c stk200, use -c bsd). Use my command line for the actual upload of the boot loader, see below.

First I followed the advice about the fuses and then went on to program the AVR boot code.

avrdude -v -c bsd -p m128 -U flash:w:main.hex -U lfuse:w:0x0f:m -U hfuse:w:c4:m -U efuse:w:ff:m -U lock:w:3c:m

Note that lock=3C is recommended (not lock=3F) to allow bootloader-upgrade later.


\n
D:\VEMS>avrdude -c bsd -p m128 -U flash:w:main.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9702



avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (131072 bytes):

Writing | ################################################## | 100% 50.61s

avrdude: 131072 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 131072 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 48.36s

avrdude: verifying ...
avrdude: 131072 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

This cable is to be used togheter with the "-C bsd" command in AVRDUDE

AVR pin commandISP header #Parallel port pinNotes
AVR /RESET57Yellow
AVR SCK (clock input)38Black
AVR PDI (RXD) (instruction in)49Red
AVR PDO (TXD) (data out)110Orange
Signal Ground618Brown
* MOSI and MISO are not used.

Correct pins from the schematics AVR pin 2 = RXD/PDI -> ISP header Pin4, AVR Pin3 = TXD/PDO -> ISP header pin 1

This is what it looked like:

avr_isp_cable_attached.jpg avr_isp_cable_ends.jpg


After the bootloader is uploaded