Waarde CO-ers,

Halverwege een project wat simpel zou moeten zijn, kapt avrdude ermee:

avrdude: usbdev_open(): Found AVRBLDR, serno: 00A200002099
avrdude: jtagmkII_getsync(): sign-on command: status -1

(Ik werk onder debian. Heb libusb al opnieuw geïnstalleerd, evenals avrdude. Denkende dat virtualbox iets met USB verprutst dat eens geheel gedeinstalleerd, maar ook dan blijft het bovenstaande probleem.)

Als ik van ellende m'n pickit 2 als avr programmer gebruik, geeft deze ook een soortgelijke foutmelding.

Het verbinden met de programmer over USB lijkt te lukken. Het verbinden met een AVR lukt niet.

Ik heb echter 4 Atmega328p's en een attiny45 geprobeerd, die het voorheen allemaal prima deden.

Het kabeltje waarmee ik ze verbind heb ik pin-voor-pin uitgemeten en alles wat verbonden zou moeten zijn is verbonden.

Ik ben hier al een tijdje mee in gevecht. Heeft een van jullie een frisse blik of goede gedachte?

Ik ben al van plan diezelfde dragon te testen op een andere computer.

Zo te zien probeert avrdude nu via Jtag te koppelen. Dat is nogal ongebruikelijk in de hobby wereld. En daar heb je een speciale programmer en kabel voor nodig, zoals een AVRISP-MK2 met Jtag kabel.

Waarschijnlijk geef je foute parameters naar avrdude?
Wat gebruik je precies?

Ik gebruik een avr dragon, via isp, met de volgende commandoregel:

avrdude -c dragon_isp -p m328p -tv

Dat geeft dan de volgende output:

avrdude: Version 6.3
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/lucas/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : usb
Using Programmer : dragon_isp
avrdude: usbdev_open(): Found AVRBLDR, serno: 00A200002099
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: usbdev_send(): wrote -19 out of 11 bytes, err = error submitting URB: No such device
avrdude: jtagmkII_send(): failed to send command to serial port
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: usbdev_send(): wrote -19 out of 11 bytes, err = error submitting URB: No such device

De laatste paar regels hiervan herhalen een aantal keer tot uiteindelijk

avrdude: jtagmkII_send(): failed to send command to serial port
avrdude: jtagmkII_getsync(): sign-on command: status -1
avrdude: jtagmkII_getsync(): timeout/error communicating with programmer (status -1)
avrdude: failed to sync with the AVR Dragon in ISP mode

avrdude done. Thank you.

Op een andere Debian computer exact hetzelfde. Dat is, na https://stackoverflow.com/questions/5412727/avrisp-mkii-doesnt-work-wi… te hebben gevolgd. Daarvoor is het "can't open device".

Ik vermoed dus toch nog een-of-ander permissieprobleem.

Ik zit zowel in "dialout" als in "plugdev".

EDIT: en zonder de udev regels uit bovenstaande link blijft het probleem hetzelfde. (Ik heb ze weer verwijderd, ik had ze voor het probleem optrad ook niet).

Moet die punt in user configuration file er staan?

"/home/lucas/.avrduderc"

Die punt kan misschien wel kloppen maar toch een probleem veroorzaken. Directories die met een punt beginnen zijn hidden. Kennelijk vind AVRdude ook dat ie verborgen is:

User configuration file does not exist...

Scherp gezien BB.

Ja. Is een dotfile (hidden). Maar ik gebruik die user config niet. Dus die file is er inderdaad daadwerkelijk niet - ik geef met -c op welke programmer ik heb, met -p op welk part, etc.

Om ook eens een andere programmer te proberen, om te kijken of het aan de dragon ligt, heb ik het met de pickit2 getest. Met avrdude kun je daar ook AVR's mee programmeren.

Met de pickit 2 gaat het meestal ook fout, maar 1 keer kreeg ik dit:

avrdude -c pickit2 -p m328p -tv

avrdude: Version 6.3
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/lucas/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : usb
Using Programmer : pickit2
Device 0x55ad29eef010 seemed to open OK.
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : pickit2
Description : MicroChip's PICkit2 Programmer

avrdude: MicroChip's PICkit2 Programmer firmware version 2.32.0
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9514 (probably m328)
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.

avrdude done. Thank you.

Op wat inderdaad een m328 bleek, en geen m328p.

Maar vervolgens proberen met

avrdude -c pickit2 -p m328 -tv

levert de gebruikelijke foutmelding op...

(deze:

pickit2_read_report failed (ec -110). No error
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

)

