www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Zugriff auf Compact flash


Autor: Valentin S. (jonava)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe folgende Frage: Gibt es eine Software Routine, mit der ich 
einfach eine Funktion Aufrufe und Daten auf eine Compact Flash Karte 
schreiben und später auslesen kann?
Z.B: funktion (Adresse, Daten).
Zu den Randbedingungen: Ich habe ein XUPV2Pro von Digilent zur 
Verfügung, an dem ein System Ace Controller angebunden ist.

Weiß jemand wie man Daten über Impact auf die CF Karte schreiben kann? 
Ich mache das bisher über einen externen CardReader, was lästig ist, 
weil ich das immer umstecken muss.

Wenn es über Software nicht möglich ist. Kann mir jemand Sagen, wie man 
das Hardwaretechnisch lösen könnte. Vllt kennt auch jemand open Source 
Lösungen?
Ich bin Anfänger in VHDL.

Vielen Dank im Voraus.

Gruß
Jonanova

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheinbar hat keiner dein Problem so richtig verstanden... :-o
Probiers mal mit einer anderen Beschreibung.

> Weiß jemand wie man Daten über Impact auf die CF Karte schreiben kann?
Welche Daten? Die FPGA-Konfiguration?
Falls ja: was hilft es dir, wenn die auf dem CF ist?

Autor: Valentin S. (jonava)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

tut mir leid, dass meine Problembeschreibung etwas schwammig ist.

Ich versuche meine Problem etwas besser darzustellen.
Ich habe einen Microblaze und ein Hash-Engine auf dem FPGA laufen.
Ich möchte über den MicroBlaze einen Bitstrom von der CF-Karte lesen und 
an die Hash-Engine über den OPB-Bus übergeben. Die Hash-Engine bildet 
mir dann einen Sha-1 Hashwert. Diesen Hashwert möchte ich dann mit ein 
paar Zusatzangaben (Datum, und anderen Kram, der am Anfang des 
Bitstreams steht) auf die CF-Karte schreiben um damit dann so ne Art 
Log-Datei erzeugen.

Hat jemand eine Idee, wie ich die Bitstreams von der CF-Karte lesen kann 
und dann die Hashwerte an eine bestimmte Adresse auf der CF loggen kann?


Vielen Dank im Voraus.

Gruß
Jonanova

Autor: Atze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube über das SystemACE geht das, da gibt es jedenfalls neben dem 
Config-Interface ein Dateninterface zum FPGA. Schau mal auf der 
Xilinx-Seite nach AppNotes und Whitepapers, ich habe da mal was gesehen.

Gruß
Atze vom Bau

PS: Du kannst über Impact und das Download-Kabel NICHT die 
Configuration-Files ändern. Umstecken Board <-> Rechner ist angesagt ;-(

Autor: Valentin S. (jonava)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich bin jetzt einen Schritt weiter. Es gibt bei Xilinx die xilfats 
library und dazu eine Anleitung, sodass man normalerweise ohne Probleme 
auf die CF Karte schreiben und lesen kann.

Ich kann im Moment nur lesen. Das schreiben funktioniert leider nicht. 
Kann mir jemand sagen, was ich falsch mache?

Hier mein Code:

#include "xparameters.h"
#include "stdio.h"
#include "stdlib.h"
#include "loc_check_core.h"
//#include "xsysace_l.h"
//#include "xsysace.h"
#include "sysace_stdio.h"


void main(void)
{
  print("start\n");

print(" -- Auf CF schreiben -- \n\r");
  char FileName[] = "a:\\test.txt";
  char FileName2[] = "a:\\test2.txt";
  void *fstream_write;
  char buffer2[50];
  int buf;
  int i;
  char buffer[]= {'T' , 'e' , 's' , 't'};
  buf = sizeof(buffer);

  xil_printf("Groesse von buf: %d \r\n" ,buf);
  xil_printf("inhalt von buffer: %u \r\n" ,buffer);

  fstream_write = sysace_fopen(FileName,"w");
   for (i=0; i<32768; i++)
   {
   sysace_fwrite (buffer , 1 , sizeof(buffer) , fstream_write);
   }
  sysace_fclose (fstream_write);
  print(" -- Datei schliessen -- \r\n");


  void *fstream; /* A pointer to our file */
     char data[50]; /* A buffer to read data from the file into */
    int n;
     fstream = sysace_fopen(FileName2,"r"); /* Open myfile.txt in read 
only mode */
     print(" -- Datei oeffnen nur lesen -- \r\n");
    sysace_fread(data,1,sizeof(buffer2),fstream); /* Read 
SIZE_OF_DATA_BUFFER bytes into the buffer */

    for (n=0; n<sizeof(buffer2); n++)
    {
      xil_printf("%c", data[n]);
    }

    print("\r\n");
     sysace_fclose(fstream); /* Close the file */


  print("ende\n");
  while (1)
  {
  }

  //return 0;
}

Vielen Dank im Voraus.

Gruß
Jonanova

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.