Visual Studio Code dan PlatformIO

Beberapa waktu lalu saya sempat membuat catatan pengenalan tentang PlatformIO. Saat itu PlatformIO dikombinasikan dengan text editor Atom. Untuk kali ini saya akan memperkenalkan kombinasi antara PlatformIO dengan Visual Studio Code. Berbeda dengan Sublime Text, VSCode benar-benar gratis, bebas pakai seperti Atom. VS Code tersedia untuk sistem Windows, GNU/Linux maupun Mac.

PlatformIO memungkinkan pengguna untuk melakukan pemrograman terhadap mikrokontroler Atmel AVR. Bahkan lebih dari itu, ada banyak sistem lain selain AVR yang semakin mudah untuk diprogram dengan bantuan PlatformIO. Berikut saya kutip dari PlatformIO IDE for VSCode:

The next generation integrated development environment for IoT

PlatformIO is an open source ecosystem for IoT development.
Cross-platform build system and unified debugger. Remote unit testing and firmware updates.

Atmel AVR & SAM, Espressif 8266 & 32, Freescale Kinetis, Intel ARC32, Lattice iCE40,
Maxim Integrated MAX32, Microchip PIC32, Nordic nRF51, Nordic nRF52, NXP LPC, Silicon Labs EFM32, ST STM32,
TI MSP430 & Tiva, Teensy, Arduino, ARM mbed, libOpenCM3, ESP8266, etc.

Features

  • Cross-platform code builder without external dependencies to a system software:
    • 400+ embedded boards
    • 20+ development platforms
    • 10+ frameworks
  • PIO Remote™
  • PIO Unified Debugger
  • Unit Testing
  • C/C++ Intelligent Code Completion
  • C/C++ Smart Code Linter for rapid professional development
  • Library Manager for the hundreds popular libraries
  • Multi-projects workflow with multiple panes
  • Themes support with dark and light colors
  • Serial Port Monitor
  • Built-in Terminal with PlatformIO Core tool (pio, platformio)

Proses instalasi PlatformIO untuk VSCode cukup mudah, ikuti saja urutan langkah pada Gambar 1.

../_images/platformio-ide-vscode-pkg-installer.pngGambar 1. Instalasi [sumber]

Gambar 2.

Untuk memulai suatu proyek dengan PlatformIO, pengguna perlu membuka suatu direktori/folder dalam file system agar semua file proyek bisa disimpan. Pengguna bisa membuat folder baru dari aplikasi file browser tersendiri di luar VSCode, atau membuka folder yang sudah ada lalu mencari tempat untuk membuat folder yang baru dari dalam VSCode dengan menggunakan Open Folder (Gambar 2).

Gambar 3.

Setelah pengguna memilih sebuah folder untuk proyek (entah folder yang sudah ada atau yang baru dibuat), selanjutnya pengguna bisa membuat file atau folder baru. Caranya  seperti tampak pada Gambar 3, pilih icon yang sesuai (silakan hoover mouse di atas icon untuk mengetahui).

Gambar 4.

Awal pembuatan proyek yang akan menempatkan file-file di dalam folder dimulai dengan menekan Crtl+Shift+P, lalu memilih menu yang sesuai seperti pada Gambar 4. Yang lebih mudah adalah dengan menggunakan shortcut keys Ctrl+Alt+I.

Gambar 5.

Di Gambar 5 terlihat bahwa pengguna bisa memilih mikrokontroler atau sistem papan yang sesuai setelah PlatformIO menyelesaikan proses inisialisasi. Di bar bagian bawah akan muncul tulisan Selecting a board – PlatformIO Project initialization….

Gambar 6.

Pengaturan tentang bagaimana PlatformIO membantu pengguna di atur di dalam file platformio.ini seperti pada Gambar 6. Pengguna dapat memilih untuk menggunakan framework seperti bootloader dari Arduino atau mengakses langsung mikrokontroler. Dengan cara itu pengguna/pemrogram dapat memilih dari banyak mikrokontroler tanpa perlu/harus menggunakan framework.

Pertama pengguna memilih platform yang ingin dipergunakan, misalnya untuk mikrokontroler Atmel AVR di PlatformIO platform dinamai sebagai atmelavr. Berikutnya adalah framework, sebagai contoh adalah Arduino. Jangan khawatir, pengguna tidak perlu mempergunakan (mengaktifkan)  framework jika memang tidak diinginkan. Ini hanyalah cara PlatformIO untuk mengorganisasi prosesor (mikrokontroler) dan sistem. Setelah platform dan framework berikutnya pengguna memilih board. Contoh adalah boards dari Adafruit, Arduino, EnviroDIY adan SparkFun, yang untuk masing-masing papan (board) diberi nama pengenal yang berbeda. Jika ingin membaca keterangan mengenai boards berdasar pada platform atmelavr, silakan baca halaman di link ini. Sedangkan jika ingin membaca boards yang diurutkan dalam framework yang sama (sebagai contoh Arduino) maka bisa dibaca di link ini.

Jika pengguna ingin memprogram mikrokontroler ATmega328P, maka dapat memilih board mana saja yang menggunakan mikrokontroler tersebut. Contohnya boards dari Adafruit: metro, protrinket5; dari Arduino: diecimilaatmega328, miniatmega328, nanoatmega328, pro8MHzatmega328, uno; dari SparkFun: uview. Kesemuanya bisa dipilih karena mempergunakan mikrokontroler yang sama sesuai keperluan (ATmega328P). Jika akan menggunakan pemrograman murni dengan GCC C (cara pure AVR), opsi framework di dalam file platformio.ini dapat dihapus atau dijadikan sebagai komentar.

Jadi seperti pada Gambar 5, pengguna yang ingin memprogram ATmega32 dapat memilih board mightycore32,  dari MCUdude. MightyCore adalah core atau bootloader untuk framework Arduino yang ditujukan untuk dipergunakan pada mikrokontroler seperti ATmega16, ATmega32 dan ATmega8535. Seperti terlihat pada Gambar 6, framework Arduino bisa tidak dipakai (opsinya dijadikan komentar) sehingga pengguna langsung memprogram μC dalam bahasa C (dengan compiler GCC).

Gambar 7.

