Uji coba kompilasi program MSP430G2553 dengan Codelite

Untuk melakukan pemrograman pada mikrokontroler MSP430G2553, ada beberapa cara yang bisa dipakai. Misalnya dengan menggunakan Energia, seperti yang sudah pernah ditunjukkan sebelumnya. Cara lain yang disarankan oleh TI (Texas Instruments) adalah dengan menggunakan CCS (Code Composer Studio), baik versi desktop maupun versi cloud (web). Tetapi selain itu, sebenarnya ada banyak aplikasi yang bisa dipakai untuk melakukan pemrograman, selama terdapat akses yang baik ke compiler dan toolchain lainnya.

Dengan akses ke compiler, seorang programer dapat memilih text editor yang hendak dipakainya. Bisa berupa software klasik seperti Vim atau Emacs, bisa juga yang relatif modern seperti nano atau gedit. Programer juga bisa memilih IDE yang lebih kompleks untuk proyeknya seperti Geany, CodeLite, Code::Blocks, atau bahkan yang berbasis Eclipse.

TI telah menyediakan dua versi desktop IDE yang normalnya masing-masing bekerja di sistem Windows dan GNU/Linux. Sayangnya baik CCSv6 maupun CCSv5 belum dapat berfungsi dengan baik di laptop saya. Pemrograman tentu masih bisa dilakukan dengan text editor yang sederhana, tetapi untuk memudahkan pengerjaan maka saya coba mempergunakan IDE. Kali ini saya mencoba menggunakan Codelite. Bila dibandingkan dengan IDE berbasis Eclipse atau bahkan Code::Blocks, menurut saya Codelite lebih ringan dan mempercepat kerja. Sebelum menggunakan Sublime Text, saya senang mempergunakan IDE ini. IDE Geany sebenarnya lebih terasa ringan, tetapi untuk proyek dengan compiler dan toolchain yang berbeda-beda, Codelite lebih memudahkan pekerjaan.

Sampai saat saya menulis catatan ini untuk pemrograman Launchpad MSP430 (MSP-EXP430G2) dengan CodeLite masih perlu saya bagi ke dalam dua tahapan yang berbeda. Pekerjaan coding, compiling, building, sudah bisa saya lakukan dari dalam CodeLite. Sedangkan untuk uploading ke launchpad masih saya lakukan di terminal dengan mspdebug.

Instalasi CodeLite di sistem GNU/Linux Ubuntu dan variannya dapat diakukan dengan perintah sudo apt-get install codelite. Untuk lebih mengenal CodeLite, berikut beberapa sumber bacaan yang baik;

