以下の関数は、UARTレジスタの内容を表示します。これはレジスタマップです。UARTはインデックスを登録します
forループ+=4
に上がる理由は、誰かが説明してもらえますか?
はあなたに各レジスタの開始アドレスに合う可能性が最も高い
#define UART0_BASE 0x21000
void print_uart(unsigned int base) {
int i;
int val;
unsigned int adr;
for (i=0; i< 0x18; i+=4) {
adr = base + i;
printf("Uart %s [0x%x] -> 0x%x\n",uart_reg[i>>2],adr,val);
}
}
これは壊れています。どんなプロセッサーですか? – unwind
外部周辺デバイスのアドレスは、「ワイヤ」の両側で同一である必要はありません。 あなたのUARTの 'A0..An'をあなたのCPU /メモリーコントローラの' A2..An + 2'に 'A0、A1'がグラウンドで固定された状態で添付することができます。 これは、UART側でまだ隣接している間に、CPU側で4つのアドレスの距離になります。 UARTには16ビットのレジスタがあるため、各アドレスはすでに2バイトを表しています。 – Gerhardh