Setelah selesai tahap inisialisasi, folder scr masih kosong. Pengguna perlu membuat setidaknya satu file sumber (main.c) dengan cara memilih menu New File seperti pada Gambar 7.

Gambar 8.

Pada Gambar 8 diperlihatkan jika pengguna melakukan klik untuk membuka file main.c maka kode bisa ditulis di dalam workspace.

Gambar  9.

Perhatikan bahwa proses build berhasil dilakukan walaupun frekuensi mikrokontroler dalam program pada Gambar 9 diatur sebesar 40 MHz untuk Atmega32 yang memiliki frekuensi CPU maksimum sebesar 16 MHz. Karena itu kecuali kesalahan syntax, pemrogram masih perlu sangat berhati-hati dan mengandalkan diri sendiri. Modifikasi kode untuk contoh dalam file main.c sebagai berikut.

//#ifndef F_CPU
#define F_CPU 1000000UL
//#endif

#include <avr/io.h>
#include <util/delay.h>

int main()
{
    DDRB = 0xFF;

    while(1)
    {
        // PORTB = 0x00;
        PORTB ^= (1<<PB5);
        _delay_ms(500);
    }
}

Gambar  10. Modifikasi untuk mikrokontroler ATmega16

Gambar 10 menampilkan proyek yang baru untuk ATmega16 dengan dasar kode yang sama dengan proyek untuk ATmega32 (Gambar 8). Penyesuaian dilakukan untuk frekuensi kerja mikrokontroler sehingga pengaturan untuk penundaan (delay) akan tepat.

Gambar  11. Hasil upload dengan avrdude dan usbasp

PlatformIO di VS Code juga mendukung proses upload kode ke mikrokontroler target, dengan menggunakan avrdude seperti terlihat pada Gambar 11. Uji coba dengan μC Atmel AVR ATmega16 berhasil dengan baik (Gambar 12).

Gambar  12. Uji upload dengan Atmega16 + LED

Gambar  13. Upload dengan Eclipse IDE sebagai pembanding

Gambar  14.

Proses uploading dengan avrdude tidak selalu berhasil dengan lancar. Kadang-kadang terjadi kegagalan dengan beberapa pesan kesalahan. Hal ini terutama terjadi karena masalah komunikasi dengan target. Gambar 13 memperlihatkan proses uploading menggunakan avrdude yang diatur dari konfigurasi internal di Eclipse. Cara ini bisa dipakai sebagai pembanding untuk menentukan sumber kesalahan. Gambar 14 memperlihatkan cara yang lebih ringan daripada cara pada Gambar 13. Di GNU/Linux seperti Ubuntu atau Mint pengguna cukup membuka terminal dan mengetik perintah sebagai berikut:

avrdude -p m16 -P usb -c usbasp -B 10

Perintah ini akan menghasilkan keluaran seperti pada Gambar 14. Salah satu sumber kegagalan upload program adalah karena kecepatan pengiriman data. Solusinya adalah dengan mencoba mengatur kecepatan dengan opsi -B. Semakin besar nilainya, maka akan semakin rendah frekuensinya. Di Gambar 14 terlihat untuk -B 10, frekuensi SCK diatur menjadi 93750 Hz. Pengguna bisa mencoba-coba dari nilai -B yang besar kemudian secara bertahap dikurangi.

Opsi lain adalah -v, yaitu verbose yang berfungsi memberikan keterangan lebih banyak saat perintah avrdude dieksekusi.

avrdude -p m16 -P usb -c usbasp -B 10 -v

Opsi -e berguna untuk memberi perintah penghapusan chip. Ini berguna karena beberapa kali terjadi kesalahan akibat avrdude gagal melakukan pemeriksaan ulang kode program yang sudah diunggah ke mikrokontroler. Di dalam file platformio.ini opsi -e saya cantumkan untuk lebih menjamin keberhasilan proses upload kode.

avrdude -p m16 -P usb -c usbasp -B 10 -e

Perintah upload kode sebenarnya juga bisa dilakukan dengan menggunakan CLI pada terminal. Cukup gunakan opsi -U dan nama program.

avrdude -p m16 -P usb -c usbasp -B 10 -U flash:w:firmware.hex

Untuk lebih mudahnya, lakukan pemanggilan dari dalam direktori/folder yang sama dengan letak file *.hex.

Gambar  15.

Gambar  16. Build dan upload untuk Atmel ATmega328P

Gambar 16 menunjukkan PlatformIO dapat dipakai untuk memprogram mikrokontroler Atmel ATmega328P tanpa framework.  Kode program tidak jauh berbeda, hanya seperti modifikasi yang terdahulu, perlu menyesuaikan setting frekuensi kerja dari CPU (mikrokontroler). Isi file platformio.ini untuk memprogram mikrokontroler ATmega328P tanpa bootloader Arduino:

[env:metro]
platform = atmelavr
board = metro
; framework = arduino
upload_protocol = usbasp
upload_flags = -e -P usb -B 10

Gambar  17. Pemrograman mikrokontroler ATmega328P dengan memanfaatkan papan Arduino Uno

Gambar 17 menampilkan cara memprogram ATmega328P dengan menggunakan papan Arduino UNO. Perlu diingat, hanya karena menggunakan papan Arduino Uno tidak berarti pemrograman dilakukan dengan menggunakan Arduino sebagaimana normalnya (menggunakan port USB). Perhatikan bahwa di dalam file konfigurasi platformio.ini, baris framework = arduino dijadikan komentar sehingga tidak akan ikut dieksekusi. Artinya framework berupa bootloader Arduino tidak akan dipakai dalam pemrograman ini. Bahkan isi (termasuk bootloader Arduino) dari mikrokontroler ATmega328P telah dihapus semuanya sebelum diisi program yang baru.

Gambar  18. Upload untuk ATtiny2313A

Gambar  19. Papan latih dengan mikrokontroler ATtiny2313A

