top of page

Apa itu Memory Map

Dalam processor ARM, memory terpetakan menjadi beberapa bagian yang masing masing bagian memory tersebut memiliki alamat yang bersifat fixed. Total rentang alamat memory tersebut berkisar 4GB

Memory Map
Memory Map - Masing masing area memori memiliki rentang alamatnya yang unik

Non-Memory Map

Non-memory map artinya register atau peripheral yang tidak mempunyai alamat memori yang unik dan bukan bagian dari memory map.


Contohnya Register pada processor, untuk mengakses register ini kita tidak bisa menggunakan C pointer melainkan menggunakan inline assembly code yang disisipkan ke dalam kode C kita.


Memory Map

Memory map adalah Pemetaan area memori ke dalam rentang alamat tertentu yang telah di tentukan.


Misalnya rentang alamat memori untuk area Code ditetapkan dari alamat 0x0000_0000 sampai 0x1FFF_FFFF (lihat gambar), artinya produsen mikrokontroller yang menggunakan desain ARM harus menyambungkan memori ke dalam rentang alamat ini.

Kode Memori bisa berupa Flash, EEPROM, atau memori apapun untuk menyimpan kode.


Area memori (memory region) seperti Code, SRAM, Peripheral, dsb masing-masing memiliki rentang alamat memori yang unik satu sama lain. Masing-masing alamat yang sudah di tetapkan ARM akan berlaku di seluruh processor ARM walaupun berbeda vendor sekalipun


Mengapa harus dipetakan? Apa untungnya? Memory map memudahkan programmer untuk secara langsung mengakses area/lokasi memori atau peripheral tertentu menggunakan C pointer, karena alamat memory-nya sudah di tertulis di awal.


Demo - Mengakses register yang memory-mapped

Memory mapped register artinya, register tersebut mempunyai alamat memory yang unik. Dengan menggunakan alamat tersebut, kita dapat mengakses register tersebut dan melakukan operasi read/write.


Demo Coming soon...


Demo - Mengakses peripheral yang memory-mapped


Untuk menggunakan GPIOA, kita harus mendapatkan alamat peripheralnya yakni 0x4002_0000. Dari alamat tersebut kita bisa melakukan operasi read/write ke GPIO Register


Demo Coming soon...


Memory Region

Seperti pada gambar diatas, Total 4GB alamat memory tersebut terbagi menjadi beberapa area memori


Code Region

  • Rentang alamat : 0x0000_0000 - 0x1FFF_FFFF (512 MB)

  • Digunakan untuk menuliskan kode/program

  • Secara default, digunakan sebagai tempat dimana vector table berada

SRAM Region

  • Rentang alamat : 0x2000_0000 - 0x3FFF_FFFF (512MB)

  • Digunakan untuk SRAM

  • 1MB pertama bit perta SRAM bisa digunakan untuk fitur bit-banding

  • Area ini bisa juga digunakan untuk mengeksekusi kode/program

Peripherals Region

  • Rentang alamat : 0x4000_0000 - 0x5FFF_FFFF (512MB)

  • Digunakan untuk peripherals, seperti GPIO, Timer, I2C, SPI dan sebagainya

  • 1MB pertama bisa digunakan untuk bit-banding

  • Merupakan area eXecute Never, artinya tidak boleh melakukan eksekusi kode/program di area ini

Eksternal RAM

  • Rentang alamat : 0x6000_0000 - 0x9FFF_FFFF (1GB)

  • Digunakan untuk on-chip atau off-chip memory

  • Bisa melakukan eksekusi kode/r

Private Peripheral Bus Region

  • Rentang alamat : 0xA000_0000 - 0xDFFF_FFFF (512MB)

  • Merupakan area eXecute Never

  • Processor Peripheral seperti NVIC, Systick, dan lainya berada di area ini.


Selanjutnya apa?

Setelah tahu apa itu memory map, kita akan bahas apa itu Memory endianness

Related Posts

See All

ARM Cortex-M Processor

Cortex-M processor adalah salah satu anggota dari keluarga ARM processor yang dinamai “Cortex”. Cortex-M ditujukan untuk aplikasi

bottom of page