Penggunaan Eclipse Neon sebagai IDE untuk mikrokontroler STM32

neon01

Tulisan ini masih dalam rangka babat alas. Menurut cerita zaman dahulu, awal dari pembangunan sebuah desa adalah dengan menebang pepohonan di sebuah hutan. Baru kemudian desa dibangun bertahap. Filosofi yang sama yang saya anut dalam tinkering mikrokontroler dengan arsitektur ARM Cortex seperti Tiva C maupun keluarga STM32. Tahap pertama adalah mencoba memastikan sistem perangkat keras berfungsi baik, setidaknya untuk fungsi dasar yang relatif mudah untuk diperiksa. Seiring dengan itu saya mengatur perangkat lunak yang diperlukan untuk kelak bekerja dengan perangkat keras yang ada. Termasuk dalam tahap ini adalah kegiatan mencoba-coba software untuk bisa melakukan evaluasi singkat (awal) mengenai kesesuaiannya untuk dipergunakan.

Jika pada beberapa post sebelumnya saya mengungkapkan penggunaan IDE SW4STM32, maka kali ini saya mencoba pendekatan yang lain. Sekalipun masih menggunakan dasar Eclipse IDE tetapi kali ini instalasi plugin untuk bekerja dengan ARM dilakukan secara manual. Yang saya pergunakan adalah Eclipse Neon, yang instalasi yang sama juga saya pakai untuk pemrograman MSP430 dan Atmel AVR. Jadi satu instalasi IDE untuk tiga jenis arsitektur mikrokontroler.

neon02Gambar 1. [Klik pada gambar untuk memperbesar tampilan]

Situs utama sumber program dan panduan instalasi untuk pengaturan ini berasal dari: http://gnuarmeclipse.github.io/.

neon04Gambar 2. [Klik pada gambar untuk memperbesar tampilan]

neon03Gambar 3. [Klik pada gambar untuk memperbesar tampilan]

Ikuti panduan instalasi di link ini (berlaku juga untuk Eclipse Neon): http://gnuarmeclipse.github.io/plugins/install/ . Panduan singkat di bawah ini terutama sekali mengacu pada tutorial di halaman ini >> http://gnuarmeclipse.github.io/tutorials/blinky-arm/ . Perbedaannya adalah bahwa pada panduan ini saya menyesuaikannya untuk sistem microcontroller board STM32F103C8T6.

Sebelum melanjutkan tahapan proses pembuatan program C++ untuk ARM Cortex yang baru ada beberapa paket yang perlu diinstalasi terlebih dahulu. Tutorial yang lengkap mengenai hal ini dapat dibaca di: http://gnuarmeclipse.github.io/plugins/packs-manager/.  Gambar 4a memperlihatkan Packs perpective.

neon20Gambar 4a. [Klik gambar untuk memperbesar].

Setelah paket-paket yang diperlukan terinstal dengan baik seperti di Gambar 4a, maka pengguna dapat mulai membuat program contoh led berkedip seperti di Gambar 4b.

neon05Gambar 4b. Pembuatan programC++, pilih File >> Project.

neon06Gambar 5.

neon07Gambar 6.

neon08Gambar 7.

neon09Gambar 8.

neon10Gambar 9.

Pada Gambar 9, pada Toolchain path saya mengisinya dengan nama direktori gccarmbin. Ini adalah penamaan direktori bebas yang saya lakukan, tidak menjadi masalah. Yang terpenting adalah ini di dalam direktori tersebut. Compiler dan bagian dari toolchain lainnya dapat diperoleh dari: https://launchpad.net/gcc-arm-embedded. File yang terkompres dari situs bisa diekstrak kedalam sebuah direktori. Sebagai contoh saya meletakkannya di dalam direktori gccarmbin.

neon11Gambar 10. Pilih Window>>Preferences>>OpenOCD.

Jalankan terlebih dahulu perintah Build untuk menghasilkan file *.elf. Kemudian pilih  tanda panah kecil ke bawah di sampirg gambar bug (kutu) pada toolbar, kemudian pilih “Debug Configurations” seperti pada Gambar 11.

neon12Gambar 11.

neon13Gambar 12. Isikan letak file .elf melalui {1}.

neon15Gambar 13. [Klik gambar untuk memperbesar].

Perhatikan nomor port untuk GDB dan Telnet. Untuk isian “Config options”, mengacu pada letak file konfigurasi OpenOCD untuk menggunaan ST-LINK. Sengaja saya taruh di direktori lain agar lebih sulit untuk terhapus. Penamaan file bebas dan isinya sebagai berikut:

# This is an STM32F103C8sunu001 board with a single STM32F103C8Tx chip.
# Generated by System Workbench for STM32