Gambar 18 dan Gambar 19 menunjukkan pemanfaatan PlatformIO untuk melakukan pemrograman pada mikrokontroler Atmel AVR ATtiny2313A. Cara yang sama berlaku untuk banyak mikrokontroler yang lain. Pengguna bahkan bisa langsung memprogram mikrokontroler tanpa mempergunakan framework/bootloader seperti dari Arduino, Adafruit atau SparkFun. Khusus untuk mikrokontroler keluarga Atmel AVR keterangan lebih rinci mengenai pemrogramannya dengan PlatformIO bisa dibaca di halaman ini. Untuk keluarga STM32 bisa dibaca di halaman ST STM32, demikian seterusnya untuk masing-masing keluarga prosesor.

http://foros.giltesa.com/otros/arduino/fc/docs/pinout/uno.jpgGambar  20. Arduino Uno pinout [sumber]

Dalam Gambar 20 sebagai contoh terlihat bahwa sesungguhnya papan Arduino Uno R3 terdiri dari mikrokontroler ATmega328P sebagai komponen utama. Gambar pinout seperti ini memudahkan pengguna untuk mencari padanan saat hendak langsung mengakses pin/port tanpa bantuan framework/bootloader. Misalnya, jika biasanya LED indikator di Arduino Uno diakses melalui pin 13 maka dapat dilihat bahwa sesungguhnya pin itu adalah pin PB5 dari μC ATmega328P.

Konfigurasi seperti ini dapat dicari untuk sistem yang lain sehingga akses langsung ke pin/port bisa dilakukan tanpa menggunakan bootloader/framework.

 

VS Code untuk Arduino

Melanjutkan catatan tentang Visual Studio Code, dalam artikel ini saya akan menunjukkan bagaimana VSCode dapat dipakai untuk mengerjakan program untuk papan Arduino (termasuk Arduino compatible). Ada beberapa metode untuk memprogram Arduino melalui vscode, kali ini saya akan menunjukkan metode ekstensi dari Microsoft (yang juga membuat VS Code).

Gambar 1. Arduino extension

Keterangan lebih lanjut, termasuk cara instalasi terdapat di halaman ini.

Prerequisites

Arduino IDE is required. Please install it from here.

  • The supported Arduino IDE versions are 1.6.x and later.
  • The Windows Store’s version of Arduino IDE is not supported because of the sandbox environment of Windows app.

Installation

Open VS Code and press F1 or Ctrl + Shift + P to open command palette, select Install Extension and type vscode-arduino.

Or launch VS Code Quick Open (Ctrl + P), paste the following command, and press enter.

ext install vscode-arduino

Commands

This extension provides several commands in the Command Palette (F1 or Ctrl+Shift+P) for working with *.ino files:

  • Arduino: Board Manager: Manage packages for boards. You can add 3rd party Arduino board by configuring Additional Board Manager URLs in board manager.
  • Arduino: Change Baud Rate: Change the baud rate of selected serial port.
  • Arduino: Change Board Type: Change board type or platform.
  • Arduino: Close Serial Monitor: Stop serial monitor and release the serial port.
  • Arduino: Examples: Show example list.
  • Arduino: Initialize:Scaffold a VS Code project with an Arduino sketch.
  • Arduino: Library Manager: Explore and manage libraries.
  • Arduino: Open Serial Monitor: Open serial monitor in the intergrated output window.
  • Arduino: Select Serial Port: Change the current serial port.
  • Arduino: Send Text to Serial Port: Send a line of text via the current serial port.
  • Arduino: Upload: Build sketch and upload to Arduino board.
  • Arduino: Verify: Build sketch.

Isi dari file settings.json untuk sistem saya sebagai berikut:

// Place your settings in this file to
// overwrite the default settings
{
    "arduino.path": "/home/sunu/arduino-1.8.3/",
    "arduino.additionalUrls": "" ,
    "arduino.autoUpdateIndexFiles": false,
    "arduino.logLevel": "info"
}

Gambar 2. Screenshot file settings.json

Gambar 3. Mencoba contoh kode dengan menekan Ctrl+Shift+P

Gambar 4. Memilih contoh kode program Arduino sederhana

Gambar 5. Kombinasi Ctrl+Shift+P memunculkan pilihan papan Arduino yang akan dipergunakan

Gambar 6. Konfigurasi port

Setelah memilih tipe papan Arduino yang akan dipergunakan (Gambar 5), berikutnya perlu diatur port yang akan dipakai untuk melakukan upload program ke papan Arduino (Gambar 6). Konfigurasi akan disimpan di file bernama arduino.json. Setelah file dibuka, langkah berikutnya adalah dengan memilih port yang sesuai. Di sistem GNU/Linux biasanya bukan bernama COM1 tetapi ttyUSB0 (kadang-kadang ttyUSB1) sebagaimana terlihat pada Gambar 6.

Gambar 7. Verify/Upload

Untuk memeriksa kode (verify) atau melakukan (upload) tekan kombinasi Ctrl+Shift+P, lalu pilih dari dropdown menu. Untuk verify bisa juga langsung dengan menggunakan shortcut Ctrl+Alt+R.

Gambar 8. Hasil verifikasi kode program

Gambar 9. Laporan pengunggahan (uploading)

Pengaturan Visual Studio Code untuk GCC C

Pada catatan sebelumnya, sudah diungkapkan tentang Visual Studio Code (vscode atau vs code) sebagai code editor/text editor yang secara legal gratis dan handal. Juga dipaparkan bagaimana penggunaannya untuk Node.js (sekadara sebagai contoh).  Artikel ini akan dipakai untuk menunjukkan bagaimana vscode bisa dipakai untuk melakukan pemrograman dalam bahasa C (menggunakan GCC untuk PC bukan untuk Atmel AVR). Sistem yang dipakai adalah sistem yang juga benar-benar bebas pakai alias gratis, GNU/Linux. Meskipun tentu saja prinsip yang sama dapat dipakai untuk sistem dengan OS Microsoft Windows–tentu saja karena vscode adalah produk dari Microsoft.

Pertama-tama kita perlu memastikan extension utama untuk pemgrograman bahasa C sudah ter-install dengan baik.

Gambar 1. C/C++ for Visual Studio Code (cpptools)

Keterangan lebih lanjut untuk C/C++ for Visual Studio Code (cpptools) beserta cara untuk melakukan instalasi dapat dibaca pada halaman ini. Sebagai keterangan singkat berikut saya kutipkan sebagian informasi mengenai fungsinya sebagai berikut:

This preview release of the extension adds language support for C/C++ to Visual Studio Code including:

  • Language service
    • Code Formatting (clang-format)
    • Auto-Completion (experimental)
    • Symbol Searching
    • Go to Definition/Declaration
    • Peek Definition/Declaration
    • Class/Method Navigation
    • Signature Help
    • Quick Info (Hover)
    • Error Squiggles
  • Debugging
    • Support for debugging Windows (PDB, Mingw/Cygwin), Linux and OS X applications
    • Line by line code stepping
    • Breakpoints (including conditional and function breakpoints)
    • Variable inspection
    • Multi-threaded debugging support
    • Core dump debugging support
    • Executing GDB or MI commands directly when using ‘C++ (GDB/LLDB)’ debugging environment
    • For help configuring the debugger see Configuring launch.json for C/C++ debugging
      on our GitHub page.

You can find more detailed information about C/C++ support on Visual Studio Code at our documentation page.

Sebagai code editor, VScode ini memang menarik antara lain karena menurut pembuatnya dikembangkan berdasarkan pengalaman dari program-program serupa terdahulu, terutama Sublime Text. Tidak aneh kemudia kalau bisa ditemui bahwa filosofi dan bahkan kombinasi kunci untuk perintahnya memiliki kesamaan. Keterangan lebih lanjut tentang fasilitas yang diperoleh dari cpptools dapat dibaca di sini (C/C++ extension for Visual Studio Code). Beberapa gambar yang paling menarik saya kutip ulang di sini. Klik pada gambar untuk memperbesar tampilan.

Symbol@Gambar 2. Navigate to a particular symbol within the same source file (Ctrl + P, @Symbol Name)

peekGambar 3. Peek definition (Alt + F12)

Demikian Gambar 2 dan Gambar 3 saya kutipkan sebagai teaser fasilitas vscode yang menarik untuk dipelajari. Berikutnya untuk dapat mempergunakan vscode dengan baik sebagai editor kode untuk program dalam bahasa C, kita bisa mengikuti tutorial yang sudah disusun secara sistematis berikut ini: C/C++ for VS Code (Preview).

Supaya singkat beberapa bagian akan saya sajikan ulang di sini.

To install the Microsoft C/C++ extension:

  • Open VS Code.
  • Click the Extensions View icon on the Sidebar.
  • Search for cpptools.
  • Click Install, then click Reload.
  • Open a folder that contains your C/C++ code.

Jika langkah ini berhasil maka seperti terlihat pada Gambar 1, di bagian kiri (extensions) akan nampak keterangan ekstensi yang terinstal. Berikutnya untuk dapat menggunakan fasilitas code completion lakukan sebagai berikut:

To enable code completion and navigation, you will need to generate a c_cpp_properties.json file:

  • Hover over any green squiggle in a source file (e.g. a #include statement).
  • Click the lightbulb that appears underneath the mouse cursor.
  • Click Add include path to settings.

This will generate a c_cpp_properties.json file that allows you to add additional include paths to properly enable code navigation and auto-completion.

 Note: You can also generate or edit a c_cpp_properties.json file with the C/Cpp: Edit Configurations command from the Command Palette (Ctrl+Shift+P). 

Berdasarkan pengalaman saya, cara yang paling mudah justru adalah cara pada baris terakhir di atas.

Selanjutnya adalah tahapan pengaturan agar kita bisa melakukan build untuk dapat menghasilkan program yang bisa dieksekusi.

If you want to build your application from VS Code, you will need to generate a tasks.json file:

  • Open the Command Palette (Ctrl+Shift+P).
  • Select the Tasks: Configure Task Runner command and you will see a list of task runner templates.
  • Select Others to create a task which runs an external command.
  • Change the command to the command line expression you use to build your application (e.g. g++ -g main.cpp).
  • Add any required args (e.g. -g to build for debugging).
  • You can now build your application with (Ctrl+Shift+B)

You should now see a tasks.json file in your workspace .vscode folder that looks something like:

For more information on tasks, see Integrate with External Tools via Tasks.

Isi dari file tasks.json pada sistem saya adalah sebagai berikut (perhatikan gcc dan main.c):

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "gcc",
    "isShellCommand": true,
    "showOutput": "always",
    "args": ["-g", "main.c"]
}

To enable debugging, you will need to generate a launch.json file:

  • Navigate to the Debug view by clicking the Debug icon in the Sidebar.
  • In the Debug view, click the Configure icon.
  • Select C++ (GDB/LLDB) (to use GDB or LLDB) or C++ (Windows) (to use the Visual Studio Windows Debugger) from the Select Environment dropdown. This creates a launch.json file for editing with two configurations:
    • C++ Launch defines the properties for launching your application when you start debugging.
    • C++ Attach defines the properties for attaching to a process that’s already running.
  • Update the program property with the path to the program you are debugging.
  • If you want your application to build when you start debugging, add a preLaunchTask property with the name of the build task you created in tasks.json (“g++” in the example above).

To learn more, see Configuring launch.json for C/C++ debugging.

Di sistem saya file launch.json berisi sebagai berikut:

