Forum: Mikrocontroller und Digitale Elektronik USB Bootloader ATmega168P


von M. Н. (Gast)


Lesenswert?

Hallo ich habe einen ATmega168 (als Ersatz für einen mega8).

Dieser soll mit diesem Bootloader versehen werden:

http://www.fischl.de/avrusbboot/


Ich bin kläglich gescheitert, das Programm zu portieren: Hier ist was 
ich getan habe:

1. Testweise die Bootloader Comdition hart auf 1 gesetzt, um dies als 
Fehlerquelle auszuschließen.

2. das GICR Register in MCUCR umbenannt.

3. Das Signal von INT0 in INT0_vect umbenannt.

4. Das Makefile bearbeitet:
 BOOTLOADER_ADDRESS = 0x3800 #Byteadresse
LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS)

5. Fuses angepasst:
#LOW: 0xFF
#HIGH: 0xDF
#EXTEND: 0xF8

Probleme ergeben sich schon beim kompilieren. Der GCC meckert bei dem 
Wort PROGMEM. Keine ahnung warum. Habe es einfach entfernt...

Leider tut sich nichts. Ich bekomme den Bootloader nicht ans Laufen.

Weiß jemand was man ändern muss? ode rhat jemand einen Bootloader, der 
mit der gleichen Hardware funktioniert?

Eine Frage noch:

Um den Interrupt auf den Bootloader umzubiegen, werden bestimmte Bits im 
MCUCR Register geschrieben. Soweit so gut. Allerdings ist mir nicht 
klar, wie das Assemblerfile den Vector ummapt. Soweit ich sehe wird 
einfach
1
.global INT0_vect
verwendet. Muss da nicht noch der Offset von der Vectortabelle drauf?

Kenne mich leider mit Assembler in GCC nicht aus.
Weiß jemand, wie man das ans Laufen bekommt?

von M. Н. (Gast)


Lesenswert?

Hat keiner 'ne Idee?

von Frank (Gast)


Lesenswert?

Code?
Makefile?
...?

von M. Н. (Gast)


Lesenswert?

ich glaube, ich versuche mal den hier:

http://www.obdev.at/products/vusb/bootloadhid-de.html

Der scheint etwas besser zu sein. Außerdem benötigt man keinen Treiber, 
da HID.

Gehe ich richtig in der annahme, dass ich einfach nur die startadresse, 
fuses und den Controller im Makefile umstellen muss?

von M. Н. (Gast)


Lesenswert?

Ok Leute,

DDer Bootloader aus meinem letzten eitrag funktioniert mit einem 
ATmega168PA. Das grafische Windows tool kann auch programmieren :)

Nur das mitgelieferte Command-Line-Tool geht unter Linux nicht

Das ist der Fehler:
1
Warning: Checksum error between address 0x0 and 0x4
2
Warning: could not set configuration: Device or resource busy
3
Page size   = 128 (0x80)
4
Device size = 16384 (0x4000); 14336 bytes remaining
5
Uploading 128 (0x80) bytes starting at 0 (0x0)
6
0x00000 ... 0x00080
dmesg sagt:
1
[13258.418758] usb 3-1: new low-speed USB device number 21 using uhci_hcd
2
[13258.609058] hid-generic 0003:16C0:05DF.0009: hiddev0,hidraw0: USB HID v1.01 Device [obdev.at HIDBoot] on usb-0000:00:1a.1-1/input0

Kann mir jemand helfen?

von M. Н. (Gast)


Lesenswert?

hat da keiner ne Idee?

Kann es daran leigen, dass es ein Arch-Linux ist?
Habe das Programm natürlich selbst kompiliert.

von R. B. (dxx255)


Lesenswert?

Versuch mal USBaspLoader
https://github.com/baerwolf/USBaspLoader
Das geht ganz normal mit avrdude

: Bearbeitet durch User
von Mike A. (Gast)


Lesenswert?

M. H. schrieb:
> Der GCC meckert bei dem Wort PROGMEM. Keine ahnung warum. Habe es
> einfach entfernt...

Könnte es vielleicht sein, dass der Compiler dann nie erfährt, dass er 
die Variablen in den Flash legen soll?

von M. Н. (Gast)


Lesenswert?

Mike A. schrieb:
> Könnte es vielleicht sein, dass der Compiler dann nie erfährt, dass er
> die Variablen in den Flash legen soll?

Das war noch der alte Bootloader... Das Problem ist beim neuen nicht. Da 
ist der Code neuer. das harmoniert mit dem aktuellen AVR-GCC.

Ich habe mich mit dem Entwickler des Bootloaders in Verbindung gesetzt.
Es ist wahrscheinlich eine Änderung des USB Treibers in Linux, der jetzt 
bestimmte Zugriffe unterbindet. Man muss wahrscheinlich (was das 
aktuelle Programm momentan noch nicht tut) über den USB-HID Treiber von 
Linux drauf zugreifen. Der blockt vermutlich das Device, so dass andere 
Zugriffe nicht mehr funktionieren. Aber mal sehen :)

Werde mich melden, sobald/sofern das Problem gelöst ist.

Bis dann :)

PS: Falls jemand noch 'ne Idee hat, bitte trotzdem schreiben. Selbst der 
Entwickler hat so seine Probleme zu verstehen, warum das nicht geht... 
hahaha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.