Postiluukusta kopsahti uusi AVR-JTAGi ja pitihän sitä testailla. Edellinen stk500 mallinen oli vanha RS232-portilla oleva eikä suostunut toimimaan edes kolmella USB-RS232 palikalla jotka sattuivat laatikossa olemaan.
Asennetaan tarvittavat työkalut:
yum install avrdude avr-gcc avr-libc
JTAGi koneeseen kiinni ja dmesg-tulosteesta oikea portti, no ttyUSB0 tietty... Sitten vain avrdudeen kokeilemaan sopivia parametrejä. Lankku sattui olemaan Olimex AVR-MT-128 eli piiri on ATmega128 => -p m128. Jtagin protokollasta ei ollut tietoa, mutta entuudestaan tiesin stk500 ja jtag1 olevan aika yleisiä protokollia. stk500 antoi timeouttia, sitten jtag1 ja vola, yhteys piiriin saatiin. Tässä vaiheessa täytyy tietenkin olla JTAG laitteessa kiinni ja virrat päällä.
avrdude -c jtag1 -p m128 -P /dev/ttyUSB0
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9702
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Käytetyn lankun
datasheetti kertoo releen ja LEDin olevan kytkettynä portin A jalkaan 6. Vaikuttaa pätevältä paikalta testa.
Tehdään yksinkertaisin mahdollinen ohjelma asian testaamiseksi.
cat << EOF > avrtest.c
#include <avr/interrupt.h>
int main(void)
{
DDRA |= _BV(PA6); /* enable relay w/ LED */
PORTA |= _BV(PA6); /* relay w/ LED on */
return 0;
}
EOF
Käännetään ohjelma.
avr-gcc -mmcu=atmega128 avrtest.c -o avrtest.elf
Konvertoidaan käännetty ohjelma avrdudelle kelpaavaan formaattiin.
avr-objcopy -O ihex avrtest.elf avrtest.hex
Tuupataan ohjelma laitteeseen avrdudella.
avrdude -c jtag1 -p m128 -P /dev/ttyUSB0 -U flash:w:avrtest.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
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 "avrtest.hex"
avrdude: input file avrtest.hex auto detected as Intel Hex
avrdude: writing flash (264 bytes):
Writing | ################################################## | 100% 0.09s
avrdude: 264 bytes of flash written
avrdude: verifying flash memory against avrtest.hex:
avrdude: load data flash data from input file avrtest.hex:
avrdude: input file avrtest.hex auto detected as Intel Hex
avrdude: input file avrtest.hex contains 264 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.06s
avrdude: verifying ...
avrdude: 264 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Niksnaks lankkuu boottaa itsensä ja rele naksahtaa päällä ja LEDi palaa punaisena.