{
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

Jika berhasil baik maka hasilnya akan seperti pada Gambar 4 berikut.

Gambar 4.

Pada Gambar 4, terlihat pada folder yang saya beri nama VSC001 terdapat beberapa file yang diperlukan untuk pemrograman. File kode utama adalah main.c, sedangkan semua file json dihasilkan dari proses yang telah disebutkan sebelumnya. Untuk melakukan build apkilasi berikan perintah dengan kombinasi kunci Ctrl+Shift+B, proses ini akan menghasilkan file a.out.

Gambar 5. Proses debug

Gambar 6. Pilihan perintah dan shortcuts untuk proses debug

Gambar 5 menunjukkan jika konfigurasi benar dan proses debug dapat dimulai. Gambar 6 menunjukkan perintah apa saja yang bisa dipakai dalam proses debugging dan kombinasi kunci untuk shortcut keys.

Gambar 7. Menjalankan program dengan memanggil file keluaran proses build

Sebagaimana terlihat pada Gambar 7, program hasil kompilasi dijalankan dengan cara manual yaitu memanggil file hasil dari proses build di terminal yang telah disediakan. Tampaknya dalam mengerjakan sebuah proyek, vscode berdasarkan pada direktori/folder. Ini mirip dengan Eclipse yang menggunakan direktori workspace.

Bagian kedua ini akan mengungkapkan pilihan cara yang lebih mudah. Pengguna tidak perlu membuat atau mengatur beberapa file konfigurasi seperti pada bagian pertama (yang menggunakan ekstensi dari Microsoft). Cara kedua ini alkan menggunakan ekstensi Code Runner oleh Jun Han.

Run code snippet or code file for multiple languages: C, C++, Java, JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, C# Script, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, D, and custom command

Gambar 8.

Gambar 9.

Setelah ekstensi terinstal baik seperti pada Gambar 8 dan kode program sudah diketik dengan benar maka pengguna bisa memilih cara menglakukan eksekusi seperti terlihat pada Gambar 9. Pilihan pertama dengan melakukan klik kanan di bidang kerja lalu memilih Run Code (atau dengan shortcut key Alt+Ctrl+N). Pilihan kedua adalah dengan melakukan klik pada icon play yang berwarna hijau di kanan atas bidang kerja.

Gambar 10.

Hasil eksekusi tampak seperti pada Gambar 10. Kita hanya perlu menyimpan file dengan ekstensi .c saja, tidak perlu membuatkan direktori/folder khusus seperti pada cara jika menggunakan cpptools.

Metode ketiga atau yang terakhir adalah dengan menggunakan ekstensi C Compiler oleh brapifra.

Compile and execute C files from VSCode
 
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
ext install c-compiler
 

Gambar 11.

Gambar 12. Pilihan proses kompilasi

Gambar 13. Hasil proses kompilasi

Jika menggunakan C Compiler ini pengguna bisa memilih salah satu dari pilihan kompilasi yang sesuai seperti terlihat pada Gambar 12. Jika memilih Compile and Execute C File, maka hasilnya akan tampil seperti pada Gambar 13.

 

Sublime Text GCC C

[intense_panel shadow=”5″ border=”1px solid #a8a5a5″ margin_top=”1″]

Pada beberapa post sebelumnya telah saya perkenalkan Sublime Text, dengan contoh untuk pemrograman Arduino dan Atmel AVR, bahasa Python, maupun bahasa Lua. Untuk kali ini saya hanya akan pasting catatan mengenai konfigurasi Sublime Text (baik Sublime Text 2 maupun Sublime Text 3) untuk kode program dalam bahasa C. Tepatnya dengan GCC non AVR (misalnya untuk PC berbasis Intel).

Yang saya temukan konfigurasi untuk ST 2 agak berbeda dengan konfigurasi ST 3 (yang sampai saat saya tulis ini masih dalam tahap beta).

[/intense_panel]
[su_panel border=”3px solid #00FF33″ radius=”10″]

Pertama dimulai dari konfigurasi untuk Sublime Text 2 (yang kadang-kadang disebut sebagai ST2 atau ST 2). Terlebih dahulu pengguna perlu membuat Build System yang baru. Caranya adalah dengan memilih Tools > Build System > New Build System… . Lihat Gambar 1 berikut.

Gambar 1.

Dalam Gambar 1 terlihat file  yang disediakan masih dalam bentuk dasar dan harus diisi oleh pengguna sesuai keperluan. Untuk pengaturan kali ini hasilnya nanti akan seperti pada Gambar 2. File itu bisa disimpan dengan diberi nama yang berarti, misalnya saja saya pilih kata gcc sehingga nama file  yang tadinya untitled.sublime-build menjadi gcc.sublime-build.

Gambar 2. Teks yang perlu diisi untuk konfigurasi gcc

Teks yang perlu diisikan di file seperti pada Gambar 2 dapat disalin sebagai berikut:

{
  "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
  "working_dir": "${file_path}",
  "selector": "source.c",

  "variants":
  [
    {
      "name": "Run",
      "cmd": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
    }
  ]
}

Setelah konfigurasi disimpan seperti pada Gambar 2, kemudian akan tersedia pilihan untuk Build System gcc seperti terlihat pada Gambar 1.

Gambar 3. Hasil uji coba

Kode untuk uji coba pada Gambar 3 adalah sebagai berikut:

#include <stdio.h>
#include <stdint.h>
// #include <cstdint.h>

// int i;
uint8_t i;

int main(void)
{
	/* code */
	printf("Uji untuk GCC C\n");
	for(i=0; i<10; i++)
	{
		
		printf("%d ",i);


	}
	printf("\n");

	return (0);
}

Untuk melakukan Build, tekan tahan kombinasi kunci Ctrl+B.  Untuk melakukan Run, tekan tahan kombinasi kunci Crtl+Shift+B.  

Sumber rujukan:

[/su_panel]
[su_panel border=”3px solid #BA004A” radius=”10″]

Berikutnya adalah konfigurasi untuk Sublime Text 3 (yang kdang disingkat ST3 atau atau ST 3). Urutan langkahnya hampir persis sama dengan pengaturan untuk ST2, letak perbedaan yang saya temukan ada pada isi konfigurasinya. Pertama pilih Tools > Build System > New Build System…, seperti pada Gambar 1 atau bisa juga dengan cara manual yaitu membuat file  baru di:

~/.config/sublime-text-3/Packages/User/gcc.sublime-build.

Perlu  diingat folder  .config dalam kondisi hidden  tersembunyi, gunakan Ctrl+H untuk menampilkannya. Penamaan file  masih tetap sama seperti pada ST 2, file itu bisa disimpan dengan diberi nama yang berarti, misalnya saja saya pilih kata gcc sehingga nama file  yang tadinya untitled.sublime-build menjadi gcc.sublime-build. Isi file konfigurasi sebagai berikut:

{
"shell_cmd" : "gcc $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
      "shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name}"
    }
  ]
}

Cara penggunaan, build dan run sama seperti pada ST2.

Sumber rujukan:

Sebagai catatan akhir, dalam post  ini dapat terlihat bahwa untuk cukup banyak hal, informasi yang kita perlukan sebenarnya sudah tersedia di Internet. Tinggal bagaimana kita mencarinya, kita pelajari, kita pahami dan kita perbandingkan. Terutama sekali untuk hal-hal yang berkenaan engineering dan technology, ada banyak hal yang sudah pernah dipikirkan, dilakukan/dicoba oleh orang-orang di tempat/negara yang lebih maju. Pada cukup banyak hal, yang sering kurang adalah ketersediaan waktu atau bahkan sekadar kemauan kita untuk berusaha menemukannya.

[/su_panel]

 

Visual Studio Code Node.js

Beberapa IDE (Integrated Development Environment) dan text editor telah ditampilkan di situs ini. Misalnya Netbeans, Eclipse, Codelite, Atom (dengan PlatformIO) dan Sublime Text. Menurut saya untuk cukup banyak keperluan Sublime Text masih yang paling membantu untuk menyusun sebuah program. Sublime Text bisa dipakai secara bebas, meskipun jika kita tidak membeli lisensinya sesekali akan muncul pemberitahuan seperti pada Gambar 1.

Gambar 1.

Alternatif yang cukup menarik adalah text editor Atom, terlebih lagi dengan adanya fasilitas kemampuan untuk menggunakan PlatformIO di editor itu. Selain Atom, yang tidak kalah menarik adalah Visual Studio Code yang dikeluarkan oleh perusahaan besar, Microsoft. Tetapi jangan terkecoh, karena dari namanya orang bisa salah mengiranya sebagai Visual Studio IDE, padahal keduanya adalah program/aplikasi yang berbeda.

[su_panel background=”#faf6fb” color=”#010101″ border=”2px solid #cccccc” shadow=”1px 2px 1px #eeeeee”]

Beberapa keterangan dapat dikutip dari FAQ, antara lain:

What is the difference between VS Code and VS Community?

Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs. For more details about the goals of VS Code, see Why VS Code.

Which OS’s are supported?

VS Code runs on Mac, Linux, and Windows. See Requirements for the supported versions. You can find more platform specific details under SETUP.

Is VS Code free?

Yes, VS Code is a free, open source editor.

[/su_panel]

Gambar 2. Sekilas mengenai peruntukan masing-masing program [sumber]

Gambar 3. Visual Studio Code (vscode) juga tersedia untuk OS GNU/Linux

Pada Gambar 3 terlihat bagaimana VS Code tersedia untuk OS dengan sistem GNU/Linux seperti Fedora, Debian, Ubuntu, Mint secara gratis karena lisensiya adalah open source. Pada gambar yang sama juga dapat dilihat bahwa vscode dapat dipergunakan untuk berbagai bahasa pemrograman.

Visual Studio Code dapat diunduh (download) di halaman ini.

Visual Studio Code sebenarnya tidak membutuhkan Node.js untuk dapat dipergunakan sebagai text editor atau code editor. Dalam artikel singkat ini Node.js hanya dipakai sebagai contoh saja, mirip dengan C/C++, Python atau Lua.

[su_panel background=”#faf6fb” color=”#010101″ border=”2px solid #cccccc” shadow=”1px 2px 1px #eeeeee”]

What is Node.js?

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world. [source]

As an asynchronous event driven JavaScript runtime, Node is designed to build scalable network applications. In the following “hello world” example, many connections can be handled concurrently. Upon each connection the callback is fired, but if there is no work to be done, Node will sleep. [source]

[/su_panel]

Untuk mulai mempergunakan Node.js, terlebih dahulu perlu mengunduh program atau sumber program di halaman ini.


Gambar 4. Halaman untuk mengunduh Node.js

Jika sekadar ingin mencoba, bisa langsung melakukan download versi yang sudah terkompilasi (binnaries). Tetapi untuk kepentingan jangka panjang sebaiknya mengunduh sumber kode (source code) untuk kemudian dikompilasi secara manual. Dengan catatan bahwa proses instalasi manual ini memakan waktu cukup lama, sekitar lebih dari 10 menit.

Gambar 5 dan Gambar 6 berikut akan menampilkan kemudahan-kemudahan yang bisa diberikan oleh vs code dalam proses penyusunan kode program JS untuk menggunakan Node.js.

JavaScript IntellisenseGambar 5. Fasilitas IntelliSense [sumber]

JavaScript Code NavigationGambar 6. Fasilitas pencarian [sumber]

Jika Node.js telah terinstal dengan baik di sistem maka berikutnya kita bisa mengikuti langkah uji coba sebagaimana dipandu dalam tutorial Node.js Tutorial in VS Code.

Gambar 7. Pengujian eksekusi kode dari terminal

Gambar 8. Hasil eksekusi kode JS untuk Node.js menggunakan Code Runner

Gambar 9. Hasil percobaan penggunaan fasilitas debug

Berikutnya jika tertarik lebih lanjut mencoba Node.js dengan bantuan Visual Studio Code maka silakan mengacu dan mengikuti tuntunan/panduan pada sejumlah link berikut:

Sublime Text Lua

 

[intense_panel shadow=”11″ border=”1px solid #696161″]

Sublime Text sebagai text editor dapat dipergunakan untuk untuk melakukan pemrograman dalam berbagai bahasa pemrograman. Pada tulisan yang lalu sudah coba saya tampilkan Sublime Text dengan contoh untuk melakukan pemrograman dalam bahasa C (termasuk dialect untuk Arduino), pada artikel berikutnya telah saya sampaikan secara singkat penggunaannya untuk mempermudah pemrograman dalam bahasa Python. Pada artikel ini saya coba sampaikan secara singkat penggunaan ST (Sublime Text) untuk pemrograman dalam bahasa Lua.

[/intense_panel] [su_panel border=”2px solid #CCFF00″ radius=”10″]

Ada beberapa sumber yang menarik untuk dibaca supaya bisa mengerti apakah Lua itu. Setelah saya seleksi beberapa yang paling menarik akan saya cantumkan dalam bentuk tautan (link). Tetapi mari mulai dengan mengutip salah satu sumber, yaitu situs utama Lua:

What is Lua?

Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode with a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping. lua.org >> about.html

Secara sederhana bahasa pemrograman Lua cenderung lebih dekat dengan pola penggunaan bahasa Python daripada bahasa C. Pengguna dapat langsung mencoba tiap baris kode dan memperhatikan hasil eksekusinya. Sebelum melanjutkan, Lua perlu diunduh (download) di link ini dan diinstal di sistem.

Lebih lanjut untuk mempelajari Lua, ada beberapa tutorial yang memudahkan untuk mengawali belajar memprogram dalam bahasa Lua. Saya urutkan sebagai berikut:

[/su_panel]
[su_panel border=”2px solid #A6C5FF” radius=”10″]

Setelah mengenal apakah bahasa Lua itu, maka langkah selanjutnya adalah bagaimana malakukan pengaturan agar Sublime Text dapat dipergunakan untuk mempermudah proses pengerjaan program dalam bahasa Lua.

Sebagaimana plugin atau paket lain (semisal untuk bahasa Python), instalasi paket-paket tambahan yang diperlukan untuk bahasa Lua ini akan lebih mudah dilakukan jika menggunakan Package Control.  Jika belum ter-install maka cara instalasi Package Control bisa dibaca dan diikuti pada link ini.

Gambar 1. Package Control telah terinstal dan siap untuk dipergunakan

Dua sumber informasi yang baik yang dapat dipakai untuk memandu instalasi paket untuk Lua adalah:

Berikut adalah paket-paket yang saya instal di Sublime Text untuk pemrograman dalam bahasa Lua:

LuaLove is a package for Sublime Text 2/3 with support for the Love2D API. It is based on SublimeLove, LuaSublime, and lua_snippet.

LuaExtended is a syntax definition and snippet package for Sublime Text 3.

Meskipun tertulis untuk ST 3, paket ini juga dapat berfungsi di ST 2.

Gambar 2. Contoh penggunaan LuaExtended [sumber]

Paket ini berfungsi untuk menyediakan interpreter internal sehingga pengguna dapat mencoba kode program secara interaktif. Sama seperti penggunaannya untuk bahasa Python , paket ini juga berfungsi baik untuk bahasa Lua.

Gambar 3. Penggunan REPL untuk Lua

[/su_panel]
[su_panel border=”2px solid #FF7F44″ radius=”10″]

Terakhir, kita dapat mencoba kode-kode contoh dari link pada bagian pertama artikel ini dengan Sublime Text yang telah konfigurasi sebagaimana pada bagian dua.

Gambar 4. Hasil uji Lua dengan menggunakan build (Ctrl+B)

[/su_panel]

Sublime Text Python

Sebagai text editor tentu saja Sublime Text bisa dipergunakan untuk mengerjakan berbagai program dalam banyak bahasa pemrograman. Jika pada artikel yang lalu sebagai contoh saya menunjukkan bagaimana ST (Sublime Text) bisa dipergunakan untuk program dalam bahasa C (juga dialek seperti kode program untuk papan Arduino), maka kali ini saya coba tunjukkan bagaimana ST dapat mempermudah pemrograman dalam bahasa Python.

Berbeda dengan sistem pemrogaraman dengan kompilasi seperti pada bahasa C/C++ atau Pascal, pada Python kode program “tidak dikompilasi”. Secara sederhana pemrograman di sistem Python menggunakan interpreter. Mengutip sumber rujukan FAQ pada dokumen di situs Python.org

What is Python?

Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on Windows 2000 and later.

To find out more, start with The Python Tutorial. The Beginner’s Guide to Python links to other introductory tutorials and resources for learning Python.https://docs.python.org/3.6/faq/general.html

[su_panel background=”#f7f9e8″ color=”#010101″ border=”2px solid #cccccc” radius=”1″]Jika tertarik untuk menelusuri lebih lanjut tentang diskusi seputar apakah Python merupakan bahasa yang interpreted atau compiled pembaca dapat mengakses di dua situs berikut:

  1. Is Python interpreted or compiled or both?  [stackoverflow]
  2. Is Python compiled or interpreted or both ? [quora] [/su_panel]


Gambar 1. Python di Sublime Text 2

 

  • SublimeRope

Plugin SublimeRope pada Sublime Text 2 berguna untuk membantu programmer agar dapat mendeteksi, menemukan dan mengusulkan rujukan ke suatu deklarasi. Baik pada file yang sama maupun di file yang berbeda. Contoh dapat dilihat pada Gambar 2.

Gambar 2. Contoh penggunaan SublimeRope

 

  • SublimeREPL

Salah satu kemudahan yang disediakan sedari awal pada sistem Python adalah cara pemrograman yang interaktif. Pemrogram dapat langsung melihat hasil dari perintah yang diberikannya melalui kode program. Agar kemudahan ini juga dapat dimanfaatkan di Sublime Text maka kita perlu menginstal plugin SublimeREPL.

Gambar 3. SublimeREPL dengan Python 2 sebagai default

 

Gambar 4. Penggunaan Python 3 sebagai pengganti Python 2 di SublimeREPL

 

  • SublimeLinter

SublimeLinter 3 berfungsi untuk memberikan keterangan tambahan apabila programmer melakukan kesalahan penulisan kode program. Lebih jauh mengenai linter:

A linter is a small program that checks code for stylistic or programming errors. Linters are available for most syntaxes, from Python to HTML.

SublimeLinter does not do the linting itself; it acts as a host for linting plugins. The linting plugins themselves usually do not perform linting either; they just act as a bridge between the code you type in Sublime Text and the actual linter.

Instalasi dapat dilakukan dengan menggunakan Package Control ataupun dengan cara manual, petunjuk lebih lanjut dapat dibaca di halaman ini.

Gambar 5. Pesan kesalahan berupa kesalahan identasi pada kode program

 

Sublime Text editor

Pada post sebelumnya, saya sudah coba memperkenalkan Atom text editor yang dilengkapi dengan PlatformIO. Maka untuk artikel ini saya mencoba untuk memperkenalkan text editor lain yang juga memiliki penggemar aktif, bahkan mungkin penggunanya lebih banyak dari Atom. Text editor yang akan saya perkenalkan (tentu bagi yang belum kenal) adalah Sublime Text. Sampai saat saya menulis ini terdapat dua versi, yaitu versi dua (lazim juga disingkat sebagai ST 2) dan versi tiga (ST 3).

Para programmer yang menyukai editor Sublime Text biasanya mengungkapkan beberapa alasan seperti banyaknya plugin yang memudahkan dan mempercepat kerja, program yang ringan dan cepat dalam proses loading, dan bebas untuk dipergunakan. Sebagaimana IDE (Integrated Development Environment) maupun text editor yang baik lainnya, ST memberikan fasilitas untuk pewarnaan yang berbeda untuk tiap kata kunci dalam berbagai bahasa pemrograman. Misalnya untuk C/C++, Python, atau JavaScript.

Gambar 1 Pewarnaan kata kunci untuk bahasa C (AVR GCC)

Selain fasilitas yang lazim ditemui di banyak editor seperti pada Gambar 1, ST juga memberikan kemudahan bagi programmer untuk mendapatkan plugin yang mempermudah pekerjaan mereka. Salah satu contoh adalah plugin Stino yang memungkinkan pengguna untuk mengerjakan program untuk sistem Arduino langsung dari ST (Sublime Text) tanpa perlu mempergunakan Arduino IDE. Kemudahan ini terutama sangat menarik pada beberapa tahun yang lalu karena saat itu Arduino IDE masih dalam bentuk yang lebih sederhana daripada versi yang sekarang. Namun demikian menurut saya sendiri, untuk program yang memiliki banyak baris kode (program yang relatif panjang) menggunakan ST masih lebih memudahkan dan menyenangkan bila dibandingkan dengan menggunakan Arduino IDE.

Gambar 2. ST 2 dan Stino untuk pemrograman sistem Arduino

Gambar 2 menunjukkan penggunaan Sublime Text (ST) dengan Stino untuk pemrograman papan Arduino. Gambar 3 menunjukkan hasil dari build untuk program contoh sederhana (Hello World) dalam bahasa C untuk PC (GCC non Arduino). Program ini kemudian dieksekusi dengan perintah run dalam Gambar 4.

Gambar 3. Contoh hasil build program dalam bahasa C

Gambar 4. Hasil uji coba eksekusi (run) program sederhana dalam bahasa C (non Arduino)

Sublime Text, baik Sublime Text 2 maupun Sublime Text 3 (yang sampai saat saya tulis ini masih dalam versi beta) dapat di-install di sistem dengan OS Microsoft Windows maupun GNU/Linux (seperti Fedora, Debian, Ubuntu, Mint). Namun sampai saat ini khusus untuk sistem GNU/Linux Mint saya masih kesulitan untuk mempergunakan ST untuk pemrograman Atmel AVR (tanpa pengaturan tambahan), meskipun tidak ada masalah jika dipergunakan untuk pemrograman Arduino. Sedangkan untuk MS Windows XP, tidak ada kesulitan baik untuk Atmel AVR maupun Arduino.

Gambar 5. Contoh pesan kesalahan

Pesan kesalahan yang mendatangkan kesulitan seperti pada Gambar 5 dapat diatasi pada ST 2 dengan mengacu dan mengikuti dua sumber. Pertama, untuk memahami proses instalasi paket otomatis menggunakan Package Control (packagecontrol.io) yang mendatangkan pesan seperti pada Gambar 5 dapat dibaca di link berikut ini. Sedangkan untuk perbaikan dengan melakukan instalasi dan pengaturan secara manual dapat dibaca dan diikuti pada halaman berikut ini.

Bagian penting dari proses perbaikan–sekalipun menyulitkan– adalah bagian berikut (saya kutip dari halaman GitHub SublimeClang):

  1. If you don’t want to use package control, you can manually install it
    1. Go to your packages directory and type:
      1. git clone –recursive https://github.com/quarnster/SublimeClang SublimeClang
      2. After this you’ll have to Compile libcache as described in the Additional Prerequisites (Linux Only) section

 

Additional Prerequisites (Linux Only)

  1. ctypes can’t be imported in the Linux version of Sublime Text 2 right now. This can however be worked around easily with the help of pythonbrew:
    1. curl -kL http://xrl.us/pythonbrewinstall | bash
    2. source “$HOME/.pythonbrew/etc/bashrc”
    3. pythonbrew install –configure=”–enable-unicode=ucs4″ 2.6
    4. ln -s $HOME/.pythonbrew/pythons/Python-2.6/lib/python2.6/ <your Sublime Text 2 folder>/lib/python2.6
  2. If you install SublimeClang via Package Control, it seems libcache and libclang will be deleted when the package is updated, so it’s recommended that you manually install the plugin by using the git commands listed in the Installation section.
  3. Once SublimeClang has been installed, libcache will have to be compiled:
    1. cd src
    2. mkdir build
    3. cd build
    4. cmake ..
    5. make
  • Note that if a usable libclang library isn’t found, it will be downloaded and built as part of the build process.

 

Sebagai catatan tambahan dari saya, berdasarkan pengalaman langkah keseluruhan langkah instalasi memerlukan waktu yang cukup lama. Waktu yang cukup untuk membuat minuman kopi panas, merebus mie, makan lalu menucuci alat masak dan alat makan. Untungnya setelah perintah kita berikan pada komputer, proses ini berjalan secara otomatis. Proses yang paling lama adalah proses perintah berikut (semuanya dalam satu baris):

git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang

Setelah instalasi library (pustaka) yang diperlukan selesai, proses dapat dilanjutkan oleh pengguna dengan memberikan perintah yang sesuai seperti pada panduan.

http://i.imgur.com/62RS0C8.gifGambar 6. Contoh fasilitas pengeditan text (kode) pada ST

Sublime Text memiliki banyak fitur (fasilitas) yang dapat membantu para programer, sebagai contoh dapat dilihat pada animasi di Gambar 6. Contoh fitur yang lain dapat langsung dilihat di situs ST yaitu: https://www.sublimetext.com/.

ST 2 maupun ST 3 bisa dipakai secara gratis, meskipun jika ingin anda dapat membeli lisensinya untuk penggunaan profesional di tautan berikut: https://www.sublimetext.com/buy?v=3.  Untuk mengunduh silakan mengakses halaman berikut: download. Untuk Stino, terdapat dua versi yang bisa dipergunakan, yang lama dan yang baru. Karena saya telah cukup lama mempergunakan Stino, maka versi yang saya pergunakan adalah versi Stino di link ini. Sedangkan versi Stino yang baru (sampai saat tulisan ini saya buat) ada di link berikut ini.

Demikian, semoga bermanfaat.

 

Save

Save

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.