Forum: FPGA, VHDL & Co. Probleme bei der Übergabe eines Arrays an eine Funktion


von CAnfänger (Gast)


Lesenswert?

Guten Morgen. Ich habe ein Problem bei folgender selbstdefinierter 
Funktion (ausgeführt auf einem Virtex (MicroBlaze)):

int function(u8 *transmitter_buffer)
{

  xil_printf("transmitter_buffer[0]: %x\n\r",transmitter_buffer[0]);
  xil_printf("transmitter_buffer[1]: %x\n\r",transmitter_buffer[1]);
  xil_printf("transmitter_buffer[2]: %x\n\r",transmitter_buffer[2]);
  xil_printf("transmitter_buffer[2]: %x\n\r",transmitter_buffer[3]);
  xil_printf("transmitter_buffer[2]: %x\n\r",transmitter_buffer[4]);

        return(0);
}

In der main() rufe ich das ganze wie folgt auf:


uint8_t tx_buffer[5];

tx_buffer[0] = 0x0A;
tx_buffer[1] = 0x0B;
tx_buffer[2] = 0x0C;
tx_buffer[3] = 0x0D;
tx_buffer[4] = 0x0E;

function(tx_buffer);

Ausgabe auf der Console:

transmitter_buffer[0]: FF
transmitter_buffer[1]: FF
transmitter_buffer[2]: C
transmitter_buffer[3]: D
transmitter_buffer[4]: E

Es werden die zwei ersten Einträge stets als "FF" ausgegeben. Ich habe 
die Funktion einmal auf dem PC im devC++ Editor getestet. Dort tut sie 
was sie soll. Hat einer eine Erklärung?

von Lola (Gast)


Lesenswert?

Der von Dir gezeigte Code und die von Dir gezeigte Ausgabe stimmen nicht 
überein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lola schrieb:
> Der von Dir gezeigte Code und die von Dir gezeigte Ausgabe stimmen nicht
> überein.
Ich vermute, das ist das Problem...

CAnfänger schrieb:
> In der main() rufe ich das ganze wie folgt auf:
> uint8_t tx_buffer[5];
Das sieht nach einem amoklaufenden Pointer aus. Ist es genau dises 
Programm in dieser Reihenfolge und ohne Interrupts, das die Probleme 
macht? Was wird denn VOR dem tx_buffer deklariert?

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
Noch kein Account? Hier anmelden.