baerwolf / USBaspLoader

An (V)USB bootloader firmware for AVR-MCUs emulating the popular USBasp for programming itself
Other
178 stars 146 forks source link

Flash bootloader with avrdude/avrdudess and usbtinyisp #19

Closed BenRoe closed 5 years ago

BenRoe commented 5 years ago

Hi, i try to flash the bootloader on the Atmega328P chip.

The chip is on the plaid pcb and the UsbTinyIsp is connected via the isp pins. Are the settings correct in the screenshot below? Don't wanna brick the chip.

avrdudess-USBaspLoader-plaid

BenRoe commented 5 years ago

The main.hex file is from https://github.com/hsgw/USBaspLoader/tree/plaid @hsgw

baerwolf commented 5 years ago

Hi Ben I will test your main.hex (and fuses) by flashing them to an empty AVR this weekend. I will give you feedback asap. (Are you using the default layout with 16MHz clock?)

Btw. you also should program the efuses as indicated in the precompiled versions: http://matrixstorm.com/avr/tinyusbboard/bootloader/default328_enus_lfxf7_hfxd0_efx04_v0x97x1.hex

So Lfuse=0xf7, Hfuse=0xd0 and Efuse=0x04 (with the default layout).

BR

baerwolf commented 5 years ago

Hallo nochmal

Wenn Leipzig als angegebener Standort stimmt - dann schicke/schenke ich gern ein bestücktes tinyUSBboard mit ATmega328p - 20MHz oder 16MHz - je nach Wunsch. (Insofern ich die Zieladresse bekommen kann ...)

MfG

BenRoe commented 5 years ago

Hallo baerwolf, vielen lieben Dank für das Angebot. Ich möchte den Atmega328p auf dem Plaid Keyboard Pcb nutzen. https://github.com/hsgw/plaid

Das pcb verwendet einen 16Mhz Kristall. Im der schematic.txt werden folgende fuse werte empfohlen. https://github.com/hsgw/USBaspLoader/blob/plaid/Schematics.txt

LFUSE: 0x1f HFUSE: 0xc0 LOCK : 0x3f (unchanged - the bootsection is protected via loader software)

baerwolf commented 5 years ago

Hallo