Dus bij wijze van uitzondering ging het een keer bijna goed. (XKCD 1457, denk ik... En 722. Misschien 1024)ignore

Wel 5V op je device, zo niet wel de 5V doorverbonden op de dragon?

Wat ook soms moet is usb losnemen en weer aansluiten (power change of zoiets).

Volgorde bij mij, software starten, project laden, usb verbinding maken, spanning op device indien niet van de dragon.
Bij usb verbinding maken brand op de dragon eerst alleen de rode led als er usb verbinding is ook de groene en als de dragon de avr vind gaat de rode uit.

hier wordt gesuggereerd dat mijn AVR dragon in z'n eigen firmware update mode vastzit.

Geen idee hoe 'ie daar in terecht gekomen zou moeten zijn, maar goed.

Als ik de dragon inplug, branden zowel de bicolor led's (Rood én groen, dus oranje), én de groene LED ernaast.

Als ik een avr aansluit, geen verandering

als ik een avr wil programmeren, gaan beiden uit, dan komt groen terug, beiden uit, oranje terug, oranje heel kort uit en weer aan, en groen terug (zodat alle 3 weer branden).

Onder Windows in een VM lukte programmeren ook niet, maar ook geen melding over fw update... (Wel TCF - "Tool connect failed".)

Onder windows brand oranje en blijft de groene LED knipperen.
Een poging "device programming" te gebruiken leidt ertoe dat de AVR dragon wordt afgekoppeld.

"atfw" wordt niet als commando herkend (in de AVR studio command window. Overigens ook niet in cmd of PS)

EDIT: atfw kan gevonden worden in C:\Program Files (x86)\Atmel\Studio\7.0\atbackend

maar:

C:\Program Files (x86)\Atmel\Studio\7.0\atbackend>atfw -r -t avrdragon
Found avrdragon:00A200002099
GenericError thrown during firmware upgrade
Failed to read from tool. Bad signon response: premature packet end (size=0).

Er lijkt dus nog steeds iets mis te gaan met USB communicatie tussen mijn PC en de dragon. (Er zitten ook wel veel lagen tusen... Vanuit een windows VM naar een Linux host, met elk hun eigen drivers...)

(Overigens, de firmware voor de dragon is te vinden in C:\Program Files (x86)\Atmel\Studio\7.0\tools\AVRDragon. Niet dat ik daar nu wat aan heb, maar misschien iemand die dit later leest)

EDIT:
ondanks dat uitlezen van de firmwareversie met atfw -r niet werkt, werkt firmware upgrade wél, en daarna werkt firmware versie uitlezen ook weer:

C:\Program Files (x86)\Atmel\Studio\7.0\atbackend>atfw -t avrdragon -a "C:\Progr
am Files (x86)\Atmel\Studio\7.0\tools\AVRDragon"
The specified file does not exist

C:\Program Files (x86)\Atmel\Studio\7.0\atbackend>atfw -t avrdragon -a "C:\Progr
am Files (x86)\Atmel\Studio\7.0\tools\AVRDragon\dragon_fw.zip"
Found avrdragon:00A200002099
Upgrading avrdragon:00A200002099
Upgrading Main MCU: [==========]
Upgrading Slave MCU: [==========]
Successful upgrade

C:\Program Files (x86)\Atmel\Studio\7.0\atbackend>atfw -t avrdragon -r
Found avrdragon:00A200002099
Master MCU Version: 7.27
Slave MCU Version: 7.27

TBD of het nu ook allemaal weer werkt zoals het zou moeten... Toch vreemd als die firmware dan zomaar corrupt kan raken...

EDIT2: Jup, lijkt allemaal weer te werken.

En nu brand, na inpluggen, alleen nog maar de rode led in de dual color led, en de groene LED die ernaast op de pcb zit. Dus rood+groen ipv oranje + groen.

En hij meld zich weer als dragon ipv AVRBLDR (BootLoaDeR, ofwel: firmware update mode van de dragon):

avrdude: usbdev_open(): Found AVRDRAGON,

Het zou kunnen dat je met avdude ook de firmware upgrade moet kunnen doen. Dan zou AVRDUDE dus ook de optie kennen om het ding in bootloader mode te openen. Deze truuk met: "de bootloader pretendeerd een gewone programmer te zijn" zie je ook in de arduino.

Fijn dat je het gevonden hebt. Een geluk dat de programmer niet gebrickt is. Gebeurd wel meer als een firmware update niet volledig slaagt.

