我正在读取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
答案 0 :(得分:2)
您需要更改:
SendBuffer[Index] = v1[0];
SendBuffer[Index+1] = v1[1];
Index
将继续递增并跳过位...