mikrocontroller.net

Forum: Compiler & IDEs File in externes EEPROM speichern


Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal,

ich habe folgendes Problem:
ich habe für ein externes EEPROM (AT17LV002) mit C einen Treiber zum
beschreiben und auslesen geschrieben (ATMEGA16).
Nun soll ich ein *.hex file in das EEPROM speichern - das Problem ist
folgendes: wie "importiere" ich dieses File - ich brauche es Byteweise
sprich eine Funktion dir mir aus einer Datei ein byteArray macht (bzw
charArray).

wenn mehrere Angaben oder Infos gebraucht werden, werde ich sie
natürlich posten!

Ich hoffe, dass mir jemand helfen kann!
danke

mfg Lucas

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich habe für ein externes EEPROM (AT17LV002) mit C einen Treiber zum
> beschreiben und auslesen geschrieben (ATMEGA16).

Wie kannst du einen Treiber geschrieben haben, wenn du nicht weißt wie 
du diesen 'Treiber' ins Filesystem einbindest.

Ich denke mal du hast keinen Treiber, sondern einfach nur 
Zugriffsfunktionen.

> wie "importiere" ich dieses File - ich brauche es Byteweise
> sprich eine Funktion dir mir aus einer Datei ein byteArray macht (bzw
> charArray).

Was bedeutet in diesem zusammenhang 'importieren'?
Liegen die Daten schon im EEPROM und die Frage ist:
Wie kriege ich sie mit dem Mega wieder raus?
Oder lautet die Frage:
Wie kriege ich die Daten erst mal ins EEPROM (von einem PC aus)?

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na dann poste mal.

Dein c-Programm läuft auf dem uC? Dein Hex-File ist auf dem PC?
Welche Datenverbindung besteht?

Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmals Danke für die schnelle Antwort!

naja, dann ist es eben nur eine Zugriffsfunktion...
die Verbindung zum µC geht über die Serielle Schnittstelle (hab das 
Board STK500) - die Verbindung zwischen µC und EEPROM sind nur ein paar 
Kabel (DATA, CLK und noch 2 oder 3 weitere).

Ich muss vom PC aus eine FPGA-Konfigurationsdatei in das EEPROM 
speichern, die ich dann später durch setzen eines Jumpers wieder auslese 
und in das EEPROM schreibe und es somit konfiguriere - das alles um mit 
dem FPGA unabhängig vom PC zu sein!
Das Problem ist: Wie krige ich diese Konfigurationsdatei (am PC) in das 
EEPROM?

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vom PC senden, mit dem uC empfangen, ins EEProm schreiben?

Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so in die Richtung, ja...
ist das überhaupt möglich?
aber wie soll ich sonst das EEPROM konfigurieren?
mfg

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erster Teil der Frage: Klar ist das möglich. Serielle Datenübertragung 
ist uralt und erprobt.

zweiter Teil: unverständlich, was Du meinst.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst ein Protokoll und ein PC-Programm, welches mit dem AVR über 
dieses Protokoll spricht.

Du könntest auch direkt das Hex-File senden und der AVR wandelt es in 
binär um.
Problem ist dabei die Schreibgeschwindigkeit des EEPROM. Entweder die 
Baudrate klein genug setzen oder Hardware-Handshake.


Peter

Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja schon, aber wie soll das gehen -> wie soll ich zB eine 1MB grosse 
Datei (bzw irgendeine Datei) vom PC über den µC in das EEPROM senden? 
genau das ist mein Problem...

wenn die Datei dann zu gross ist, muss ich Buffern, is klar... aber 
jetzt gehts vorerst mal darum überhaupt eine Datei in das EEPROM zu 
kriegen.

ich hoffe ich habe mein Problem verständlich erläutert.
mfg

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lucas Grünberger wrote:
> ja schon, aber wie soll das gehen -> wie soll ich zB eine 1MB grosse
> Datei (bzw irgendeine Datei) vom PC über den µC in das EEPROM senden?
> genau das ist mein Problem...

Indem du dir zb auf dem PC ein Programm schreibst, welches:

   * Datei öffnet
   * Serielle Schnittstelle öffnet
   * Daten aus dem File ausliest
   * Daten in kleinen Häppchen zum AVR überträgt
   * Vielleicht in irgendeiner Form die korrekte Übertragung
     sicherstellt (Prüfsumme oder dgl.)
   * Datei wieder schliesst
   * serielle SChnittstelle wieder schliesst


Auf dem Mega läuft ein Program welches

   * An der Seriellen lauscht, bis sich der PC meldet
   * Einen Happen Daten vom PC übernimmt
   * Eventuell die Prüfsumme überprüft
   * Den Datenblock ins EEPROM schiebt
   * Dem PC Bescheid gibt, das er den nächsten Datenblock
     schicken kann.

> ich hoffe ich habe mein Problem verständlich erläutert.

Nicht wirklich. Was du als Problem ansiehst, ist in Wirklichkeit keines.
Jeder Bootloader macht das so, nur dass er die Daten ins Flash schiebt 
und nicht ins EEPROM.

Sei ein bischen kreativ! Wenn du zu Hause anrufst (=du bist der PC) und 
möchtest, dass deine kleine Schwester (=die ist der Mega16) irgendwelche 
Werte (=deine Daten) auf einen Notizblock (=das EEPROM) aufschreibst, 
wie gehst du vor?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...ich habe für ein externes EEPROM (AT17LV002) mit C einen Treiber zum
>beschreiben und auslesen geschrieben (ATMEGA16).

>...jetzt gehts vorerst mal darum überhaupt eine Datei in das EEPROM zu
>kriegen.

Irgendwie passen die beiden Aussagen nicht so richtig zusammen.

>wie soll ich zB eine 1MB grosse
>Datei (bzw irgendeine Datei) vom PC über den µC in das EEPROM senden?
>genau das ist mein Problem...

Auf dem PC mit einem Terminalprogram. Selbst Hyperterm hat vermutlich 
irgendwo in den Menus die Möglichkeit, (Binär-)Files zu senden. Auf dem 
Mega brauchst du dann nur ein kleines Progrämmchen, daß die Daten von 
der UART entgegennimmt und ins EEProm schreibt. Entweder baust du dazu 
noch ein Hard- oder Softwarehandshake mit ein, oder sendest halt mit 
kleiner Baudrate.

Dann gibt es für jedes EEProm auch käuflich zu erwerbende Programmer. 
Für ein paar hundert € lösen die dein Problem.

Oliver

Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, dann ist warscheinlich das Problem das, dass ich nicht sehr 
erfahren in µC Programmierung bin... bin eher der J2ME und C# 
Programmierer ;)

aber nochmals zurück:
Danke Karl-Heinz!

@ Oliver:
das mit einem Terminalprogramm ist gut, auf sowas hätte ich auch selbst 
drauf kommen können ;)
aber da hab ich auch noch ein Problem: hier Funktioniert die Übertragung 
ja auch über die Serielle Schnittstelle - wie kann ich mit dem µC Daten 
von der Seriellen engegennehmen?

tja gerade desshalb versuche ich es selbst zu machen...

eure Vorschläge werden mich jetzt wieder eine weile beschäftigen ^^

mfg

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: luki G. (testcenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werd hier mal ne weile beschäftigt sein! ^^

mfg und Danke an alle!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.