32 ビット プロセッサで 16 ビット メモリ アドレスから読み込んでいます。何らかの理由で、期待される出力が得られません。アドレスの内容は 32 バイトのワードです。
ABCDEFABCDEFABCDABCDEFABCDEFABCD
私が使用しているコードはこれです:
u8 SendBuffer[128];
u8 ReceiveBuffer[128];
uint32_t InRAM1;
int btidx=0;
int tsize=32;
for (Index = 0; Index <tsize; Index++) {
int sbit=btidx*sizeof(uint32_t);
InRAM1 = XIo_In32(RAM1_ADDR+sbit);
u8 *v1=(u8 *)&XIo_In32(RAM1_ADDR+sbit);
SendBuffer[Index] = v1[Index];
SendBuffer[Index+1] = v1[Index+1];
ReceiveBuffer[Index] = 0;
ReceiveBuffer[Index+1] = 0;
xil_printf("Data: %c%c %c%c \n\r",
(InRAM1 &0xff), (InRAM1 >>8)&0xff,
SendBuffer[Index], SendBuffer[Index+1]);
btidx++;
Index++;
}
実行後の結果は次のとおりです。これを解決しようと頭を悩ませています。これで何が間違っていますか?助けてくれてありがとう。
Data: AB AB
Data: CD
Data: EF AB
Data: AB
Data: CD AB
Data: EF
Data: AB CD
Data: CD
Data: AB CD
Data: CD
Data: EF CD
Data: AB
Data: CD
Data: EF
Data: AB
Data: CD