USB Bootloader ATmega168P

Gast #3975188
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?
Gast #3987176
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?
Gast #3988172
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren