Zugriff auf Compact flash

OP #1564200
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
OP #1565179
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
Gast #1565259
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 ;-(
OP #1583593
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren