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.

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.

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.

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]

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]

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. <span class="su-quote-cite"><a href="https://www.lua.org/about.html" target="_blank">lua.org >> about.html</a></span>

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:

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

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)

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.

 

Instalasi AC6 SW4STM32 untuk pemrograman ARM Cortex-M3 STM32F103

Catatan ini adalah bagian ketiga dari catatan rangkaian proses penyusunan program untuk mikrokontroler keluarga STM32: STM32F103C8T6. Mikrokontroler ini dibangun berdasar arsitektur prosesor 32-bit ARM Cortex-M3, yang lebih komplex daripada kelompok 8-bit (MCS51, Armel AVR) dan 16-bit (MSP430). Karena kompleksitas itulah proses pengerjaannya pun berbeda dari keluarga mikrokontroler lainnya.

Pada bagian pertama dari rangkaian tulisan ini, telah diperkenalkan aplikasi/program komputer yang dibuat oleh STMicroelectronics, yaitu STM32CubeMX. Dalam catatan itu juga telah diungkapkan cara membaca arti dari penamaan mikrokontroler STM32. Dengan cara itu telah bisa didapatkan kode awal (initialization code) yang bisa dipergunakan untuk melakukan pemrograman pada (misalnya), seri STM32F103. Kode yang dikembangkan dapat berfungsi baik jika dimuat ke dalam mikrokontroler. Tetapi jika programmer perlu untuk melakukan debugging maka pengaturan itu belum lah cukup. Jika dipaksakan untuk dipergunakan maka akan menghasilkan kesalahan.

Diperlukan perbaikan pada konfigurasi dengan SW4STM32. Saya sendiri perlu waktu untuk menemukan akar masalah, penyebab kesalahan pada saat debugging. Perlu uji coba berulang kali sendiri dan penelusuran pengalaman oleh orang lain yang sudah pernah mencoba. Suatu saat akan coba saya ungkapkan sebagai bagian dari pelajaran bersama. Catatan konfigurasi yang sukses dipakai untuk keperluan debugging itu sudah saya ungkap melalui tulisan di ini, yang merupakan bagian kedua dari rangkaian tulisan.

Untuk bagian ketiga ini saya akan coba mengungkap catatan tentang penggunaan SW4STM32 untuk pemrograman dan debugging.

sw4stm32f001Gambar 1.

SW4STM32 adalah singkatan dari System Workbench for STM32, seperti yang diperlihatkan pada Gambar 1. Pada dasarnya SW4STM32 adalah sebuah IDE (Integrated Development Environment) yang dibangun di atas IDE Eclipse. Ini hampir mirip dengan salah satu implementasi PlatormIO yang dibangun dengan menggunakan text editor Atom. Dari menu Help dapat terlihat versi Eclipse yang dipergunakan, seperti pada Gambar 2. Dengan catatan tentu setiap pembaruan versi SW2STM32 akan ada kemungkinan bahwa versi Eclipse IDE juga akan berubah.

sw4stm32f002Gambar 2. Versi Eclipse IDE yang dipergunakan sebagai dasar dari SW4STM32

sw4stm32f003Gambar 3. Versi SW4STM32 yang saat ini saya pergunakan.

Saya dapat memberikan langsung tautan ke halaman untuk melakukan pengunduhan progaram SW4STM32, tetapi akan lebih bagus jika prosesnya dimundurkan sedikit lebih jauh. Bagaimana mencari melalui kata kunci di layanan mesin pencari Google.

sw4stm32f004Gambar 4.

Dari situs STMicroelectronics, dapat ditemukan keterangan singkat yang baik mengenai SW4STM32. Intinya program SW4STM32 tidak dibuat oleh STMicroelectronics, melainkan oleh pihak ketiga yaitu AC6. Sedangkan software dan layanan yang berikaitan dengannya di www.openstm32.org. Untuk mendapatkan akses ke layanan download maupun panduan instalasi, pengguna perlu terlebih dahulu melakukan registrasi di situs openstm32, sebagaimana terlihat di Gambar 6.

sw4stm32f005Gambar 5.

sw4stm32f006Gambar 6.

Di halaman http://www.openstm32.org/Downloading+the+System+Workbench+for+STM32+installer dapat ditemui pilihan instalasi untuk sistem Windows / Mac OS/X / GNU/Linux. Ada beberapa informasi yang cukup penting di halaman tersebut, berkenaan dengan proses instalasi, misalnya konsisi saat perlu dilakukan perintah:

sudo apt-get install libc6:i386 lib32ncurses5

SW4STM32 juga membutuhkan tersedianya Java, pada saat saya menulis ini yang diperlukan adalah minimal JavaRE 7. Panduan instalasi Java bisa dicari di sini.

sw4stm32f007Gambar 7.

Gambar 7, hasil screenshot halaman panduan instalasi memberikan keterangan yang penting mengenai instalasi pada Ubuntu 12.04. Pada sistem saya, SW4STM32 masih dapat berfungsi dengan baik:

Linux pengguna 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Kadang-kadang akses ke Properties >> C/C++ Build >> Settings memerlukan waktu yang sangat lama. Di sistem GNU/Linux Ubuntu atau turunannya salah satu solusi yang saya coba dan berhasil dipergunakan adalah yang berasal dari tutorial ini >> [link]. Untuk konfigurasi desktop entry (icons) /home/rumahku/Desktop/sw4stm32_shortcut.desktop.

env UBUNTU_MENUPROXY=0 SWT_GTK3=0

[Desktop Entry]
Name=System Workbench for STM32
Comment=System Workbench for STM32 IDE
Exec=env UBUNTU_MENUPROXY=0 SWT_GTK3=0 /home/sunu/AC6SyWbSTM32/eclipse
Icon=/home/sunu/AC6SyWbSTM32/logo_openstm32.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;
StartupNotify=true

 

Gambar 8. SW4STM32 saat pertama kali dipergunakan

Untuk melakukan progrograman atau debugging pada hasil konfigurasi awal yang diperoleh sebelumnya dari kegiatan yang telah saya catatkan di halaman ini dan halaman ini, pengguna perlu melakukan impor seperti terlihat pada Gambar 9.

sw4stm32f009Gambar 9.

sw4stm32f010Gambar 10.

sw4stm32f011Gambar 11. Melakukan import kode dasar yang dihasilkan oleh STM32CubeMX

sw4stm32f012Gambar 12. Pengujian pertama kali kode dasar (tanpa perubahan kode)

sw4stm32f013Gambar 13. Hasil dari perintah build.

Penggunaan SW4STM32 untuk kegiatan debugging dan pemrograman pada hardware mikrokontroler, akan dibahas di lain catatan.

Mengenal PlatformIO

Pada kesempatan ini saya akan memuat catatan mengenai PlatformIO. Sebelumnya saya sudah membuat catatan penggunaan text editor maupun IDE seperti Energia, Codelite, Netbeans maupun Arduino IDE. Masing-masing IDE tentu memiliki keunggulan dan kekurangan dan masing-masing programer akan memilki kebutuhan dan selera yang berbeda-beda. Nah PlatformIO ini cukup unik, di satu sisi cukup lengkap dan mampu dipergunakan untuk mengerjakan kode untuk berbagai arsitektur mikrokontroler. Di sisi lain tampilannya menyerupai Sublime Text yang ringan dan sederhana.

pio001Gambar 1.

Di Gambar 1 dapat dilihat beberapa contoh default dan proyek yang dibuat manual. Yang sudah saya coba ada beberapa mikrokontroler, yang juga sudah pernah saya uji dengan IDE atau cara lain. Berikut beberapa arsitektur mikrokontroler yang sudah saya coba di PlatformIO (atau Atom);

Sebagai catatan untuk melakukan pemrograman pada STM8 (STM8S103F3); sekalipun PlatformIO tidak mendukung secara langsung toolchain STM8 tetapi editornya masih dapat dimanfaatkan dan mampu membantu keberhasilan pemrograman. Dapat dilihat pada Gambar 2.

pio002Gambar 2. [Klik gambar untuk memperbesar tampilan]

PlatformIO bukanlah text editor dalam pemahaman yang biasa dipergunakan. Pengungkapan yang lebih baik bisa diperoleh dari situs PlatformIO sendiri.

pio003Gambar 3. Apakah PlatformIO itu?

“Different microcontrollers normally have different developing tools . For instance Arduino rely on Arduino IDE. Few more advanced users set up different graphical interfaces like Eclipse for better project management. Sometimes it may be hard to keep up with different microcontrollers and tools. You probably thought that single unified development tool could be great. Well this is what PlatformIO open source ecosystem is for.

This is cross platform code builder and library manager with platforms like Arduino or MBED support. They took care of toolchains, debuggers, frameworks that work on most popular platforms like Windows, Mac and Linux. It supports more than 200 development boards along with more than 15 development platforms and 10 frameworks. So most of popular boards are covered. They’ve done hard work in organizing and managing hundreds of libraries that can be included in to your project. Also lots of examples allow you to start developing quickly. PlatformIO initially was developed with Command line philosophy. It’s been successfully used with other IDE’s like Eclipse or Visual Studio. Recently they’ve released a version with built in IDE based on Atom text editor”, – [Embedds].

 

PlatformIO dapat diintegrasikan ke dalam beberapa IDE di antaranya NetBeans, Codeblocks, dan Visual Studio. Meski begitu tampaknya yang terkenal adalah implementasinya ke dalam text editor Atom.io.

Atom is a text editor that’s modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file.

Mungkin karena itu kadang-kadang PlatformIO dicampuradukkan dengan Atom. Keduanya jelas berbeda meski untuk banyak keperluan praktis merujuk pada hal yang sama. Perbedaan baru akan terlihat jika menemui kasus seperti contoh pada pemrograman STM8S103F3 di bagian atas tulisan ini. Untuk pemrograman contoh led berkedip itu, PlatformIO belum bisa mendukung platform maupun board sistem STM8. Karena itu yang bisa dimanfaatkan “hanya” text editor Atom saja. Tetapi dapat dilihat, dalam kondisi seperti itu pun terbukti masih bisa membantu menyelesaikan pemrograman dengan baik.

PlatformIO IDE yang dibangun berdasar text editor Atom dapat diunduh (download) di link ini. Saya sudah berhasil mencoba instalasi di sistem GNU/Linux, tetapi gagal mencoba di sistem tua saya, IBM Thinkpad T43 yang masih menggunakan Microsoft Windows XP SP3. PlatformIO mensyaratkan OS yang lebih baru dari XP.

Linux pengguna-laptop 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

Ada beberapa pengaturan yang perlu dilakukan agar manfaat yang bisa diberikan platform ini dapat dipergunakan secara maksimal. Salah satu pengaturan yang memerlukan perhatian adalah mengenai clang. Sekilas mengenai Clang dapat dipelajari di sini, begitu pula perbandingannya dengan GCC dapat dibaca di sini.

pio004Gambar 4

Ada dua paket yang perlu menjadi perhatian; autocomplete-clang dan clang-format package. Jika belum terinstalasi dengan baik maka keduanya sebaiknya diinstal terlebih dahulu. Paket yang pertama (autocomplete-clang) sangat membantu proses coding , fungsi dan cara kerjanya dapat lebih mudah dipahami melalui gambar gif berikut:

autocomplete-clangGambar 5. Fasilitas autocomplete [image credit: autocomplete-clang package]

pio006Gambar 6. Melihat paket clang di Settings.

Paket yang kedua (clang-format package) juga sangat membantu pengerjaan kode program. Tetapi berdasar apa yang saya alami, paket kedua ini memerlukan usaha yang lebih agar dapat mudah dipakai. Dari situs penyimpanan kode atom-clang-format:

Format your C/C++/Obj-C/Javascript files with clang-format from inside atom. Requires clang-format to be installed and on your systems path.

More info on clang-format can be found here: http://clang.llvm.org/docs/ClangFormat.html http://clang.llvm.org/docs/ClangTools.html

Pengaturan untuk clang-format disimpan di dalam file .clang-format (tanda titik menandakan bahwa file tersebut secara default tersembunyi di file manager). Untuk dapat melihat file itu di file manager, beri perintah dengan menekan kombinasi kunci di keyboard Ctrl+H. Di sistem saya file itu terletak di:

/home/rumahku/.atom/packages/clang-format/node_modules/clang-format/.clang-format

Yang cukup membuat repot, sejauh yang saya ketahui sampai saat ini, file tersebut perlu disalin manual ke setiap direktori proyek (project).

pio007Gambar 7.

Solusinya sebenarnya cukup mudah, tetapi perlu dilakukan. Salin (copy) file .clang-format ke home directory, untuk mesin saya ini menjadi

/home/rumahku/.clang-format

Adapun isi dari file .clang-format untuk konfigurasi yang saya kehendaki adalah sebagai berikut:

---
Language: Cpp
BasedOnStyle: LLVM
BreakBeforeBraces: GNU
ColumnLimit: 100

Dengan konfigurasi ini maka setiap file sumber untuk C atau CPP (C++) akan terformat ulang setiap kali diberikan perintah menyimpan kode di file. Pengguna bisa juga memberikan perintah untuk melakukan format secara manual melalui menu atau dengan shortcut: shift-cmd-K. Adapun isi dari konfigurasi bisa disimulasikan secara online di sini; https://clangformat.com/ .

Referensi tentang clang format <<klik untuk membuka>>

 

Pada Gambar 2, terlihat untuk platform yang tidak (belum) didukung oleh PlatformIO, maka hasil kompilasinya berada di direktori yang sama dengan file sumber. Pada mode ini yang dimanfaatkan adalah text editor Atom.  Tetapi untuk platform dan framework yang sudah didukung oleh PlatformIO peletakan hasil kompilasi dan build akan berbeda.

pio008Gambar 8.

Oleh PlatformIO hasil kompilasi akan diletakkan di direktori ./pioenvs . Sekedar sebagai contoh;

/tmp/atmelavr-native-blink-116720-6546-1qphcr7/.pioenvs/native_avr/

Sekalipun proses upload biasanya dapat dilangsungkan secara otomatis dengan bantuan PlatformIO, bisa jadi ada kebutuhan untuk melakukan operasi dengan command line di Terminal;

pio009Gambar 9.

pio010Gambar 10.

Mengenai perbedaan antara file elf dengan bin dapat dibaca di sini.

Untuk plaftorm dan framework yang sudah didukung oleh PlatformIO, proses upload dapat dilakukan oleh PlatformIO. Syaratnya pengguna memberi informasi yang cukup agar perintah pengunggahan tidak salah. Konfigurasi disimpan di file platformio.io yang disimpan di masing-masing root direktori proyek, contohnya:

/home/rumahku/platformioSTM32F103/platformio.ini

Misalnya untuk STM32 (mikrokontroler STM32F103C8T6) yang telah didukung oleh PlatformIO (melalui nucleo_f103rb) isi platformio.ini adalah:

#
# PlatformIO Project Configuration File
#
# Please make sure to read documentation with examples first
# http://docs.platformio.org/en/stable/projectconf.html
#
[env:nucleo_f103rb]
platform = ststm32
framework = mbed
board = nucleo_f103rb
upload_protocol = stlink

pio011Gambar 11.

Pada arsitektur STM32 jika yang dipakai adalah stlink maka perlu ditambahkan keterangan
  upload_protocol = stlink   di file platformio.ini . Diskusi mengenai kesalahan yang terjadi ada di sini dan acuan lengkap konfigurasi dapat dilihat di sini.

Gambar 12. Hasil proses uploading oleh PlatformIO

Satu hal lain yang menarik yang saya temui adalah tentang penggunaan framework mbed pada platform ststm32 (STM32). File sumber harus disimpan dengan ekstensi .cpp, jika disimpan dengan ekstensi .c maka akan manghasilkan kesalahan:

pio013Gambar 13. Kesalahan kompilasi dengan framework mbed.

Penjelasan mengenai kesalahan ini terdapat di sini:

mbed is c++-based framework. You should use *.cpp extension.

Please change file extension from *.c to .cpp.

 

pio014Gambar 14.

 

 

Mbed, kompilasi online program STM32F103C8T6

Pada post yang lalu, telah saya sampaikan catatan untuk melakukan pengujian cepat papan mikrokontroler STM32F103C8T6 (arsitektur ARM Cortex-M3 32-bit RISC) murah produksi China. Dalam post ini saya masih akan menyampaikan cara memprogram STM32F103C8T6 tetapi dengan menggunakan aplikasi online dari mbed. Sebagaimana cara lainnya, cara ini tentu saja memiliki keunggulan dan juga kekurangan. Mungkin perlu semacam studi kecil-kecilan untuk hal ini.