Sehr nettes Projekt - muss ich mir später unbedingt genauer ansehen... (Hatte auch immer Keyboardprojekt vor - weshalb ich vor Jahren schon die dual Maus/Keyboard V-USB HID BOOT Bibliothek entworfen hatte (https://github.com/tinyusbboard/hid-KeyboardMouse) ).

Bei Bedarf (wenn eine V-USB Firmware noch benötigt, die auch im BIOS von Rechnern funktioniert - einfach mal Bescheid geben ;-)

Zu den Fuses: Die Beispiele beziehen sich immer auf ATmega8 - nicht den hier verwendeten ATmega328p. Wenn 16MHz und die Standadbeschaltung (PD2 und PD7 fuer USB, PD6 fuer SELECT) zur Verwendung kommen, dann:

LFUSE: 0xF7 HFUSE: 0xD0 EFUSE:0x04 LOCK : 0x3f (unchanged - the bootsection is protected via loader software)

Hier kann auch die Firmware für ATmega328P von http://matrixstorm.com/avr/tinyusbboard/other_controllers.html verwendet werden. (Um Fehler beim compilieren zu vermeiden.)

http://matrixstorm.com/avr/tinyusbboard/bootloader/default328p_enus_lfxf7_hfxd0_efx04_v0x97x1.hex

MfG

BenRoe commented 5 years ago

Hi, vielen Dank für die schnelle und freundliche Hilfe. Der Ersteller von dem Plaid Pcb hat mir den Hinweis auf die Einstellungen geben. https://github.com/hsgw/USBaspLoader/blob/c068d14f0db8ff8a6e13c2b30bae6fcea66f21ed/Makefile.inc#L154

Ich kenn mich nur mit dem ATmega32U4 und war von den Fuse Einstellungen überfordert. Dachte ich muss die Werte am Ende der Schematics.txt verwenden.

Ich werde nachher die Einstellungen von dir testen.

Einen Chip habe ich glaub schon zerschossen. Wenn ich den auf dem Pcb hab und diese per USB anschließe connected der nach 3 Sekunden immer wieder neu und Windows zeigt neues Gerät erkannt.
Ist der Chip hin, oder kann ich ihn wieder neu Flashen.

BenRoe commented 5 years ago

Ich bekomme einen Fehler mit der efuse, aber die Tastatur funktioniert. 🎉 Sollte ich den Fehler beheben?

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0x04"
avrdude.exe: writing efuse (1 bytes):

Writing |  ***failed;  
################################################## | 100% 0.04s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x04:
avrdude.exe: load data efuse data from input file 0x04:
avrdude.exe: input file 0x04 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

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

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xfc != 0x04
avrdude.exe: verification error; content mismatch

@baerwolf ich habe einen Shop wo ich die Plaid Pcb's und andere Mechanical Keyboad Teile verkaufe. keycapsss.com

Wenn du was findest schreib mich an und ich würd dir Rabatt geben als Dankeschön für den Bootloader und die Hilfe.

Falls du Lust und Zeit hast können wir auch gern ein eigenes Pcb erstellen.

baerwolf commented 5 years ago

Hallo (und guten Abend ;-)

Einen Chip habe ich glaub schon zerschossen. Wenn ich den auf dem Pcb hab und diese per USB anschließe connected der nach 3 Sekunden immer wieder neu und Windows zeigt neues Gerät erkannt. Ist der Chip hin, oder kann ich ihn wieder neu Flashen.

Man kann den Chip sehr sicher retten. Der einfachste Versuch wäre ihn per ISP neu zu flashen. Falls das nicht gehen sollte, ist sehr wahrscheinlich nur die Taktquelle falsch gefused: Einfach einen externen Taktgeber nutzen. Falls das auch nicht gehen sollte, ist es Glück das der IC ein DIP Modell ist: Stickwort "AVR Fusebit Doctor"...

Ich bekomme einen Fehler mit der efuse, aber die Tastatur funktioniert.

Ja, das ist (IMHO) ein undokumentierter ERRATA der ATmega88P(A) Familie (ATmega48p, ATmega88p, ATmega168p und ATmega328p). Je Revision verhalten sich die "reservierten"/ungenutzten Bits der eFUSE anders. Bei einigen Revisionen sind die nach Einstellung der eFUSE "0" - bei anderen "1". In diesem Fall wohl eher letzteres... ...dadurch stellt avrdude beim "verify" Rücklesen einen Unterschied fest - betrifft aber nur die ungenutzten Bits der FUSE, weshalb auch alles funktioniert.

@baerwolf ich habe einen Shop wo ich die Plaid Pcb's und andere Mechanical Keyboad Teile verkaufe. keycapsss.com

Den Shop werde ich mal am WE besuchen kommen. Ist gerade günstig weil mein Urlaub startet und ich ein wenig Zeit habe...

Eigene PCB - gerne (zumal Elecrow gerade sehr günstige Preisaktion hat) - ich hatte schon sehr lange vor z.B. für die Tastenmatrix der FDC-3402 einen USB-Controller zu bauen. (8 Zeilen, 15 Spalten - Die 8 Zeilen plante ich direkt über einen Port zu lesen und die Spalten jeweils per Schieberegister pollend zu "aktivieren"...) Bin für Vorschläge offen... (Auf Arbeit gab es mal Wünsche/Gespräche für eine Art RFID modulbasierte "Tastatur", welche das "Bildschirm sperren" (Winkey + L / strg-alt-entf unter Linux) sendet wenn man sich vom Rechner entfernt...)

MfG und GN8