Read-Only Section by Means of Attribute Progmem

Posted on
Read-Only Section by Means of Attribute Progmem


Pada saat saya memprogram arduino dengan kode program yang membutuhkan PROGMEM, muncul error seperi ini “Compilation error: variable ‘jF_Custom’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’“. Pada artikel ini, kita akan belajar cara menghilangkan error Read-Only Section by Means of Attribute Progmem.

Penyebabnya

Untuk kode program yang membuat error tersebut adalah seperti ini:

uint8_t jF_Custom[] PROGMEM = {
	0,		// 0
	0,		// 1
	0,		// 2
	0,		// 3
	0,		// 4
	0,		// 5
	0,		// 6
}

Pesan kesalahan yang Anda alami menyarankan bahwa untuk menempatkan variabel jF_Custom ke dalam sebuah bagian memori yang hanya bisa dibaca menggunakan atribut __attribute__((progmem)), variabel tersebut harus dideklarasikan sebagai const.

Di dalam bahasa pemrograman C dan C++, const digunakan untuk mendefinisikan konstanta, yaitu variabel yang nilainya tidak dapat diubah setelah diinisialisasi. Ketika Anda mendeklarasikan sebuah array sebagai const, itu memberi tahu kompiler bahwa array tersebut tidak akan dimodifikasi selama eksekusi program, memungkinkan kompiler untuk mengoptimalkan penggunaan memori, terutama saat berurusan dengan memori yang hanya bisa dibaca (seperti PROGMEM pada platform Arduino).

Cara Perbaiki

Untuk mengatasi kesalahan tersebut, Anda perlu mendeklarasikan jF_Custom sebagai array const. Berikut adalah contohnya:

const uint8_t jF_Custom[] PROGMEM = {
	0,		// 0
	0,		// 1
	0,		// 2
	0,		// 3
	0,		// 4
	0,		// 5
	0,		// 6
}

Dengan menambahkan const, Anda memberi tahu kompiler bahwa jF_Custom adalah data yang hanya bisa dibaca dan dapat ditempatkan di dalam bagian memori yang hanya bisa dibaca seperti PROGMEM. Hal ini penting, terutama dalam sistem tertanam di mana PROGMEM sering digunakan untuk menyimpan data di dalam memori program (Flash) dari mikrokontroler.