Visual Studio Code – STM32F4 Discovery

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.

DSC_0088

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.

Vcs1

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.

Vcs3

Isi script tasks.json :

Vcs7

Untuk proses Debug pada Visual Studio Code saya menggunakan launch.json untuk mengaktifkan debug server arm-none-eabi-gdb. Isi script seperti di bawah :

Vcs6

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.

Vcs8

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.
Vcs2

Untuk Debug, digunakan arm-none-eabi-gdb. GDB ini akan berkomunikasi dengan openOCD saat debug berlangsung.

Vcs4

Setelah opsi openOCD-Debug dieksekusi, maka tinggal menjalankan proses debug yang telah tersedia pada menu sidebar VSC.

Vcs5

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 :

Visual Code Studio

STM32F4 Discovery

GNU Arm Embedded Toolchain

STM32CubeMX

OpenOCD

TrueStudio for STM32

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s