Mencoba koding sederhana di Visual Studio Code (VSC) untuk menjalankan STM32F4 Discovery board yang berisi mikrokontroler 32 bit. VSC merupakan program IDE (Integrated Development Environment) besutan Microsoft yang open source. IDE ini tersedia untuk Mac OS, Linux , dan Ms Windows. Sekilas VSC mirip-mirip dengan Atom dan Sublime Text yang banyak bermain dengan shortcut.
OS yang saya gunakan untuk menjalankan VSC kali ini adalah Linux Slackware64 14.2 . Sedang kompiler menggunakan ARM GNU C Compiler. Cross compiler digunakan karena kode akan dikompilasi untuk target arsitektur yang beda. PC yang dipakai punya arsitektur X86_64/I64, sedang target STM32F4 punya arsitektur ARM.
Intinya, menulis kode di Visual Studio Code, kompilasi dan build pakai ARM GCC, dan deploy ke target seukuran telapak tangan.
Solusi sederhana ala kadarnya tanpa IDE adalah menulis kode di teks editor biasa, terus tinggal menjalankanmake
di terminal. Programmake
akan memanggil file makefile
yang berisi instruksi compiler dan parameternya.
Sekarang saatnya mencoba di Visual Studio Code. Saya tetap ingin menggunakan konfigurasi makefile
sehingga tidak perlu mengubah banyak seting di IDE (Integrated Development Environment) ini. Kebanyakan IDE jarang dibuat untuk urusan dengan sistem embedded ataupun Mikrokontroler secara langsung.
Dari ribuan extension Visual Studio Code, saya hanya memakai 1 saja yaitu Native Debug. Sedang extension C/C++ yang direkomendasikan banyak saya non aktifkan fungsinya karena extension ini lebih cocok untuk rancang bangun aplikasi standar.
Pertama saat menekan Ctrl+Shift+B untuk masuk ke menu task, perlu di deskripsikan dulu scripts tasks.json
yang berisi opsi untuk kompilasi, build binary, dan persiapan debug.
Yang diperlukan adalah Make untuk kompilasi dan build file binary .elf , OpenOCD-Flash, untuk deploy atau memasukkan file eksekusi binary ke chip STM32F pada board STM32F4 Discovery. Dan terakhir OpenOCD-Debug untuk mengaktifkan proses debug pada chip openOCD. Chip programer ini sudah terintegrasi pada board Discovery.
Isi script tasks.json
:
Untuk proses Debug pada Visual Studio Code saya menggunakan launch.json
untuk mengaktifkan debug server arm-none-eabi-gdb. Isi script seperti di bawah :
Setelah scripts tasks.json
dan launch.json
selesai, saya mencoba untuk melakukan kompilasi program yang saya buat. Hasil akhir kompilasi/build adalah file .elf yang diperlukan untuk diprogramkan (istilahnya deploy/flashing) ke mikrokontroler STM32F4.
Jika tidak ada pesan kesalahan, proses kompilasi / build berhasil. Parameter kompilasi di atas seperti -mcpu=cortex-m4, -0g, -mthumb
dan lain sebagainya mesti diberikan secara manual. VSC tidak menyediakan fasilitas untuk ini. Jadi pembuat kode mesti membuat sendiri makefile
. File makefile
dapat dibuat juga lewat program generate makefile
. Dalam kasus ini saya menggunakan STM32CubeMX.
Untuk deploy file binary hasil kompilasi ke target, VSC tidak mempunyai fasilitas untuk hal ini juga. Diperlukan program openOCD. OpenOCD akan berkomunikasi dengan ST-LINK (pada board STM32F4 Discovery, ST-LINK sudah terintegrasi)yang secara langsung akan melakukan flashing memory pada chip mikrokontroler.
Gambar di bawah menunjukkan proses deploy / flashing.
Untuk Debug, digunakan arm-none-eabi-gdb
. GDB ini akan berkomunikasi dengan openOCD saat debug berlangsung.
Setelah opsi openOCD-Debug dieksekusi, maka tinggal menjalankan proses debug yang telah tersedia pada menu sidebar VSC.
Kesimpulan :
Setelah 2-3 hari mencoba Visual Studio Code (VSC), saya menyimpulkan VSC cukup fleksibel untuk menjalankan script untuk melakukan proses kompilasi/ build kode yang dibuat. Proses deploy / flashing target juga berjalan lancar lewat VSC. Tambahan bonus extension Native Debug mempermudah proses debug pada STM32F4 Discovery.
Extension C/C++ dari Microsoft bawaan VSC meskipun tersedia fasilitas untuk debug tetap tidak dapat digunakan karena debuger ini untuk arsitektur X86_64/I64.
Terakhir, apakah ada jalan yang lebih mudah untuk hal di atas ? IDE yang tinggal pakai saja tanpa repot urusan parameter dan lain sebagainya ? Ada 🙂 Anda dapat menggunakan IDE Atollic TrueStudio for STM32 yang berbasis Eclipse.
IDE yang “baik” kadang menyembunyikan proses di belakan layar 🙂 Pilihan kembali ke pengguna.
Peace !
Referensi :