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”]- http://codelite.org/LiteEditor/QuickStart
- http://codelite.org/AddNewCompiler/AddNewCompiler
- http://codelite.org/LiteEditor/BuildSystem
- http://codelite.org/LiteEditor/ProjectSettings
- http://mithatkonar.com/wiki/doku.php/microcontrollers/avr_ides_for_linux
- http://electronics.stackexchange.com/questions/103414/msp430-blinking-led
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;
- processors.wiki.ti.com/index.php/MSP430_LaunchPad_LED_Timer
- http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_Drive_LED
- http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#project0
- https://gist.github.com/trtg/4451982
- http://electronics.stackexchange.com/questions/103414/msp430-blinking-led
- https://www.ocf.berkeley.edu/~ykhan/msp430-blink-the-led/
- https://www.badprog.com/electronics-msp430-managing-p1dir-and-p1out-registers-to-blink-the-red-and-green-leds
- https://ackspace.nl/wiki/MSP430
- http://mitchtech.net/cross-compiling-for-ti-msp430-launchpad/
- http://forum.allaboutcircuits.com/blog/msp430-tutorial-getting-started.543/
- http://www.badprog.com/electronics-msp430-switching-on-a-led-with-a-breadboard
- http://www.badprog.com/electronics-msp430-using-p1out-pins-and-leds-to-count-in-binary
- http://www.badprog.com/electronics-msp430-using-p1out-and-p2out-registers-of-the-launchpad-to-manipulate-leds-with-bit
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:
- Automate programming the MSP430 Launchpad on Linux using Expect
- Programming the MSP430 Launchpad on Ubuntu
- MSP430 LaunchPad Energia development on Linux
- How to setup MSP430 Launchpad in ubuntu
- MSP430-Toolchain
- Cross-Compiling for TI MSP430 Launchpad
- ———————————————————
- GCC – Open Source Compiler for MSP Microcontrollers
- Building MSP430-GCC From Sources
- MSP430 GCC User’s Guide [pdf file]
- Getting started with TI’s MSP430-gcc and the MSP430 Launchpad on Linux
- Lesson 2: Setting up the toolchain
- First Steps with MSP430FR5969 Launchpad using TI’s msp430-gcc Toolchain
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]
Gambar 11.