La fonction ci-dessous imprime le contenu d'un registre UART. Ceci est la carte du registre.comprendre uart répertorie l'indexation
Quelqu'un pourrait-il expliquer pourquoi, la boucle va dans +=4
?
Merci
#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);
}
}
Cela semble cassé. Pour quel processeur est-ce? – unwind
Les adresses d'un périphérique externe n'ont pas besoin d'être identiques des deux côtés du "fil". Vous pouvez attacher 'A0..An' de votre UART à' A2..An + 2' de votre CPU/contrôleur de mémoire avec 'A0, A1' étant fixé à la masse. Cela se traduirait par une distance de 4 adresses côté CPU alors qu'elles sont toujours adjacentes côté UART. Comme votre UART a des registres de 16 bits, chaque adresse représente déjà 2 octets. – Gerhardh