non riesco a capire perché il seguente codice stampa a video due stringhe differenti contenute nella stessa porzione di memoria. Cerco di semplificare il problema trascrivendo solo le parti interessanti del codice.
- Codice: Seleziona tutto
typedef struct{
uint32_t ui32MsgID;
uint32_t ui32MsgIDMask;
uint32_t ui32Flags;
uint32_t ui32MsgLen;
uint8_t* pui8MsgData;
}CANMsgObject_t;
uint64_t msgdata[MSG_LENGTH];
for(i=0x00;i<PACKETS_NO;i++){
msgdata[i]= 0x0101010101010101 * i; // fill the 8 bytes content with its vector index number
}
uint64_t* pui64_msg = msgdata;
sCANMsgObject[MsgVectorLastIndex].ui32MsgID = CANMSG_ID;
sCANMsgObject[MsgVectorLastIndex].ui32MsgIDMask = 0;
sCANMsgObject[MsgVectorLastIndex].ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sCANMsgObject[MsgVectorLastIndex].ui32MsgLen = CANByteOnLastPacket;
sCANMsgObject[MsgVectorLastIndex].pui8MsgData = (uint8_t*)&pui64_msg[MsgVectorLastIndex];
/* DEBUG CODE START */
printf("the content of memory address pointed by pui64_msg[%d] is: I64X\n",MsgVectorLastIndex,pui64_msg[MsgVectorLastIndex]);
printf("*sCANMsgObject[%d].pui8MsgData is: %I64X\n",i,*sCANMsgObject[MsgVectorLastIndex].pui8MsgData);
/* DEBUG CODE END */
Le ultime righe dovrebbero (IMHO) stampare lo stesso valore, ossia il contenuto dell'ultimo elemento del vettore msgdata che è pari a 0x1F1F1F1F1F1F1F1F. In realtà il valore restituito dalla seconda "printf" è diverso:
- Codice: Seleziona tutto
the content of memory address pointed by pui64_msg[31] is: 1F1F1F1F1F1F1F1F
*sCANMsgObject[31].pui8MsgData is: 1F1F1F1F0000001F
Credo di aver utilizzato in maniera non corretta il "type casting" o che il problema sia dovuto ad una diversa dimensione del puntatore. Tenete presente che la struttura dati nelle prime righe del codice è stata fornita con delle librerie quindi il puntatore "uint8_t* pui8MsgData;" non può essere modificato.
Che cosa è successo secondo voi? Come posso risolvere ?
P.S. il codice è stato compilato con MINGW32 (usa GCC) su PC con i7 e Windows 8.1 64bit.
In realtà è la porzione di FW per un evaluation kit della Texas Instuments che sto provando su PC preventivamente.
Grazie a tutti in anticipo,


Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
