• Tidak ada hasil yang ditemukan

BAB 10 PERAKITAN ARM DENGAN ALAT PENGEMBANG KEIL

10.1 Pendahuluan

Produsen prosesor mempublikasikan dokumentasi yang berisi informasi tentang prosesor mereka, seperti daftar register, fungsi setiap register, ukuran bus data, ukuran bus alamat, dan daftar instruksi yang dapat dieksekusi. Setiap CPU memiliki set instruksi yang diketahui yang dapat digunakan programmer untuk menulis program bahasa assembly. Set instruksi khusus untuk setiap jenis prosesor. Misalnya, prosesor Pentium mengimplementasikan set instruksi yang berbeda dari prosesor ARM. Program yang ditulis menggunakan set instruksi prosesor dikatakan ditulis dalam bahasa rakitan. Fungsi assembler adalah mengubah bahasa assembly menjadi kode mesin (biner) yang dapat dieksekusi oleh CPU.

Ketika assembler berjalan pada satu prosesor tetapi dapat merakit instruksi untuk prosesor yang berbeda dengan set instruksi yang berbeda itu disebut cross-assembler.

Simulator prosesor adalah alat pengembangan utama, karena memungkinkan lingkungan pengujian yang dapat dikontrol dalam pengaturan seperti workstation Windows atau Linux.

Mereka juga dapat memfasilitasi transfer atau download program ke prosesor target. Alat pengembangan berikut adalah beberapa yang mendukung prosesor ARM:

1. Alat Mikrokontroler ARM Keil (www.keil.com) 2. Meja Kerja Tertanam IAR (www.iar.com) 3. Perakit ARM GNU (www.gnu.org)

10.2 ALAT PENGEMBANGAN KEIL UNTUK PERAKITAN ARM

Untuk contoh dalam buku ini, Keil Vision® IDE (lingkungan pengembangan terintegrasi) dari Keil's Microcontroller Development Kit (MDK) versi 5 digunakan. Versi gratis dari perangkat lunak ini dapat merakit dan mensimulasikan eksekusi instruksi ARMv7 asalkan ukurannya di bawah 32 K. Unduhan tersedia dari situs web Keil: http://www.keil.com.

Saat pertama kali diinstal, dialog berjudul Pemasang Paket mungkin terbuka setelah penginstal selesai. Utilitas ini membantu pengguna dalam mengunduh dan menginstal lingkungan. Vision untuk mengaktifkan simulasi papan dan perangkat yang berbeda. Namun, secara default, beberapa template perangkat telah diinstal sebelumnya dengan Vision (Gambar. 10.1).

Gambar 10.1 Membuat proyek baru di Keil 𝜇Vision® IDE v5.22

• Untuk memulai, buka Vision dan pilih Project → Proyek 𝜇Visi Baru.. ..

• Beri nama proyek Anda dan pilih lokasi untuk menyimpannya.

Setelah menyimpan, sebuah dialog akan terbuka dan meminta Anda untuk Memilih Perangkat untuk Target "Target 1" Tergantung pada apakah Anda telah menginstal paket tambahan apa pun dari Penginstal Paket, layar ini mungkin terlihat berbeda.

Beberapa prosesor ARM disertakan dengan instalasi default. Untuk contoh dalam buku ini, ARM Cortex M3 (ARMCM3) dipilih.

• Pilih ARM Cortex M3 → ARMCM3 dan tekan OK. (Gambar. 10.2)

Gambar 10.2 Memilih prosesor ARM Cortex M3

Untuk setiap prosesor, Vision memiliki beberapa perpustakaan yang tersedia.

Beberapa sangat penting, seperti konfigurasi start-up, sementara yang lain adalah ekstensi opsional untuk mengaktifkan fungsionalitas yang lebih luas, seperti driver Ethernet dan antarmuka Grafik. Untuk menjalankan program perakitan ARMv7 sederhana, hanya komponen awal yang diperlukan.

• Pilih CMSIS → INTI dan tekan OK. (Gambar. 10.3)

secara default ada di sisi kiri jendela, di bawah bilah Menu. Selanjutnya, proyek perlu dikonfigurasi untuk menggunakan simulator untuk menjalankan program.

Gambar 10.3 Pustaka CORE untuk menjalankan prosesor ARMCM3

Gambar 10.4 Mengubah konfigurasi proyek

• Klik kanan pada folder Target 1 dan pilih Opsi untuk Target “Target 1”... (Gambar. 10.4)

• Klik pada tab Debug dan pilih Gunakan Simulator. (Gambar. 10.5)

