gdb
e devmem
estão analisando duas coisas diferentes. gdb
está a ver a localização 0x20000000
como mapeada no seu processo espaço de endereçamento , que é diferente de processo para processo (tem que ser, ou então arquivos de troca e tabelas de páginas seriam essencialmente inúteis.) devmem
está olhando para o arquivo /dev/mem
, que olha diretamente para o físico memória.
Por que o espaço de endereço do processo não expõe todos os locais de endereço físico a um processo? A principal razão é que seria uma enorme falha de segurança: você não quer que um processo aleatório seja capaz de ler e gravar dados da memória que eles não possuem (caso contrário, eles poderiam passar por cima da segurança). um href="https://github.com/pavel-a/devmemX/wiki/Using-devmem"> a página devmem
coloca , "Alguns endereços físicos são registros de hardware; escrever ou até mesmo lê-los pode causar o seu computador / dispositivo [para] falhar, derreter ou explodir. Você foi avisado! "