mikrocontroller.net

Forum: Compiler & IDEs Greth von Gaisler


Autor: Leon3Freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

Ich beschäfftige mich momentan mit dem GRETH (Leon3) von Gaisler.
Ich hab ein Programm geschrieben, das Daten empfangen soll und mir diese 
dann über ein printf ausgibt. Ich bekomm aber immer nur Schrott 
ausgegeben.
Ich weiß nun nicht weiter.
Die Beispielprogramme von Gaisler halfen mir auch nicht weiter.


In der yahoo Mailingliste hab ich schon geschrieben. Kam aber noch keine 
Antwort, deshalb frag ich hier. Vielleich kennt sich der eine oder 
andere mit dem GRETH aus.

In der Greth.pdf von Gaisler stand das man zusätzlich zum Descriptor 
noch einen Pointer auf den Datenbereich des Descriptors braucht. Wie 
genau setzt man das um?

Was fehlt meinem Code noch?

Freue mich über jede Antwort :)

Gruß Leon3Freak
#include <stdlib.h>
#include <time.h>
#include "greth_api.h"

//Auf 0 setzen, da kein GBit verwendet wird
#define GRETH_GBIT 0

//Verbindungsgeschwindigkeit in Mbit. Kann man auf 10 / 100 / 1000 setzen 
#define GRETH_SPEED 100

// Hier auf 1 setzen um Voll Duplex zu nutzen oder 0 für Halb Duplex
#define GRETH_FULLDUPLEX 1
//Muss man anpassen! GRMON info sys
#define GRETH_ADDR 0x80000f00

static void build_arp_auth(unsigned int source_addr_msb,
          unsigned int source_addr_lsb, unsigned int sender_ip,
          unsigned int target_ip, unsigned char *buf, unsigned int *len);

struct greth_info greth;

int main(void) {
    //Zeiger um Speicher zu allokieren
    int *len;
    //Receive Status
    struct rxstatus *rxs = malloc(sizeof(struct rxstatus));
    //Speicher allokieren
    len = malloc(sizeof(int));
    //Arp Paket erzeugen
    unsigned char arpbuf[42];
    //Empfangspuffer
    unsigned char rxbuf[256];
    //Ein ARP Paket erzeugen zu authentifizierung beim PC
    build_arp_auth(0xDEADBE, 0xEF0020, 0xC0A80016, 0xC0A80001, arpbuf,len);
    //Setze die Grethadresse. Wichtig fürs initialisieren!
    greth.regs = (greth_regs *) GRETH_ADDR;
    //Initialisiere den Greth
    greth_init(&greth);
    printf("Greth wurde initialisiert!\n");
   //Registrieren beim PC
   greth_tx(42,arpbuf,&greth);
   //Empfange Daten
   while (!greth_rx(rxbuf, &greth));
   printf("Empfangspuffer Inhalt: ");
   //Gebe den Inhalt des Empfangspuffers aus <---- Hier gibt er nur Schrott aus 
   printf(rxbuf); //printf("%u",rxbuf);
   printf("\n");
   //Check Receive
   while (!greth_checkrx(len, rxs, &greth));
   printf("RX Status");
   printf("\n");
   printf("---Ende des Grethtest---");
    //Programmende
    return 0;
}

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leon3Freak schrieb:
> //Auf 0 setzen, da kein GBit verwendet wird
> #define GRETH_GBIT 0
>
> //Verbindungsgeschwindigkeit in Mbit. Kann man auf 10  100  1000 setzen
> #define GRETH_SPEED 100
>
> // Hier auf 1 setzen um Voll Duplex zu nutzen oder 0 für Halb Duplex
> #define GRETH_FULLDUPLEX 1

So ganz ohne Ahnung von Greth.
Wo werden diese Konstanten denn genutzt?

Deine Initialisierung scheint unvollständig.

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leon3Freak schrieb:
> //Gebe den Inhalt des Empfangspuffers aus <---- Hier gibt er nur Schrott aus
>    printf(rxbuf); //printf("%u",rxbuf);

Du erwartest ernsthaft druckbare ASCII-Zeichen im rxbuf?
Da stehen doch nur Hexwerte drin. Da einfach printf drauf loszulassen 
ist wohl ziemlich einfach gedacht.
Weiter solltest du dich mit dem TCP/IP Protokoll beschäftigen, damit du 
verifizieren kannst, dass der Inhalt in rxbuf richtig oder falsch ist.
Ob dein Programm überhaupt das richtige macht, kann ich so nicht sagen.

Vollständigen Sourcecode ALS ANHANG ist auch wichtig. Aus einem Fragment 
kann mann nichts erkennen, so wie der Poster über mir.

Es wäre auch gut, wenn du schon so exitische Hardware verwendest, dass 
du kurz erklärst, was GRETH und LEON3 denn sind.
Der GRETH ist der Ethernet-Controller von Gaisler Research und LEON3 
eine 32-Bit CPU mit SPARC Architektur, ebenfalls von GR.

Ich glaube nicht, dass es hier viele Leute gibt, die diese Exoten
kennen :-)

Bist du der Dirk, der hier gefragt hat?
Beitrag "Leon3 interrupts testen"

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.