Heb het ook gehad dat de update vast liep (tot drie keer toe) maar ik heb een slechte internetverbinding, eerst de "reserve" dragon toen geupdated en daarna deed de andere het ook weer, het leek of de software die status vasthield.

Ik probeer mijn hardware zo te ontwerpen dat er een "hardware" return-to-bootloader is. Dit werkt voor atmel-USB chips (atmega16u2) en voor STM32 (stm32f072xxx)
Ik heb eens gekeken naar de cypress 4xxx serie (omdat ze me een development board/stick aanboden voor 2.50 of zoiets). Serial boot option. Dus dan denk je dat ie dat ingebouwd heeft. Nee: met een dure programmer kan je er een bootloader in zetten die "serial boot" ondersteunt. Als daar iets foutgaat met de bootloader ben je de sjaak. Die bootloader-in-ROM is veel fijner (AVR, STM). (van beiden vermoed ik dat ze in flash staan, maar alleen de fabriek weet hoe die te programmeren. )

AVR heeft de bootloader in flash in elk geval. Die kun je gewoon metISP erin zetten, en dus ook aanpassen naar behoefte.

O, en na een ISP chip-erase istie weg.

[Bericht gewijzigd door deKees op (15%)]

En uiteindelijk is het niet AvrDude die moeilijk deed, maar de Dragon.

Maar je kunt weer verder.

Heet misschien ook niet voor niks Dragon.

Op 24 januari 2019 10:16:13 schreef rew:
Het zou kunnen dat je met avdude ook de firmware upgrade moet kunnen doen. Dan zou AVRDUDE dus ook de optie kennen om het ding in bootloader mode te openen. Deze truuk met: "de bootloader pretendeerd een gewone programmer te zijn" zie je ook in de arduino.

Volgens mij kan AVRdude geen firmware-update doen. (Heb ik anders voor niks een Windows VM op zitten tuigen?)

Ik denk (achteraf) dat avarice iets misdaan zou kunnen hebben. Moet eens kijken of dat firmware-updates van de dragon kan uitvoeren...

Maar deze PC heeft meer "vage" problemen met USB. (readonly USB sticks, al hielp fsck, en 1 poort die gewoon slecht contact maakt, al zat de dragon daar niet in.)

Op 24 januari 2019 20:45:39 schreef rwk:
Heet misschien ook niet voor niks Dragon.

Omdat het een draak van een ding is, of omdat ik er maar azijn of "fines herbes" mee moet maken?

(Over het algemeen bevalt me die AVR Dragon juist heel goed, maar dit was even frustrerend.)

Is inderdaad ook een kruid :), maar ik bedoelde het plaatje achterop, de in elkaars staart bijtende draken, esotherisch de atomaire wedergeboorte.

Bij mij staat dat plaatje voorop ;)

Niet met enige Oosters filosofische overweging erachter, maar gewoon omdat ik het een mooi plaatje vond.

Anyway. "Dragon deed moeilijk" dan. Hij werkt nog steeds, sinds ik de firmware er opnieuw in heb gezet. (Mag je dat als een soort wedergeboorte van een mcu beschouwen, als de firmware opnieuw geladen wordt? :P)

[Bericht gewijzigd door Lucky Luke op (16%)]

Hetzelfde plaatje staat bij mij achterop (de print).
Mooi doosje trouwens hout? de mijne is "gewoon" rood.
Van mij mag je nw firmware wedergeboorte noemen, zal wat opzoeken hoe zo'n atomaire wedergeboorte werkt.

[Bericht gewijzigd door rwk op (33%)]

Lucas komt wel eens op een hackerspace. Daar hebben ze een laser-snij-machine en ik gok dat ie dit doosje zelf heeft ontworpen en gelaserd.

MakerSpace, maar inderdaad.

Al is het ontwerp uiteraard ge"jat" van het rode doosje van de dragon, ingescand, omgezet naar z/w (binarized), opgeschoont (vlekjes weggepoetst waar ze niet horen), en gegraveerd.

De rest van het doosje is niet lasergesneden, maar ouderwetsch gezaagd en met 2 spoorbielzen aan elkaar gezet. (Nouja, vurenhouten latjes, maar ze zijn relatief dik), en staat ergens in SYP.

Aan de binnenkant van de deksel heb ik de pinout van de ISP en JTAG connector staan, is erg handig.

Als ik google op "hackerspace" vind ie er in mijn omgeving twee, Pixelbar in 010 en die in leiden. Zoek ik "makerspace" krijg ik een andere in rotterdam, dezelfde in leiden en 1 in Amsterdam....