Apakah program yang sudah diupload pada Arduino bisa diedit dan diupload ulang?

Arduino IDE dengan program Blink

Apakah program yang sudah diupload pada Arduino bisa diedit dan diupload ulang?

Program yang sudah diupload ke Arduino tidak dapat diedit lagi. Tepatnya: bisa diambil kalau Arduinonya belum dikunci, kodenya sudah tidak dalam bentuk awal. Kode dapat diedit, namun sulit sekali karena dalam bahasa assembly.

Arduino UNO R3
Arduino UNO R3

Program sketch Arduino menggunakan bahasa C++, dalam bentuk format teks program. Filenya menggunakan ekstensi *.INO. Ketika akan diupload ke Arduino, program tersebut diubah dulu oleh compiler dan linker menjadi file *.HEX . File *.HEX ini berisi kode-kode mesin yang akan diterjemahkan oleh prosesor di Arduino menjadi instruksi yang akan dikerjakan. Kode bahasa C++ tidak ada di dalam file HEX tersebut, sehingga kita tidak dapat lagi mengedit progam yang sudah diupload ke Arduino.

Arduino IDE dengan program Blink
Arduino IDE dengan program Blink

Berikut ini adalah source code untuk membuat LED berkedip, sumbernya dari contoh di Arduino IDE (File -> Examples -> 01.Basics -> Blink.

Penjelasan tentang software tersebut dapat juga dibaca di artikel “Arduino Tutorial Blink“.

Pada potongan kode berikut ini , komentar pada kode dihilangkan sehingga hanya source code pentingnya saja yang ditampilkan.

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH);level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
 

Software itu dicompile, menghasilkan binary dalam format HEX dengan nama “Blink.ino.hex”.

File “Blink.ino.hex” ini yang kemudian dimasukkan ke dalam prosesor di Arduino UNO, yaitu ATmega328. Format HEX ini adalah format teks ASCII , sedangkan untuk melihat wujud data ini dalam bentuk binary, mesti menggunakan software avr-objcopy, yang biasanya di Windows ada di “C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy”.

File HEX ini diubah dengan avr-objcopy menjadi format binary, dengan perintah sebagai berikut:

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -I ihex Blink.ino.hex -O binary blink.bin

Isi file dilihat dengan utility HxD (), hasilnya sebagai berikut:

Kode biner program di Arduino
Kode biner program di Arduino

Dari kode biner tersebut nampak sudah tidak ada lagi teks source code yang aslinya. Sehingga teks asli source code tidak dapat lagi diedit berdasarkan program yang sudah diupload ke Arduino UNO.

Untuk melihat kerja dari program binary tersebut dapat menggunakan fitur disassembly, namun sangat sulit dibaca dibandingkan dengan source code aslinya.

Kode biner tersebut dapat dibaca dari prosesor ATmega328, namun syaratnya adalah fuse bit untuk membaca FLASH memory pada ATmega328 belum dikunci.

Kode program tersebut dapat diubah ke dalam bahasa assembly, dengan perintah berikut ini:

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objdump" –j .sec1 –d –m avr5 Blink.ino.hex > blink.asm

File blink.asm berisi kode dalam bahasa assembly, namun membacanya cukup sulit. Contoh kodenya dapat dilihat di tautan berikut ini: blink.asm

 

Referensi

 

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.