Beberapa keunggulan yang ditawarkan oleh sarana pemrograman online seperti mbed antara lain adalah mempersingkat waktu untuk konfigurasi. Sekalipun sepintas melakukan instalasi dan konfigurasi toolchain secara offline di komputer lokal itu mudah, tetapi kenyataannya sering tidak seperti itu. Beberapa ketidaksesuaian dan kekurangan dalam konfigurasi sangat mungkin terjadi. Seperti yang juga pernah saya alami dan sudah saya catatkan di tinker.sunupradana.info ini. Selain itu jika compiler dan IDE (singkatnya toolchain) diatur dan dipelihara terus menerus oleh pihak yang lebih profesional maka akan lebih terjamin jika ada kondisi error atau terdapat bug,menjadi  akan lebih mungkin dan lebih mudah diperbaiki oleh pengelola. Selain itu dengan jumlah pengguna yang besar, tiap permasalahan akan sangat mungkin dialami oleh banyak orang pada kurun waktu yang sama. Sehingga deteksi kesalahan lebih cepat terjadi. Faktor dimungkinkannya kolaborasi ini juga menjadi salah satu nilai plus platform seperti ini. Kode dari seorang pengguna bisa dimanfaatkan oleh orang lain, bahkan banyak orang lain seperti contoh yang akan dipakai dalam catatan ini.

Sedangkan beberapa kekurangan dari pilihan pemrograman secara online antara lain, bahwa programmer pengguna perlu memiliki akses Internet. Bagi pengguna yang tidak setiap saat diperlukan dapat terhubung dengan Internet secara lancar, maka akan menjadi masalah. Juga selain itu umumnya perlu semacam bootloader pada sistem target agar program yang dikompilasi secara online dapat langsung dipindahkan ke target dan dijalankan hanya dengan koneksi fisik berupa kabel USB. Ini mirip pada sistem Texas Instrument MSP432 yang sudah saya ungkap sebelumnya. Untuk produk dari ST seperti Nucleo-F446RE hal ini tidak menjadi masalah karena sistem tersebut sudah dapat diprogram langsung dari mbed melalui web browser.

Pada catatan kali ini saya mencoba ikut mengamalkan cara memprogram papan STM32F103C8T6 (STM32F103) dengan mempergunakan mbed. Berbeda dengan sistem Nucleo yang saya sebut di paragraf sebelum ini, papan STM32 yang murah ini tidak memiliki bootloader untuk mbed. Dengan kata lain ini bukan papan yang sebenarnya mbed enabled. Untungnya sebagaimana banyak hal lain dalam teknologi elektronika, seseorang telah mencoba memberikan solusi untuk masalah ini. Dan selama kita masih memiliki rasa ingin tahu, kemauan untuk bekerja keras dan kemauan untuk belajar, kita pun akan bisa menikmati solusi itu.

Pada dasarnya solusi diperoleh dengan cara mempergunakan konfigurasi dasar dari NUCLEO-F103RB yang tentu saja juga berintikan mikrokontroler seri STM32F103, tetapi STM32F103RBT6 dan bukan STM32F103C8T6 seperti yang akan dipakai di sini. Untungnya Zoltan Hudak menemukan cara untuk konfigurasi sistem Nucleo itu untuk papan yang harganya lebih murah, papan STM32F103C8T6.

Program yang diuat oleh Zoltan Hudak dapat dipergunakan oleh banyak orang yang telah memilki akun di mbed, nama programnya adalah STM32F103C8T6_Hello. Program ini bisa langsung diimpor oleh pengguna lain ke workspace-nya sendiri. Tetapi sebelum menunjukkan cara penggunaan mbed untuk uji coba kali ini, saya perlu menyampaikan cara menanggulangi satu kekurangan mbed dalam memprogram papan murah yang berintikan μC STM32F103C8T6. Kekurangan itu adalah bahwa compiler mbed tidak bisa melanjutkan memprogram papan μC STM32F103C8T6 secara langsung. Melainkan file bin hasil kompilasilah yang akan diberikan kepada pengguna (downloaded) untuk kemudian diunggah (uploaded) sendiri secara manual oleh pengguna ke μC STM32F103C8T6.

Untuk mengatasi kekurangan itu diperlukan suatu uploader (boleh juga disebut flasher) untuk memuat file hasil kompilasi ke μC. Saya memilih sistem yang gratis dan dapat dioperasikan juga di sistem GNU/Linux seperti Ubuntu atau Mint. Sistem tersebut adalah stlink, yang dapat dengan mudah diunduh gratis di sini. Panduan instalasinya pun mudai diikuti di halaman wiki di sini. Untuk keperluan ini yang paling diperlukan adalah program st-flash. Tetapi karena tujuan saya bukan hanya untuk melakukan uji coba, melainkan juga membangun platform yang bisa dipakai untuk pemrograman selanjutnya maka kerja konfigurasi saya lanjutkan. Agar dalam satu kurun waktu, satu rangkaian pekerjaan selesai. Karena itu saya melakukan copy agar program-program dari stlink dapat dipakai, dipanggil dari banyak tempat (direktori/folder).

Cara pertama yang bisa ditempuh adalah dengan menggunakan cara soft link;

ln -s /home/rumahku/stlink/build/st-flash ~/bin/st-flash
ln -s /home/rumahku/stlink/build/st-util ~/bin/st-util
ln -s /home/rumahku/stlink/build/st-info ~/bin/st-info
ln -s /home/rumahku/stlink/build/st-term ~/bin/st-term

Tetapi menurut saya dengan cara ini tidak menjadi mudah untuk mempergunakan st-link gui atau stlink-gui-local. Karena itu saya memilih cara kedua yaitu melakukan copy ke direktori yang kemudian berada dalam $PATH. Kebetulan saya telah memilikinya /home/rumahku/bin. Tetapi kalau belum memiki direktori seperti itu, cukup dibuat dengan cara yang mudah;