Gambar 10.5 Mengatur proyek untuk menggunakan simulator

• Klik Target dan pilih Use MicroLIB seperti yang ditunjukkan pada Gambar 10.6

Gambar 10.6 Opsi untuk Target1 (Gunakan LIB Mikro)

• Tambahkan item baru ke proyek dengan klik kanan folder Grup Sumber 1 di panel proyek seperti Gambar 10.7

Gambar. 10.7 Menambahkan item ke proyek

• Buat file sumber assembler baru (file Asm atau .s), beri nama, lalu simpan seperti yang ditunjukkan pada Gambar 10.8

Program perakitan mengikuti struktur tertentu dan memiliki apa yang disebut arahan.

Ini akan dijelaskan nanti dalam bab ini, tetapi mereka menginstruksikan assembler tentang bagaimana menyusun sebagian besar program akhir. Sama seperti banyak program bahasa tingkat tinggi yang berjalan di dalam "fungsi" atau "metode" utama, contoh berikut menggunakan rutinitas Vectors dan Reset_Handler (yang dipanggil secara default oleh prosesor yang kami pilih).

dalam R3 seperti yang ditunjukkan pada Gambar 10.9.

Gambar. 10.8 Buat file sumber perakitan

Gambar 10.9 Kode sumber untuk Contoh 10.1

Merakit Program

Setelah kode sumber siap untuk dirakit, Anda mungkin meminta assembler untuk menerjemahkan dan menjalankan program dalam simulator. Langkah pertama adalah membuat program perakitan dengan meminta assembler menerjemahkan kode sumber Anda. Ada pintasan keyboard dan tombol menu untuk melakukannya.

Kedua opsi yang tercantum di bawah ini tersedia pada bilah menu seperti yang ditunjukkan pada Gambar 10.10.

• F7 akan membangun semua file target (mis., Semua file sumber di Target 1).

• Ctrl + F7 akan membangun file yang sedang aktif (mis., File sedang dimodifikasi).

Gambar 10.10 Tombol yang digunakan untuk merakit program

Gambar 10.11 Membangun Output untuk perakitan yang sukses

Panel Build Output di bagian bawah jendela akan menampilkan kesalahan, peringatan, atau jika proyek berhasil dibangun. Pembangunan yang berhasil akan terlihat seperti Gambar 10.11, sedangkan kegagalan akan memberikan deskripsi kesalahan untuk membantu pemrogram menemukan di mana kode tersebut salah.

Sekarang setelah Anda mengkompilasi sepotong kode, Anda ingin men-debug kode untuk pengujian. Untuk memulai debugger, klik Debug Start/Stop Debug Session dari menu bar seperti yang ditunjukkan pada Gambar 10.12. (μVision mungkin meminta peringatan bahwa itu sedang berjalan dalam mode evaluasi – jika demikian, cukup tekan OK.)

Gambar 10.12 Memulai/menghentikan debugger

Secara default, register akan ditampilkan di panel Registers di sisi kiri. Jika Anda mengklik "+" di sebelah baris xPSR, Anda dapat melihat bit bendera saat ini – ini adalah Program Status Register (PSR).

Panel Disassembly akan menampilkan beberapa data saat ini, seperti instruksi kode mesin dan catatan baris apa dalam kode sumber yang sedang dieksekusi, dan di alamat memori apa.

Gambar 10.13 Lokasi tombol Menu Debug

Untuk menjalankan program, Anda dapat menggunakan tombol/penekanan tombol berikut (Gambar. 10.13):

Reset – Reset CPU dan restart program.

Jalankan (F5) – Jalankan seluruh program hingga breakpoint berikutnya (jika disetel).

Berhenti – Menghentikan kode yang sedang dijalankan.

Langkah (F11) – Jalankan baris instruksi saat ini.

Step Over (F10) – Menjalankan satu langkah di atas suatu fungsi.

Step Out (Ctrl + F11) – Selesaikan fungsi saat ini dan berhenti.

Jalankan ke Garis Kursor (Ctrl + F10) – Jalankan program hingga mencapai garis kursor saat ini.

Contoh 10.2 Menjalankan kode dari Gambar 10.8.

• Pertama, ketik ulang kode persis seperti yang ditunjukkan pada Gambar 10.8.

• Rakit kode dengan menyimpan file (Ctrl + S) lalu tekan F7 untuk menerjemahkan file bahasa assembly ke kode mesin. Panel Build Output akan terlihat seperti Gambar 10.11.

• Jalankan simulator/debugger dengan menekan Ctrl + F5 atau di bawah menu Debug.

