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.