2016-10-28 3 views
2

Ich schreibe einen Kernel mit normaler Bandbreite in C++ für FPGA, der etwas aus dem Host-Speicher liest und es an einen anderen Ort im Host zurückschreibt. Ich verwende Strukturen, deren Elemente Adressen für Eingabe- und Ausgabepuffer sind. High-Level-Synthese-Tool gibt Fehler für die letzte Zeile im folgenden Code.Fehler: Ausdruck ist nicht zuweisbar C++ - Struktur

struct addr_struct { 
       ap_uint<64> address; 
       ap_uint<32> size; 
       ap_uint<16> type; 
       ap_uint<16> flags; 
     }; 
    struct addr_struct CA_INPUT; 
    struct addr_struct CA_OUTPUT; 
    din_mem = 0x00; 
    dout_mem = 0x00; 
    ap_uint<32> i; 
    ap_uint<512> temp; 
    ap_uint<512> *din_mem; 
    ap_uint<512> *dout_mem; 
    for(i=0; i<2048; i++){ 
    temp= (ap_uint<512> *)(din_mem + CA_INPUT.address + i*64); 
    (ap_uint<512> *)(dout_mem + CA_OUTPUT.address + i*64) = temp;} 

Antwort

3

Ich nehme an, Sie in dout_mem den Zeiger zugewiesen werden sollen, daher gibt es fehlt dereferenzieren vor (ap_uint<512> *) (beachten Sie den Stern am Anfang):

*(ap_uint<512> *)(dout_mem + CA_OUTPUT.address + i*64) = temp; 
+0

Anmerkung, ist dies eine strenge Aliasing Verletzung –

Verwandte Themen