~ $ mkdir ./bin

Kemudian pertama kali copy file stlink-gui.ui dari /home/rumahku/stlink/src/tools/gui/stlink-gui.ui . Lalu copy file program dari /home/rumahku/stlink/build/  sehingga menjadi seperti pada Gambar 1.

Gambar 1.

Abaikan program FoxitReader, karena itu adalah program lain (pembaca file pdf).

Untuk memastikan bahwa semua program dalam direktori /home/rumahku/bin/ akan dapat dipanggil dari direktori lain maka direktori itu perlu ada di dalam PATH di file .profile. File .profile adalah file yang tersembunyi yang terdapat di /home/rumahku/ . Tanda titik di depan nama file menandakan bahwa file tersebut tersembunyi. Jika menggunakan “explorer” (file manager) seperti Thunar, maka pengguna perlu memberikan perintah dari keyboard berupa ctrl+h agar file yang tadinya tersembunyi di sistem GNU/Linux dapat terlihat. File itu kemudian bisa dibuka dengan gedit (text editor). Semua rangkaian cara ini relatif mudah daripada menggunakan terminal, bagi yang belum terbiasa. Lalu pastikan /home/rumahku/bin/ tercantum dalam isi file .profile.

PATH=/home/rumahku/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Setelah itu agar perubahan (jika ada) bisa langsung dimanfaatkan berikan perintah berikut;

~ $ source .profile

Untuk menguji apakah sistem sudah berhasil diperbaharui, panggil salah satu program dari direktori (acak) selain direktori stlink. Misalnya sekedar untuk mencoba;

~/Documents $ st-flash

Program st-flash inilah yang akan dipakai untuk melakukan upload file hasil kompilasi mbed ke papan μC.

mbed002Gambar 2. Percobaan pemanggilan berhasil

Setelah berhasil melakukan setup stlink yang tidak hanya akan dipakai untuk pemrograman cara ini tapi juga untuk banyak keperluan lain, sekarang kita bisa beralih ke tahapan selanjutnya. Tahapan utama adalah tahapan pemanfaatan mbed. Pertama kali pengguna perlu membuat akun di situs mbed, di link ini.

Gambar 3.

Gambar 4.

Setelah berhasil signup lalu login, berikutnya untuk percobaan ini, pengguna bisa langsung menuju STM32F103C8T6_Hello.

Gambar 5.

Tekan-tahan tanda “panah ke bawah” lalu pilih Import into Compiler atau Import with mbed CLI. Untuk cepatnya saya hanya melakukan klik cepat dan otomatis akan memiih pilihan defaultImport into Compiler.

mbed006Gambar 6.

mbed007Gambar 7. Setelah berhasil melakukan impor

Jika papan Nucleo-F103RB belum terdapat dalam daftar registered platform, bisa ditambahkan sendiri dengan melakukan klik pada Add Platform seperti pada Gambar 8.

mbed008Gambar 8.

mbed009Gambar 9.

mbed010Gambar 10.

Pertama, untuk uji coba ini ubah kode sesuai keperluan. Kedua pastikan platform yang sedang aktif adalah NUCLEO-F103RB, lalu klik perintah untuk Compile.

#include "stm32f103c8t6.h"
#include "mbed.h"
 
Serial      pc(PA_2, PA_3);
DigitalOut  myled(LED1);
 
int main() {
    while(1) {
        // The on-board LED is connected, via a resistor, to +3.3V (not to GND). 
        // So to turn the LED on or off we have to set it to 0 or 1 respectively
        myled = 0;      // turn the LED on
        wait(0.2);      // 200 ms
        myled = 1;      // turn the LED off
        wait(1.0);      // 1 sec
        pc.printf("Blinkrn");
    }
}

 

mbed011Gambar 11. Proses kompilasi sedang berlangsung.

mbed012Gambar 12. Download hasil kompilasi.

mbed013Gambar 13. Melihat detail hasil komplasi

mbed014Gambar 14. Informasi detail besar file hasil kompilasi.

Penting untuk mengamati bahwa batas besar program untuk μC STM32F103C8T6 adalah 64 kB, jangan sampai besar program melebihi batas itu. Zoltan Hudak sudah memberi peringatan yang jelas mengenai besar program ini.

mbed016Gambar 15. [image credit: Zoltan Hudak]

/media/uploads/hudakz/stm32f103c8t6_pinout03.png

Gambar 16. [image credit: Zoltan Hudak].

https://developer.mbed.org/media/uploads/hudakz/stm32f103c8t6_schematic.png

Gambar 17. [image credit: Zoltan Hudak].

mbed015Gambar 18. Proses upload ke mikrokontroler berhasil.

Demikianlah catatan saya kali ini mengenai contoh pemrograman salah satu mikrokontroler ARM Cortex-M3 dengan mbed, sekalipun tidak termasuk dalam golongan papan (board) yang sudah mbed enabled.

Cara mudah menguji papan STM32F103C8T6 menggunakan Arduino IDE

Mikrokontroler STM32103C8T6 adalah salah satu mikrokontroler keluarga STM32 (tepatnya STM32F10xxx) yang diproduksi oleh STMicroelectronics. Mikrokontroler ini adalah μC yang tergolong sebagai medium-density devices (64 Kbytes). Pada catatan terdahulu tentang Maple Mini, sebenarnya μC STM32103C8T6 inilah yang dipergunakan sebagai inti di sistem itu.

