PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro: EEPROM wie übertragen?



izaseba
28.06.2005, 19:49
Hallo Leute,

Ich stehe hier vor einem Problem und zwar möchte ich gerne mehrere Werte in EEPROM
von Asuro übertragen...
Nur wie?

Mit dem Flashtool geht es nicht, wenn ich versuche *.eep.hex zu übertragen schiebt er mir das ins normale Flash :-s

Und nun stehe ich da und weiß nicht weiter...
Ich hab mir die Quellcodes von den Tools angesehen ,habe dort nichts entdeckt, was mich weiterbringt , es gibt auch keine flags,parameter die man setzen kann...

Ich gehe davon aus, daß es nicht möglich ist, oder habe ich was übersehen ?

Gruß Sebastian

stochri
28.06.2005, 21:51
Hallo izaseba,
warum nimmst Du nicht die Routinen aus dem Datenblatt des Atmega ? Oder beim Mikrocontroller.net-> AVR habe ich auch schon die EEPROM Routinen gesehen.
Wie wäre es mit einem kleinen Programm, welches ein Flash-Datenfeld ins EEPROM rüberschiebt ?

Gruss,
stochri

izaseba
28.06.2005, 22:13
Hallo stochri,
Danke für die Antwort, aber Du hast mich falsch verstanden, oder ich hab mich falsch ausgedrückt...

Also wie man aus einem laufendem Programm auf EEPROM zugreift, und welche Routinen dazu nötig sind ist mir schon klar, das ist nicht das Problem.

Ich bin an einem Programm dran, wo ich eine art Datenbank im EEPROM erstelle, die muß also beim Flaschen mit rein.
Beim Kompilieren werden 2 Dateien ergeugt *.hex und *.eep.hex,
Die erste muß in Flash die zeite in eeprom.
Bei "normalem" Programmer mache ich das mit avrdude, ds ist auch kein Problem, da kann man angeben wo die datei hin soll, aber bei Asuro mit dem IR Flasher krieg ich das nicht hin :cry:

Und das war die Frage meinerseits, wie macht man das, aber ich glaub das geht garnicht, schade dann muß ich jetzt wohl den Asuro erweitern...

Gruß Sebastian

Archi
29.06.2005, 17:27
Hallo Sebastian,

der Bootloader und das Flash-Tool sind nicht in der Lage, Daten in's EEPROM zu schreiben. Für die Anwendung wäre ein eigenes spezielles EEPROM-Lade-Programm erforderlich.
Ich würde mich freuen, davon zu hören, wenn's sowas gibt!

CU, Robin

izaseba
29.06.2005, 18:12
Danke Archi,
Das habe ich mir auch gedacht, das es nicht geht ...

Für die Anwendung wäre ein eigenes spezielles EEPROM-Lade-Programm erforderlich.
Dafür müßte auch die Firmware neu, es sei denn da ist schon was vorbereitet um eeprom zu beschreiben, was ich allerdings nicht glaube.

Gruß Sebastian

izaseba
29.06.2005, 18:17
Wie wäre es mit einem kleinen Programm, welches ein Flash-Datenfeld ins EEPROM rüberschiebt ?


Das wäre eventuell die Lösung, ein Programm schreiben, das mir alles in eeprom schiebt, und anschließend das eigentliche Programm Flashen.
Da stellt sich nur die Frage was beim Flashen mit dem eeprom passiert ?
Bleiben die Dateien erhalten, oder werden sie gelöscht :-k
Das muß ich untersuchen...

Gruß Sebastian

Archi
29.06.2005, 22:07
So habe ich mir das auch vorgestellt. Vielleicht geligt es auch, das Programm so zu schreiben, dass man auf PC-Seite des Flash-Tool verwenden kann... Leider gibt's keinen Source vom Bootloader, aber die Sourcen vom Flash-Tool (zumindest die Linux-Variante) sind auf der CD drauf und wenn man mit einem zweiten Rechner mitlauscht, was auf der Schnittstelle passiert, wird auch das Protokoll schnell klar.

Die Daten im EEPROM bleiben beim Flashen übrigens erhalten :-)

CU, Robin

linux_80
29.06.2005, 22:20
Wenn man 2 IR-module hat kann man leicht mitlauschen,
man braucht aber evtl. ein Terminalprogramm, das alles in Hex ausgibt, denn die Binären Daten zerwerfen sonst die ausgabe.

Wie läuft das eigentlich wenn man normal einen AVR flasht (also kein ASURO), und die Daten da ins EEprom haben will, da muss doch auch vom PC kommen wo er die Daten hinhaben will ?

izaseba
29.06.2005, 22:37
Wie läuft das eigentlich wenn man normal einen AVR flasht (also kein ASURO), und die Daten da ins EEprom haben will, da muss doch auch vom PC kommen wo er die Daten hinhaben will ?

Hallo Linux_80,

Ja logisch kommt das vom PC und zwar mußt du immer angeben wo es hin soll bei avrdude z.B -U eeprom:w:blabla.eep.hex bzw. -U flash:w:blabla.hex , und bei asurocon oder asuroflash hab ich die Möglichkeit nicht :-s


