C内存位乱七八糟

时间:2013-11-14 20:01:57

标签: c xilinx

我正在读取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  

1 个答案:

答案 0 :(得分:2)

您需要更改:

SendBuffer[Index] = v1[0];  
SendBuffer[Index+1] = v1[1];

Index将继续递增并跳过位...