source [find interface/stlink-v2.cfg]
set WORKAREASIZE 0x5000
transport select "hla_swd"
source [find target/stm32f1x.cfg]

# use hardware reset, connect under reset
#reset_config srst_only srst_nogate
#reset_config none
reset_config srst_nogate

neon16Gambar 14.

neon17Gambar 15.

neon18Gambar 16.  Pengawalan proses debugging berhasil.
[Klik gambar untuk memperbesar tampilan.]

Di Gambar 16 dapat dilihat proses pengawalan debugging berhasil dilakukan. Untuk konfigurasi ini saya tidak perlu mempergunakan OpenOCD di terminal eksternal. Setelah proses debugging dengan melakukan klik pada icon bug di toolbar OpenOCD akan dipanggil dan diaktifkan secara otomatis (Gambar 16).

neon19Gambar 17. Debug perspective [klik gambar untuk memperbesar tampilan].

neon21Gambar 18. Untuk debugging dan programming menggunakan papan μC STM32F103C8T6 dengan indikator led PC13, ganti pin number.

Untuk memanfaatkan peripherals registers view pengguna dapat membaca dan mengikuti petunjuk pada: http://gnuarmeclipse.github.io/debug/peripheral-registers/.

Sedangkan untuk cara menghapus isi program dan melakukan pemrograman ulang mikrokontroler dengan menggunakan fasilitas external tools sama dengan pengaturan untuk SW4STM32, keduanya berbasis Eclipse, dan telah diungkapkan di sini.

Kalau diperhatikan, cara menulis program di sini agak berbebeda dengan cara memanfaatkan HAL yang dimanfaatkan lewat STM32CubeMX. Wawasan singkat dan tutorial mengenai ini dapat dipelajari di sini: Build STM32 applications with Eclipse, GCC and STM32Cube.

 

Konfigurasi external tools configurations pada SW4STM32 untuk st-flash

Catatan ini dalah bagian terakhir dari rangkaian catatan pengenalan dan tutorial mengenai penggunaan STM32CubeMX dan SW4STM32 untuk pemrograman mikrokontroler STM32. Sebagai contoh, dalam rangkaian tulisan ini dipergunakan papan sistem mikrokotroler STM32F103C8T6. Di bagian pertama dari rangkaian tutorial adalah pengenalan terhadap program STM32CubeMX. Bagian kedua memaparkan bagaimana melakukan konfigurasi pada STM32CubeMX sehingga hasilnya sesuai untuk keperluan debugging. Kemudian pada bagian ketiga diungkapkan cara instalasi dan inisiasi program SW4STM32. Bagian keempat memaparkan tahap-tahap yang perlu dilakukan untuk proses debugging.

Di bagian akhir ini akan saya coba ungkapkan catatan mengenai cara melakukan konfigurasi sehingga pengguna dalam melakukan flashing mikrokontroler dapat melakukannya “dari dalam” SW4STM32.

znap01Gambar 1.

znap02Gambar 2.

Pada Gambar 1 dan Gambar 2 terdapat pilihan berupa st-flash write dan st-flash erase. Keduanya harus dibuat sendiri oleh pengguna melalui fasilitas External Tools Configurations, seperti pada Gambar 2. Pilih New pada bagian yang saya tandai dengan kotak berwarna merah. Di sampingnya terdapat beberapa pilihan yang mungkin suatu saat akan diperlukan, silakan diperiksa sendiri. Pada {1} adalah tab Main dan didalamnya diisikan parameter yang sesuai. Misalnya pada {2}, isikan path ke arah letak program st-flash di dalam sistem komputer penguna. Lalu pada {3} arahkan target yang sesuai, biasanya yang dipakai untuk memprogram mikrokontroler adalah yang berasal dari ./Release, yang merupakan versi final. Tetapi dapat juga berasal dari hasil kompilasi pada direktori Debug seperti contoh saya pada Gambar 3.

znap03Gambar 3.

znap04Gambar 4.

znap06Gambar 5.

znap07Gambar 6.

Setelah tahap ini, pengguna dapat memilih mode operasi seperti terlihat pada Gambar 1 atau Gambar 2. Pengguna bisa memilih untuk menghapus atau melakukan pemrograman ke mikrokontroler anggota keluarga STM32. Jika operasi erase atau pemrograman ulang gagal dilakukan, bisa dicoba dengan melakukan erase dan reset pada posisi jumper seperti pada Gambar 7.

wp-1472127176031.jpegGambar 7.

Mengembalikan jumper ke posisi semula untuk mode operasi (running) dan pemrograman normal seperti Gambar 8.

wp-1472023019498.jpegGambar 8.