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