Kedua papan sistem mikrokontroler itu saya beli dari salah satu penjual di Tokopedia, Toko Bey. Saya tidak berafiliasi atau bahkan mengenal pemilik toko online tersebut, tetapi salah satu yang menyenangkan adalah bahwa penjualnya memberikan beberapa tutorial yang sangat membantu bagi pemula untuk mengenal produk yang dijual. Di saat customer education masih sekedar jargon, praktik seperti itu tentu sangat terpuji. Saya sangat berharap investasi waktu dan tenaga dalam mempelajari suatu arsitektur prosesor baru akan mencapai manfaat yang lebih kuat karena ketersediaan pasokan alat/perangkat terjamin. Sungguh berharap para merchant akan cukup punya “nafas” dan pasar untuk tetap berjualan mikrokontroler dangan arsitektur ARM seperti ini dengan harga yang cukup terjangkau.

Nah salah satu keperluan yang penting saat suatu barang seperti ini datang adalah cara melakukan uji coba kondisi barang, setidaknya untuk beberapa bagian (parsial). Apalagi jika baru akan belajar mempergunakannya, perlu sesuatu yang bisa dipergunakan dengan cepat. Nah di sinilah peran STM32duino. STM32duino adalah upaya untuk memungkinkan (beberapa) mikrokontroler anggota keluarga STM32 untuk dapat diprogram dengan mengunakan Arduino IDE melalui penambahan pustaka.

Hubungan/koneksi antara ST-Link v2 [ compatible ] (semua di satu sisi header) dengan papan STM32F103C8T6:

ST-LINK V2   Papan STM32F103C8T6
SWCLK >> DCLK
SWDIO >> DIO
GND >> GND
3.3V >> 3.3V

 

 

 

wp-1471525805456.jpegGambar 1.

Cara ini juga mempermudah upaya prototyping, bukan hanya untuk belajar tetapi juga untuk menguji dan menyusun ide-ide secara lebih cepat. Setelah itu baru kemudian diperbaiki dalam hal efektifitas dan efisiensi program/sistem.

stm32f103c8t6Gambar 2.

Cara lain akan dimuat pada tulisan di lain waktu.

 

Uji Maple Mini compatible (STM32F103C8T6)

Jika sebelum ini catatan yang saya unggah adalah mengenai STM8S103F3P6 (STM8) maka untuk catatan ini giliran mikrokontroler STM32F103C8T6. Sekalipun sama-sama produksi STMicroelectronics, arsitektur keduanya berbeda. STM32F103C8T6 adalah bagian dari keluarga STM32, μC 32-bit yang core prosesornya bukan berasal dari rancangan ST sendiri (seperti STM8), melainkan mengadopsi arsitektur dasar dari ARM. Tepatnya ARM®Cortex®-M3 32-bit RISC core [link]. Lebih jauh tentang ini nanti akan diungkapkan di artikel lain.

Untuk artikel ini, akan coba diungkap pengujian cepat pada sistem STM8S103F3P6 yang merupakan papan Maple Mini atau yang kompatibel. Ini mirip dengan Arduino (Uno/Zero/Mega/Micro/Nano) yang sebenarnya mempergunakan mikrokontroler Atmel AVR. Untuk Maple Mini ini pun sama, bahkan kalau melihat IDE-nya maka pengguna akan segera ingat dengan IDE milik Arduino (tentu jika sudah pernah melihat sebelumnya).

wp-1471368581561.jpegGambar 1.

Berdasarkan penanda pada papan, Maple Mini clone yang saya miliki sepertinya diproduksi oleh Baite. Papan ini clone ini menggunakan bootloader asli dari LeafLabs. Produk asli dari LeafLabs (Maple Mini) sepertinya sudah tidak diproduksi lagi.

BTE-1407fGambar 2. [image credit: lincomatic.com]

BTE-1407bbGambar 3. [image credit: lincomatic.com]

Berbeda dengan papan Arduino (dan clone-nya), cara pemrograman clone dari Maple Mini ini agak “unik” jika menggunakan STM32duino (Arduino IDE) maupun Maple IDE v.0.0.12 (dibangun dari Arduino 0018). Menurut Roger Clark, untuk pemrograman dari OS GNU/Linux papan Maple Mini ini perlu perlakuan khusus agar dapat diprogram dengan baik. Setelah tombol reset pada papan ditekan, saat lampu led masih berkedip cepat maka pengguna harus segera menekan-tahan tombol yang lain. Saat led mulai berkedip pelan, pengguna bisa melepas tombol tadi. Indikator keberhasilan prosedur ini akan mudah dilihat jika sistem tidak berisi kode program led berkedip (blinking). Pada kondisi normal, setelah tobol reset ditekan lalu dilepas, led akan berkedip dalam dua tahap. Tahap cepat lalu tahap lambat, kemudian led akan padam. Jika pengguna sukses melakukan prosedur sebagaimana yang dikemukakan di atas maka saat tahap led berkedip cepat, led kemudian akan terus berkedip lambat dan tidak berhenti.

Before each upload the board needs to be put into “Perpetual bootloader” mode.

  • Press the reset button (it’s the button labeled RESET). The board should blink quickly 6 times, then blinks slowly a few more times, then stop flashing (unless it has a sketch loaded that flashes the LED)
  • Press reset again, and this time push and hold the other button during the 6 fast blinks (the normal button is labeled BUT). You can release it once the slow blinks start.

Someone did a Youtube video of this http://youtu.be/rvNIeKuXsxM

Pemantauan bisa jadi lebih mudah jika di sistem anda juga anda install sendiri program dfu-util.

$ sudo apt-get install dfu-util

Jika papan sedang tidak berada dalam mode “perpetual bootloader” maka hasil tampilan akan seperti pada Gambar 4.

maple001Gambar 4.

Sedangkan jika papan berhasil dibuat berada dalam mode perpetual bootloader, terus menerus sampai IDE mengirim sinyal reset, maka tampilan akan seperti pada Gambar 5.

