1

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

1 回答 1

2

你需要改变:

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

Index将继续增加,你跳过位......

于 2013-11-14T20:14:51.113 回答