Tekan OK jika prompt EVALUATION MODE muncul.

• Tekan F11 atau untuk "melangkah" satu baris dan jalankan instruksi, dan perhatikan perubahan di setiap panel. Saat debugging, simulator akan menyorot data yang sedang berjalan atau diubah. Lihat Gambar 10.14 untuk contoh yang akan menyerupai layar Anda setelah "langkah" pertama. Ini akan mengeksekusi bit kode pertama kita, MOV R1, #Q, dan menyimpan nilai Q (6) ke dalam register R1.

– Debugger 𝜇Vision akan menyorot instruksi berikutnya dalam kode sumber (MOV R2, #P), register yang dimodifikasi (R1, R15), dan menunjukkan di panel Disassembly kode mesin dan alamat memori instruksi dengan label aslinya kode perakitan.

• Lanjutkan ke “langkah” melalui kode, tekan F11 atau tombol langkah setiap kali sampai program telah dijalankan. Perhatikan perubahan di setiap register di setiap langkah.

Cara lain untuk mengamati fungsionalitas program Anda adalah dengan melihat memori saat ini. Semua instruksi yang diterjemahkan dari kode sumber dan data yang telah ditentukan disimpan dalam memori. Panel Disassembly akan menampilkan instruksi alamat heksadesimal 32-bit di memori di sebelah setiap instruksi, misalnya.

Gambar 10.14 Debugger secara otomatis menyoroti informasi yang paling relevan

sudut kanan bawah (Gambar. 10.15). Hingga empat jendela tersedia, dan secara default Memori 1 harus diaktifkan. Jika tidak, mungkin diaktifkan di bawah bilah Menu dengan mengklik View Memory Windows Memory 1. (Jendela yang diaktifkan akan memiliki ikon ini di sebelahnya: ).

Untuk mencari memori, masukkan alamat heksadesimal dari bagian memori yang ingin Anda lihat. Karena merupakan prosesor byte-addressable, setiap alamat menyimpan satu byte informasi, dan ditampilkan sebagai dua digit heksadesimal.

Gambar. 10.15 Lokasi jendela Memori dan tab panel

Gambar. 10.16 Template program untuk prosesor ARMCM3 di Keil Vision v5

Template Program

Gambar 10.16 berisi contoh template kode untuk menulis program untuk ARM Cortex M3. Kode sumber yang terletak di antara label Reset_Handler dan STOP dijalankan saat program dijalankan. (Semua label tidak boleh memiliki spasi putih seperti spasi atau tab di sebelah kiri – label harus berupa teks pertama di kolom, dan karakter pertama di baris.) 10.3 ATURAN PEMROGRAMAN

Aturan CASE Instruksi, simbol, dan label dapat ditulis dalam huruf besar atau kecil tetapi tidak dapat digabungkan (misalnya, MOV atau mov benar, tetapi MoV atau moV tidak).

Komentar Programmer dapat menulis komentar setelah titik koma (;)

10.4 REPRESENTASI DATA DAN MEMORI

Prosesor ARM mendefinisikan kata sebagai 4 byte dan setengah kata sebagai 2 byte.

Data dapat direpresentasikan dalam bentuk bilangan heksadesimal, desimal, dan biner (Gambar. 10.17). Data dan kode disimpan dalam memori. Gambar 10.18 menunjukkan diagram blok memori. Alamat mendefinisikan lokasi data dalam memori. Setiap lokasi memori prosesor ARM menampung satu byte. Dalam bahasa rakitan, label – seperti yang ditunjukkan pada Gambar 10.14 – mewakili alamat dalam memori untuk data tersebut. Ketika kode diterjemahkan, assembler secara otomatis memutuskan alamat mana yang akan digunakan sebagai pengganti kode memberi label dan menggantinya jika sesuai dalam program.

Basis Awalan Contoh

Desimal (10) - 17

Heksadesimal (16) 0x 0x11

Biner (2) 2 2_00010001

Gambar 10.17 Format representasi numeric

Gambar 10.18 Blok diagram memori jika List disimpan pada alamat 0x400

Gambar 10.19 Big Endian vs Little Endian

bekerja dengan kata dan setengah kata. Prosesor dapat berfungsi dengan pemesanan Big Endian atau Little Endian. Gambar 10.19 menunjukkan angka 0x2000000F yang disimpan pada 0x400 di kedua sistem.

• ARM Cortex M3 yang digunakan untuk contoh ini adalah prosesor Little Endian.

Dalam dokumen Dr. Ir. Agus Wibowo, M.Kom, M.Si, MM - Dasar (Halaman 173-183)