我正在从 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
最佳答案
你需要改变:
SendBuffer[Index] = v1[0];
SendBuffer[Index+1] = v1[1];
Index
将不断递增,您会跳过位...
关于C内存有点乱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987237/