Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zur LINUX AVR-GCC Toolchain & zum ATtiny167


von Hendrik L. (lbd)


Angehängte Dateien:

Lesenswert?

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

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.