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
> 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)?
na dann poste mal. Dein c-Programm läuft auf dem uC? Dein Hex-File ist auf dem PC? Welche Datenverbindung besteht?
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?
so in die Richtung, ja... ist das überhaupt möglich? aber wie soll ich sonst das EEPROM konfigurieren? mfg
erster Teil der Frage: Klar ist das möglich. Serielle Datenübertragung ist uralt und erprobt. zweiter Teil: unverständlich, was Du meinst.
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
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
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?
>...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
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
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_UART Beitrag "AVR-GCC: UART mit FIFO" http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/ und noch ca. 99 zillionen weitere Codebeispiele im Netz... Oliver
ich werd hier mal ne weile beschäftigt sein! ^^ mfg und Danke an alle!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.