maple002Gambar 5.

Selain itu jangan lupa juga untuk mengatur file konfigurasi udev. Jika perlu buar file baru (gunakan sudo jika perlu akses sebagai admin) /etc/udev/rules.d/45-maple.rules . Mengacu sumber inilah seharusnya isi file tersebut.

ATTRS{idProduct}=="1001", ATTRS{idVendor}=="0110", MODE="664", GROUP="dialout"
ATTRS{idProduct}=="1002", ATTRS{idVendor}=="0110", MODE="664", GROUP="dialout"
ATTRS{idProduct}=="0003", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="dialout" SYMLINK+="maple"
ATTRS{idProduct}=="0004", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="dialout" SYMLINK+="maple"

 

Selain dengan cara memasukkan sistem papan ke “perpetual bootloader mode” ada cara lain yang berhasil saya coba. Caranya adalah setelah melakukan perintah upload dari IDE, maka akan ada pesan di IDE; “Uploading to I/O Board”. Proses akan seperti terhenti, hang. Pada saat itulah saya menekan tombol reset di papan mikrokontroler hingga program selesai di-upload (diunggah).

maple004

maple005Gambar 6.

Listing program kosong, jika diperlukan.

maple003Gambar 7.

maple006Gambar 8. Pemrograman menggunakan Arduino IDE (menggunakan STM32duino)

Untuk pemrograman dengan Arduino IDE 1.6.10 ada tantangan tambahan jika mempergunakan cara hanya menekan tombol reset satu kali untuk memprogram. Berbeda dengan Maple IDE yang berbasis pada Arduino IDE yang lama, pada Arduino IDE yang baru ini penguna harus lebih sigap, cepat dalam hal menekan tombol reset pada papan Maple Mini. Tidak terdapat saat “menunggu” seperti pada Maple IDE, jika terlambat menekan maka proses uploading akan langsung dinyatakan gagal dan pesan kesalahan akan tampil.

maple007Gambar 9.

Proses instalasi STM32duino sendiri cukup mudah, menurut situs sumber [link];

  • Copy the Arduino_STM32 folder to the hardware folder in your Arduino sketches folder . If the hardware folder does not exist, please create one.
  • Run the udev rules installation script in tools/linux/install.sh
  • Note. If you are uploading via USB to Serial or STLink etc, you may need to set the relevant permissions for your specific upload device in order to be able to use it from within the Arduino IDE. You may also need to change the udev rules for the device in question.

Untuk pengujian cepat seperti ini maupun untuk prototyping,  fasilitas penggunaan bootloader dan penggunaan Arduino IDE sangatlah mempermudah. Selain itu sistem berbasis mikrokontroler STM32F103C8T6 (keluarga ARM® Cortex® -M3 32-bit) yang telah diberi Maple-bootloader (versi original) dan dapat diprogram dengan Arduino IDE ini juga menarik sebagai bahan belajar awal arsitektur mikrokontroler modern.

Adapun pin mapping dari Maple Mini ini dapat di lihat di link ini atau lebih lengkap lagi di link ini. Dokumentasi skematik dan pcb Maple Mini terdapat di GitHub.

Sumber belajar Maple Mini dari halaman lama LeafLabs dapat diakses di sini: LeafLabs Documentation Index.

 

Uji blinking led STM8 STM8S103F3P6

Di post sebelumnya telah memuat catatan uji coba dan setup untuk keluarga mikrokontroler produksi dari TI (Texas Instrument); MSP430, MSP432 dan Tiva C.  Pada catatan ini akan dipaparkan uji coba untuk mikrokontroler produksi dari STMicroelectronics (ST) yaitu salah satu anggota keluarga STM8, tepatnya μC STM8S103F3. Mikrokontroler STM8S103F3P6 adalah mirkokontroler 8-bit, sama dengan keluarga ATmega8535 (ATmega) dan ATtiny85 (ATtiny). Dan sama pula dengan keluarga AVR, STM8S103F3 dapat diprogram dengan software di sistem GNU/Linux seperti Ubuntu, Mint, BlankOn.

wp-1470912333051.jpegGambar 1. Uji pemrograman STM8 di GNU/Linux.

Untuk melakukan pemrograman singkat dan sederhana pada STM8 hanya diperlukan sebuah text editor seperti nano atau gedit dan terminal untuk mengunggah kode ke STM8.

ashampoo_snap10.pngGambar 2. Pemrograman pada terminal di GNU/Linux

 

Perangkat compiler yang dipergunakan untuk melakukan pemrograman pada STM8 (STM8S103F3P6) yang tersedia gratis tanpa batasan adalah SDCC. SDCC (Small Device C Compiler) dapat dipergunakan di sistem GNU/Linux maupun MS Windows. Untuk memprogram STM8 diperlukan SDCC dari versi yang sudah memiliki fasilitas untuk pemrograman STM8, misalnya di atas versi 3.5.0. Saya sendiri mempergunakan versi yang lebih baru:

$ sdcc -v
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.6.0 #9615 (Linux)
published under GNU General Public License (GPL)

 

Sebagaimana prinsip dasar saat mencoba mempelajari sesuatu yang intinya meminimalkan sedapat mungkin berbagai sumber/faltor masalah/kesalahan maka untuk menguji sistem ini pun sebaiknya mempergunakan contoh yang diperkirakan lebih dapat dipercaya akan menghasilkan pengujian yang baik. Atau setidaknya mengambil dari sumber yang sudah pernah melaporkan hasil pengujian dan melakukan modifikasi untuk memperbaiki bug atau kesalahan. Untuk uji coba ini, contoh yang dapat dipakai bersumber dari: http://technologyrealm.blogspot.co.id/2015/07/getting-started-with-stm8-development.html atau http://www.cnx-software.com/2015/04/13/how-to-program-stm8s-1-board-in-linux/. Keduanya mengacu pada sumber kode asli (stm8-examples-sdcc) yang sama yang kemudian dimodifikasi.

