Diferente de outras arquiteturas como x86, e semelhante à arquitetura Motorola(68K), ARM não utiliza
o conceito de portas de entrada e saída para se comunicar com periféricos ligados ao processador para trocar informações.
Essa troca é realizada por intermédio de registradores mapeados em memória.
Esse tipo de registrador possui um endereço fixo em memória para servir como um canal destinado
à leitura e/ou escrita de dados. Seu tamanho é de 32-bits e os dados transferidos têm os
tamanhos Byte, Halfword e Word.
Tab. 1: Registradores em memória
Endereço |
00 |
01 |
02 |
03 |
(...) |
0C |
0D |
0E |
0F |
FA000000 |
Registrador A |
(...) |
-- |
-- |
-- |
-- |
FB000000 |
Registrador B |
(...) |
-- |
-- |
-- |
-- |
Tanto o processador configurado como ARM ou Thumb, os registradores mapeados em memória têm
o mesmo tamanho de 32-Bits.
As instruções de Load e Store são responsáveis pela escrita e leitura desses registradores. Essas
instruções serão vistas em Load e Store.
Abaixo, alguns exemplos de dispositivos e outros processadores que podem utilizar registradores
mapeados em memória:
- Mouse
- Teclado
- Joystick
- Áudio
- Vídeo
Abaixo, exemplos reais de registradores mapeados em memória para troca de informações com chips de controle
de DMA. Timer e Vídeo.
Tab. 2: Exemplo de mapeamento
Endereço do Registrador |
Uso |
0x4000200 |
Interrupção |
0x4000100 |
Timer |
0x40000B0 |
DMA |
0x4000000 |
Word |
Vídeo |
O uso, definição de endereço e outras configurações sobre registradores mapeados em memória são de total
responsabilidade do hardware que utiliza um processador ARM como processador principal ou não.
As interrupções Data Abort e Prefetch Abort podem ser geradas durante o acesso aos dados em memória.
O assunto Interrupções será visto mais adiante.
A arquitetura ARM v4 não possui uma instrução como em outras arquiteturas. Caso seja necessário aguardar
o um tempo para comunicação com algum periférico, basta utilizar alguma instrução, como MOV, para simular
uma instrução NOP.