man braucht aber evtl. ein Terminalprogramm, das alles in Hex ausgibt, denn die Binären Daten zerwerfen sonst die ausgabe.

Ich weiß zwar nicht wie das bei Windowstools geht, aber bei gtkterm auf jedem Fall.

Gruß Sebastian

linux_80
29.06.2005, 22:48
Hallo,

Ja logisch kommt das vom PC und zwar musst du immer angeben wo es hin soll bei avrdude z.B -U eeprom:w:blabla.eep.hex bzw. -U flash:w:blabla.hex , und bei asurocon oder asuroflash hab ich die Möglichkeit nicht :-s

so sag ich es dem PC,
aber wie sagts dann der PC dem AVR, das muss jetzt herausgefunden werden !
Dann kann man versuchen ob das mit den Möglichkeiten des ASURO auch geht.

izaseba
29.06.2005, 23:24
so einfach ist es nicht, glaube ich
Die Asurotools werden die *.hex Datei ganz anders behandeln als z.B. avrdude, damit die Firmware aufm Asuro damit klarkommt, das fängt schon mit den komischen Pages an

gruß Sebastian

linux_80
29.06.2005, 23:53
...das fängt schon mit den komischen Pages an

ich hab mir jetzt mal die Doku zum M8 etwas durchgelesen, der Speicher ist in Pages unterteilt, Flash 32Words, EEprom 4bytes.
Das werden die ASURO-flash programmierer so übernommen haben.

Wie der Flash/EEprom mit SPI zu beschreiben geht hab ich soweit herausgelesen, jetzt muss erstmal der ASURO erforscht werden, was der alles kann.

Frage:
Hat ein ASURO-Besitzer ein Programmiergerät, mit dem man normalerweise AVRs programmiert, und könnte die Fuse- und Lock-Bits auslesen, dann könnte man schaun ob es überhaupt möglich ist hier was zu ändern.

izaseba
29.06.2005, 23:59
hallo,
Kann ich morgen machen null problemo,
jetzt bubu

Gruß Sebastian

izaseba
30.06.2005, 19:09
hallo linux_80,
Leider kann ich Dir die Fusebits nicht posten, :-(
Irgendwas stimmt mit meinem Quarz nicht (hab auf die schnelle nur irgendwas mit 3,blabla Mhz gefunden) ,heul

Nachtrag:
Es kann auch sein, daß die SPIEN Fuse gesetzt ist, dann kann ich lange probieren...

Gruß Sebastian

linux_80
30.06.2005, 20:34
Hi Sebastian,
macht ja nischtz,
ich hab grad ein paar Forschungen gemacht in sachen IR-übertragung,
Da ich ja 2 IR-module habe, hab ich da mal gelauscht, was da so hin- und hergeschickt wird.
So wie das für mich ausschaut, geht da nix auf diesem Wege, ausser Daten ins Flash zu bekommmen !
Die ersten Daten die kommen, sind genau die, so wie sie im Hex-file stehen,
ich hab ja jetzt nix hier um so ein Hex-file zu entschlüsseln,
hab nur dieses kleine testprogramm gabaut,


int main(void) {
while(1);
}

und trotzdem sind es schon 1540 Bytes an Code!

Vielleicht hat jemand einen Tipp wie ich da ein Assembler, oder ähnliches aus dem HEX herauslesen kann, hab gesehen dass das öfter gemacht wurde.

Ein anderer Ansatz wäre,
die SPI-schnittstelle freizulegen, das wären die Pins PB3/4/5
das wäre auf der ASURO-platine der Anschluss CON1, und die Richtungsbits vom rechten Motor. Da könnte man den AND-Baustein herausnehmen zum programmieren, oder sowas in der Richtung !
:-k

izaseba
30.06.2005, 20:48
also um die .hex im assembler zu lesen benutzt Du einfach avr Studio
eine endlosschleife im assembler sieht etwa so aus:

.org 0x000
rjmp reset

reset:
rjmp reset


ist gerade 4 Bytes groß

Und mit dem ISP bin ich mir auch nicht sicher, wenn da wirklich SPIEN gesetzt ist, kannst Du es wohl vergessen.

Gruß Sebastian

linux_80
30.06.2005, 23:58
hab inzwischen rausgefunden warum eine einzelne 'C' endlosschleife soviel Platz braucht,
mit dem Tipp das HEX-file mit AVR-studio zu öffnen, hab ich mal geguckt,
der C-compiler legt hier ein halbes Betriebssystem an, mit den ganzen Vectoren und IRQ-routinen, damit beim Nix-tun nix dazwischen funken kann :-)

izaseba
01.07.2005, 14:22
hmmmm,
habe gerade auch die Endlosschleife kompiliert, komme aber nur auf 308 Bytes :-k

Aber bei mir ist es kein halbes Betriebssystem, nur Stack initialisierung, etwas sram beschreiben, und alle Vectoren zeigen auch einen handler der sofort reset initialisiert
und ganz unten meine Endlosschleife \:D/

Mehr nicht.

Gruß
Sebastian