#include "stm8l.h"

int main() 
{
	int d;
	// Configure pins
	PB_DDR = 0x20; //ganti dari 0x80 ke 0x20
	PB_CR1 = 0x20; //ganti dari 0x80 ke 0x20
	// Loop
	do 
	{
		PB_ODR ^= 0x20; //ganti dari 0x80 ke 0x20
		for(d = 0; d < 29000; d++) { }
	} while(1);
}

Dalam file contoh yang sama dapat dilihat isi dari makefile. Konfigurasi berikut adalah hasil modifikasi dari pengaturan aslinya;

SDCC=sdcc
SDLD=sdld
OBJECTS=blinky.ihx
 
.PHONY: all clean flash
 
all: $(OBJECTS)
 
clean:
    rm -f $(OBJECTS)
 
flash: $(OBJECTS)
    stm8flash -c stlinkv2 -p stm8s103f3 -w $(OBJECTS)
 
%.ihx: %.c
 
    $(SDCC) -lstm8 -mstm8 --out-fmt-ihx $(CFLAGS) $(LDFLAGS) $<

Adapun isi lengkap dari file  asli  contoh terlihat di Gambar 1.

Gambar 3.

Untuk kompilasi tunggal, bisa dilakukan dengan perintah:

$ sdcc -lstm8 -mstm8 --out-fmt-ihx blinky.c

Berikutnya, untuk melakukan upload ke mikrokontroler STM8S103F3P6 diperlukan program stm8flash. Ada dua cara agar program ini dapat diinstalasi di komputer. Pertama dengan cara mengunduh (download) dari dengan alamat; https://github.com/vdudouyt/stm8flash/archive/master.zip. Cara lain adalah dengan mempergunakan git ($ sudo apt-get install git). Perintah yang dengan mempergunakan git adalah; git clone https://github.com/vdudouyt/stm8flash.git. Perintah lengkapnya adalah:

git clone https://github.com/vdudouyt/stm8flash.git

cd stm8flash
make
sudo make install

Perintah untuk mengunggah ke mikrokontroler dengan stm8flash dapat dilakukan dengan cara;

$ stm8flash -c stlinkv2 -p stm8s103f3 -w blinky.ihx

 

Saya mempergunakan versi papan sistem yang murah dari mikrokontroler STM8S103F3P6 sebagaimana yang telah dilaporkan di dua situs ini;

http://www.cnx-software.com/wp-content/uploads/2015/01/STM8S_Board_Schematics.png
Gambar 4. [image credit: cnx-software.com]

Papan yang saya miliki hampir serupa dengan tampilan pada Gambar 4. Tetapi posisi led untuk pengguna berbeda. Pada papan terdapat dua led, led yang berwarna biru adalah indikator catu daya dan memiliki tulisan penanda PWR. Sedangkan led yang berwarna merah dengan tulisan penanda TEST adalah led yang dapat dipergunakan oleh programer. Led merah pada papan yang saya miliki terhubung pada pin PB5 (port B5) dan bukan pada Port D atau Port E. Tampilan yang lebih tepat seperti pada Gambar 5.

Image

Gambar 5. [image credit:  forum.hobbycomponents.com]

Untuk papan yang saya miliki ada saat pertama mikrokontroler tidak berhasil diprogram. Seperti umumnya solusi permasalahan teknis seperti ini sudah pernah dikemukakan [link]. Caranya pertama adalah dengan mengunduh (download) file berikut; optdefault.bin . Jalu menjalankan perintah;

$ stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w optdefault.bin

Setelah itu baru jalankan perintah;

$ stm8flash -c stlinkv2 -p stm8s103f3 -w blinky.ihx

 

Cara lain untuk melakukan pemrograman adalah dengan menggunakan make dan makefile. Tentang tutorial mengenai makefile sendiri sudah saya cantumkan daftar urutan tutorial pada bagian akhir catatan sebelumnya. Misalnya untuk contoh ini pemanggilan make dapat dilakukan sesuai tujuan. Untuk menghasilkan file intel hex, cukup dengan memanggil make dari dalam direktori file C sumber.

$ make

Untuk melakukan uploading ke mikrokontroler, bisa dilakukan dengan perintah yang sesuai isi penamaan di dalam makefile. Misalnya untuk contoh ini;

$ make flash

 

wp-1470913902302.jpegGambar 6.

 

Saya mempergunakan ST-Link V2 compatible dongle. Untuk keperluan ini hanya bagian satu sisi dari header yang dipergunakan. Jalur untuk sinyal RST (untuk NRST), SWIM, GND, 3.3V. Hubungan dari dongle ini ke papan mikrokontroler tidaklah lurus. Hubungan antara GND dan SWIM tidak lurus akibat letak pin yang berbeda.

wp-1470808435627.jpegGambar 7.

 

img_20160810_020354.jpgGambar 8. Hasil pengukuran pada pin PB5

img_20160810_020654.jpgGambar 9.

Dari situs STMicroelectronics terdapat beberapa dokumen yang bisa dipakai untuk sember belajar. Diantaranya saya urutkan sebagai berikut;

  • AN2752: Getting started with the STM8S and STM8A [download]
  • RM0016: STM8S series and STM8AF series 8-bit microcontrollers
    [download]
  • DS6120: STM8S103F3 datasheet [download]
  • PM0051: How to program STM8S and STM8A Flash program memory and data EEPROM
    [download]
  • PM0044: STM8 CPU programming manual [download]