Hallo zusammen,
ich versuche mir unter DEBIAN mittels der ATMEL AVR-GCC Toolchain einen
Bootloader zu erstellen (Peter Danneggers).
Dabei stoße ich auf zwei grundlegende Schwierigkeiten:
1. Die tn167def.inc wird vom Assembler syntaktisch nicht erkannt - das
Problem kann man wohl im Makefile umgehen ... allerdings verwende ich
ein vollautomatisiertes Makefile, da habe ich keinen richtigen "PackAn",
wie ich das Makefile ändern muss ...!
Meine Vermutung war allerdings, dass wenn ich eine AVR-GCC Linux
Toolchain verwende, die Syntax bereits aufeinander abgestimmt ist
(seitens ATMEL) !!! Schliesslich wird ja die Linux Toolchain explizit
zum Download angeboten!
2. Ich möchte einen Bootloader für den ATTiny167 erstellen (der im Paket
von Peter nicht erhalten ist ...) - wer nicht wagt, der nicht gewinnt.
Da ich unter Linux erst einmal nicht weiterkam, habe ich unter
AVR-Studio 4 auf windows7 Basis versucht, einen 167 Boot-Loader zu
erstellen.
Klar, dass dies Trial & Error ist - mal schauen was passiert, um mich so
einmal in die Booltloader Thematik einzuarbeiten ...!
Habe mir also zum Üben erst einmal einen ATTINY 2313 vorgenommen -
klappte problemlos!
Darauf dann ("frech") das Projekt auf den ATtiny167 "umgebogen",
wobei dann allerdings dieser Fehler erscheint:
1 | progtiny.inc(55): error: Operand(s) out of range in 'std y+0x7e,r16'
|
2 | progtiny.inc(56): error: Operand(s) out of range in 'std y+0x7f,r17'
|
Die Fehler passieren also in Zeile 56&57 in angehängten progtiny.inc
Datei:
1 | ;-------------------------------------------------------------------------
|
2 | ; Erase application Flash backward (avoid lock out)
|
3 | ;-------------------------------------------------------------------------
|
4 | ldi zl, low (2*BootStart)
|
5 | ldi zh, high(2*BootStart)
|
6 | _pro4:
|
7 | .if PageSize < 32
|
8 | sbiw zh:zl, 2*PageSize
|
9 | .else
|
10 | subi zl, low (2*PageSize)
|
11 | sbci zh, high(2*PageSize)
|
12 | .endif
|
13 | ldi a0, 1<<PGERS^1<<SPMEN
|
14 | out SPMCSR, a0
|
15 | SPM ; CPU halted until erase done
|
16 | brne _pro4 ; until Z = 0x0000
|
17 | ;-------------------------------------------------------------------------
|
18 | _pro5:
|
19 | brtc _pro6
|
20 | 55 >>>> std y+2*PageSize-2, appl
|
21 | 56 >>>> std y+2*PageSize-1, apph
|
22 | ;---------------------- Fill page buffer ---------------------------------
|
Jetzt sind allerdings die PageSizes bei beiden Tinys laut XML Definition
80.
Wieso läuft der 2313 hier fehlerfrei durch, während der 167 einen Fehler
wirft?
Generelle Frage:
Unterscheidet der ATTiny167 sich so stark von anderen ATTinys, dass mein
Versuch aussichtslos ist, auf "stumpfe Weise" einen Erfolg zu erzielen?
Ist der ATTiny167 darum nicht beim Peter unter den getesten ATTinys
erwähnt?
Dank im Voraus