Forum: Mikrocontroller und Digitale Elektronik AVR programming flash pages?


von Basti (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich schreibe gerade an einem AVR flasher (Standalone)

Ich habe soweit alles am Laufen (fuses, device id etc)

Jetzt wollte ich ein Testprogramm in den AVR schreiben, jedoch scheitere 
ich am Verständniss des Page-Konzepts

Das Testprogramm togglet einen Pin und wartet danach (schleife)
Im anhang ist das Binary-File

Ich habe das Binary-file bascom-tauglich umgewandelt (siehe unten)

Wenn ich das Datenblatt richtig verstanden habe wird immer eine Page 
erst geladen, dann sage ich in welche page es geschrieben werden soll.

Eine Page hat 32 Words (64 byte), der tiny45 hat 64 pages also 
64*2*32=4096

OK

Aber jetzt muss ich die daten erstmal laden

Load Program Memory Page, High byte, $48, adr MSB, adr LSB, high data 
byte in
Load Program Memory Page, Low byte, $40, adr MSB, adr LSB, low data byte 
in

angenommen ich will die ersten 64 bytes flashes, was ist dann low byte 
und was high byte? ich dachte es wäre ein 8 bit-controller, also nur 
bytes?
Und selbst adr LSB und MSB zb wäre ja dann bei einer page size von 64 
bytes viel zu groß, da reicht doch ein byte oder??

Also adr MSB immer 00??
und adr LSB 0-32??


data 
&H0E,&HC0,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H 
18,&H95
data 
&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H18,&H95,&H 
8F,&HE5
data 
&H8D,&HBF,&HC8,&HE3,&HE0,&HE2,&H4E,&H2E,&H81,&HE0,&H8E,&HBF,&HD1,&HE0,&H 
F1,&HE0
data 
&H5F,&H2E,&HA8,&H95,&H84,&HB7,&H08,&H2E,&H87,&H7F,&H84,&HBF,&H88,&HE1,&H 
99,&H27
data 
&H81,&HBD,&H91,&HBD,&HEE,&HEF,&HF0,&HE0,&HA0,&HE6,&HB0,&HE0,&H88,&H27,&H 
8D,&H93
data 
&H31,&H97,&HE9,&HF7,&H66,&H24,&HBB,&H9A,&H88,&HE0,&H86,&HBB,&H84,&HEF,&H 
91,&HE0
data 
&H0C,&HD0,&HFA,&HCF,&HF8,&H94,&HFF,&HCF,&H31,&H97,&HF1,&HF7,&H08,&H95,&H 
68,&H94
data 
&H62,&HF8,&H08,&H95,&HE8,&H94,&H62,&HF8,&H08,&H95,&HEF,&H93,&HFF,&H93,&H 
EE,&H27
data 
&HE8,&H2B,&HE9,&H2B,&H31,&HF0,&HE0,&HED,&HF7,&HE0,&H31,&H97,&HF1,&HF7,&H 
01,&H97
data &HD1,&HF7,&HFF,&H91,&HEF,&H91,&H08,&H95,&H00

von S. Landolt (Gast)


Lesenswert?

Ein Befehlswort besteht aus 2 Bytes. Z.B. ist 'ldi r16,0xAB' als 0xEA0B 
codiert. Also wird an die betreffende Adresse zuerst 0x0B und dann 0xEA 
geschrieben.

von Basti (Gast)


Lesenswert?

Dh, bei meiner binary wäre das erste befehlswort &H0EC0 ??

von S. Landolt (Gast)


Lesenswert?

Woher kommt dieses Binary? Das erste Wort sieht mir eher nach 0xC00E 
aus, d.h. nach einem 'rjmp', würde dann aber in der Tat in der 
Reihenfolge wie innerhalb des Binarys geschrieben, also erst 0x0E und 
dann 0xC0.

von Basti (Gast)


Lesenswert?

Das ist ein bascom compilat....


bascom source

$regfile="attiny45.dat"
$crystal=8000000

config portb.3=OUTPUT


do

portb.3=0
portb.3=1

loop

end


als hexfile
:100000000EC0189518951895189518951895189567
:1000100018951895189518951895189518958FE5B1
:100020008DBFC8E3E0E24E2E81E08EBFD1E0F1E06B
:100030005F2EA89584B7082E877F84BF88E1992713
:1000400081BD91BDEEEFF0E0A0E6B0E088278D9392
:100050003197E9F76624BB9AC398C39AFDCFF89409
:10006000FFCF3197F1F70895689462F80895E89406
:0400700062F8089595
:00000001FF

von S. Landolt (Gast)


Lesenswert?

Okay, das ist ja wohl das Intel-Hex-Format; da stimmt die Reihenfolge 
bereits.
Zu Bascom kann ich nichts sagen, ich arbeite in Assembler.

von Basti (Gast)


Lesenswert?

das heist lowbyte= 0x0E, highbyte=0xC0 ???

von S. Landolt (Gast)


Lesenswert?

Ja.

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.