[intense_emphasis color=”#FFB157″ tag=”span”] [/intense_emphasis]

 

Berikutnya untuk menguji apakah sistem IDE dan toolchain sudah berfungsi dengan baik diperlukan kode untuk uji coba. Template dasar kode kadang-kadang dapat berfungsi baik sebagai kode uji dasar. Tetapi sering juga terjadi, terutama pada embedded system,  diperlukan kode yang sedikit lebih lengkap. Jika di PC dikenal kode program “Hello World“, maka di embedded systems dikenal kode “Blinking Led” yang berfungsi utama sama yaitu untuk memastikan sistem kompilasi dan pendukungnya bekerja dengan baik. Sebagai bonus, kode led berkedip juga membantu untuk memeriksa kondisi peripheral. Beberapa sumber untuk contoh kode dasar yang dapat dipakai;

Pada dasarnya semua kode pada sumber-sumber acuan di atas adalah serupa. Ini adalah salah satu bukti bahwa sepanjang berkenaan dengan sumber belajar untuk electronics engineering technology, jauh lebih sering daripada tidak sumbernya sudah cukup banyak. Tergantung kemauan dan kesempatan untuk mempelajarinya. Dari contoh-contoh itu, salah satu yang bisa dipakai untuk pengujian adalah kode berikut:

//Demo app to blink the red LED (LED1) on the TI Launchpad
//which is attached to P1.0
//The green LED(LED2) is connected to P1.6

#include <msp430g2553.h>
 
int main(void) {
  volatile int i;
 
  // stop watchdog timer
  WDTCTL = WDTPW | WDTHOLD;
  // set up bit 0 of P1 as output
  P1DIR = 0x01;
  // intialize bit 0 of P1 to 0
  P1OUT = 0x00;
 
  // loop forever
  for (;;) {
    // toggle bit 0 of P1
    P1OUT ^= 0x01;
    // delay for a while
    for (i = 0; i < 0x6000; i++);
  }
}

 

Selain contoh kode sederhana (yang diharapkan sudah tidak mengandung kesalahan yang signifikan), pengguna juga perlu mempelajari bagaimana melakukan instalasi toolchain (termasuk compiler). Beberapa sumber belajar singkat yang bagus untuk dibaca mengenai hal ini:

Hasil instalasi toolchain dari satu atau lebih cara dapat kemudian diperiksa, di sistem saya hasilnya:

[intense_emphasis color=”#25a89f” tag=”span”]
$ msp430
msp430-addr2line  msp430-g++        msp430-ld.bfd     msp430-run
msp430-ar         msp430-gcc        msp430mcu-config  msp430-size
msp430-as         msp430-gcc-4.6.3  msp430-nm         msp430-strings
msp430-c++        msp430-gcov       msp430-objcopy    msp430-strip
msp430-c++filt    msp430-gdb        msp430-objdump
msp430-cpp        msp430-gprof      msp430-ranlib
msp430-elfedit    msp430-ld         msp430-readelf

$ locate msp430-gcc
/home/rumahku/energia0101E0017/hardware/tools/msp430/bin/msp430-gcc
/home/rumahku/energia0101E0017/hardware/tools/msp430/bin/msp430-gcc-4.6.3
/home/rumahku/energia0101E0017/hardware/tools/msp430/share/man/man1/msp430-gcc.1
/home/rumahku/energia18/hardware/tools/msp430/bin/msp430-gcc
/home/rumahku/energia18/hardware/tools/msp430/bin/msp430-gcc-4.6.3
/home/rumahku/energia18/hardware/tools/msp430/share/man/man1/msp430-gcc.1
/home/rumahku/msp430toolChain/bin/msp430-gcc
/home/rumahku/msp430toolChain/bin/msp430-gcc-4.7.0
/home/rumahku/msp430toolChain/bin/msp430-gcc-ar
/home/rumahku/msp430toolChain/bin/msp430-gcc-nm
/home/rumahku/msp430toolChain/bin/msp430-gcc-ranlib
/home/rumahku/msp430toolChain/bin/msp430-gcc-wrapper
/home/rumahku/msp430toolChain/bin/msp430-msp430-gcc-ar
/home/rumahku/msp430toolChain/bin/msp430-msp430-gcc-nm
/home/rumahku/msp430toolChain/bin/msp430-msp430-gcc-ranlib
/home/rumahku/msp430toolChain/share/man/man1/msp430-gcc.1
/usr/bin/msp430-gcc
/usr/bin/msp430-gcc-4.6.3
/usr/share/codeblocks/compilers/compiler_msp430-gcc.xml
/usr/share/codeblocks/compilers/options_msp430-gcc.xml

$ msp430-gcc -v
Using built-in specs.
Reading specs from /usr/lib/gcc/msp430/4.6.3/../../../../msp430/lib/msp430mcu.spec
COLLECT_GCC=msp430-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/msp430/4.6.3/lto-wrapper
Target: msp430
Configured with: '/build/buildd/gcc-msp430-4.6.3~mspgcc-20120406/./gcc-4.6.3/configure' -v --enable-languages=c,c++ --prefix=/usr --with-system-zlib --infodir='/usr/share/info' --mandir='/usr/share/man' --bindir='/usr/bin' --libexecdir='/usr/lib' --libdir='/usr/lib' --build=x86_64-linux-gnu --host=x86_64-linux-gnu MAKEINFO=missing --target=msp430
Thread model: single
gcc version 4.6.3 20120301 (mspgcc LTS 20120406 unpatched) (GCC)
[/intense_emphasis]

Sistem GNU/Linux;

[intense_emphasis color=”#AAB1BE” tag=”span”]

Linux XXX 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

[/intense_emphasis]

 

Perbandingan antar compiler menurut TI GCC User’s Guide [pdf file]

evd8

codelite002Gambar 1.

codelite001Gambar 2.

codelite003Gambar 3.

codelite004Gambar 4.

codelite005Gambar 5.

codelite006Gambar 6.

codelite007Gambar 7.

codelite008Gambar 8.

codelite009Gambar 9.

codelite010Gambar 10.

codelite011

Gambar 11.

codelite012Gambar 12.

codelite013Gambar 13.

 

Uji blinking led Tiva C Launchpad EK-TM4C123GXL di GNU Linux dengan Energia [teaser]

Papan  EK-TM4C123GXL adalah salah satu dari seri Launchpad yang dikeluarkan oleh Texas Instruments. Salah satu klaim yang menarik yang dikemukakan oleh TI adalah:

The Tiva C Series LaunchPad includes everything you need to get started with ARM Cortex-M4 development!<span class="su-quote-cite">Texas Instruments</span>

Papan ini berintikan prosesor TM4C123GH6PM yang memang dibangun dari arsitektur ARM tersebut. Lebih jauh diungkapkan bahwa:

The Tiva C Series TM4C123GH6PM microcontroller offers an 80-MHz, 32-bit ARM Cortex-M4 CPU with floating point, 256 kBytes of 100,000 write-erase cycles of flash memory, and a wide range of peripherals including motion control PWMs, 1-MSPS ADCs, eight UARTs, four SPIs, four I2Cs, USB H/D/OTG, and up to 27 timers. <span class="su-quote-cite">Texas Instruments</span>

wp-1470913436580.jpeg

Sistem ini dapat diprogram dengan beberapa cara. Salah satu dan yang termudah adalah dengan menggunakan Energia. Pada kali ini untuk sekedar mencoba melakukan uji led berkedip, maka saya menggunakan Energia di sistem GNU/Linux. Ini juga cara pertama yang akan saya tempuh untuk mempelajari sistem Tiva C.

 

Catatan sistem GNU/Linux:

$ uname -a
Linux xxx 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

$ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 17.2 Rafaela
Release: 17.2
Codename: rafaela

Sebagian dari $ lsusb
Bus 003 Device 004: ID 1cbe:00fd Luminary Micro Inc. In-Circuit Debug Interface

Sebagian dari $ dmesg
usb 3-1: new full-speed USB device number 4 using xhci_hcd
usb 3-1: New USB device found, idVendor=1cbe, idProduct=00fd
usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: In-Circuit Debug Interface
usb 3-1: Manufacturer: Texas Instruments
usb 3-1: SerialNumber: 0E21404E
acm 3-1:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 3-1:1.0: ttyACM0: USB ACM device

 

Potensi masalah (tantangan):

Ada kemungkinan aplikasi Energia akan menampilkan pesan kesalahan saat akan melakukan pengiriman hasil kompilasi kode program ke papan Launchpad. Pesan yang pernah saya terima adalah sebagai berikut:
[intense_emphasis tag=”span”]

Unable to open USB device: LIBUSB_ERROR_ACCESS
Unable to find any ICDI devices
[/intense_emphasis]

Untuk mengatasi masalah tersebut saya menemukan solusinya dengan membaca dan mencoba beberapa alternatif solusi yang diajukan di sumber-sumber berikut:

wp-1470911952099.jpeg

Pada intinya permasalahan terjadi karena ada masalah akses ke jalur komunikasi. Indikasinya adalah jika saya menggunakan privilege sebagai root dengan menggunakan perintah sudo untuk menjalankan Energia, permasalahan akses tersebut tadi tidak lagi terjadi. Pengaturan rules pada udev perlu dilakukan sesuai contoh. Pada percobaan yang saya lakukan, perintah sudo restart udev tidak membawa pengaruh. Setelah konfigurasi pada file di /etc/udev/rules.d/, saya masih perlu melakukan restart pada sistem GNU/Linux saya. Demikianlah catatan tinkering kali ini. Di lain kesempatan saya upayakan catatan untuk compiler, IDE lain. Juga uji coba pada sistem Microsoft Windows.