Thursday, December 20, 2018

The error that appears in the Linux version of Atollic TrueStudio

The first time I used it, I thought that it would be as simple as adding an example of an existing project. but it's not that simple. there are two things that need to be considered even though they have nothing to do with the code directly, such as:

- Use of a slash (/) and backslash (\) symbols. This is found in the include file settings, on the Linux OS using the backlash (\) symbol.

- Use of backlash (\) symbols, at setting -> clinker -> general -> linker script. If it doesn't, it can cause an error when compiling.

Friday, August 31, 2018

HardFault_Handler pada STM32 pada project IDE SW4STM

Pada project yang di buat dengan SW4STM terkadang kita mengalami HardFault_Handler saat akan melakukan interupt. Hal ini terjadi karena file .s nya kurang tepat. masalahnya pada project yang di create oleh SW4STM menggunakan file default bernama startup_stm32.s, ketika dilihat di dalamnya memang alamat interrupt hendlernya kurang lengkap hal ini bisa langsung saja diganti dengan file yang sesuai (contoh : startup_stm32f030.s). file nya dapat di peroleh dari folder STM32F0xx_StdPeriph_Lib_V1.5.0 -->Libraries-->CMSIS-->Device-->ST-->STM32F0xx-->Source-->Templates-->gcc_ride7. atau sesuai dengan IDE yang digunakan (nama folder).

Thursday, March 1, 2018

Time to Market, Abstrakasi, development board, mikrokontroler dan Arduino

Tulisan ini sebenarnya ditujukan bagi orang awam dibidang elektronika atau mereka yang mempelajari embedded system dengan menggunakan board development arduino.
Isu klasik dibidang elektronika dan pengembangan perangkat adalah bagimana memotong atau memperingkas waktu pengembangan perangkat, atau istilah kerennya adalah time to market.
Sejak dulu para profesor dibidang elektronika terus berkarya untuk memperkecil time to market. Salah satu upaya yang dilakukan adalah dengan membuat sebuah development board yang mempermudah developer untuk mengimplementasikan rancangannya.

Jaman pengembangan primitif pun bergeser menjadi jaman pengembangan dengan absraksi yang lebih tinggi yaitu untuk implementasi sebuah rancangan, dapat membuat sebuah rangkaian rutin program dan meletakkannya dalam satu komponen untuk diproses. Komponen pemrosesan rutin program ini bisa diibaratkan dengan prosesor. Sebuah prosesor memiliki komponen utama yaitu Register, ALU dan CU.

Untuk menggunakan prosesor, diperlukan sarana antarmuka agar hasil komputasi dapat ditampilkan, dalam hal ini display. Sarana antarmuka yang dimaksud dapat berupa Pin atau jalur yang terhubung dengan driver dari sebuah display.

Fasilatas antarmuka yang sebelumnya berada diluar prosesor, dipindahkan kedalam paket sebuah prosesor, salah satu alasannya karena teknologi semikonduktor yang semakin kecil sehingga tersedia ruang yang cukup untuk menambahkan fitur antarmuka. Prosesor yang ditambah dengan fitur antar muka disebut kontroler (mikrokontorler).

Baiklah, saya rasa cukup penjelasannya tentang latar belakan, abstraksi dan prosesor. Lanjut dengan Hal utama yang ingin saya serukan yaitu menyamakan bahasa dan istilah.
Cerita tentang development board, saat ini ada development board yang sangat populer dan menjadi tonggak sejara perkembangan perangkat embedded system. Perangkat yang saya maksud adalah ardunio.

Sedikit sejarah tentang arduino, perangkat ini mulai dikembangkan pada tahun 2003. Saat ini istilah atau sebutan arduino akan langsung mengarah pada sebuah development board. Padahal untuk mengembangkan perangkat dengan arduino kita memerlukan sebuah editor dan kompiler program (Arduino IDE) dan bootloader. Sehingga kata arduino dapat mengarah pada tiga makna yaitu, Arduino IDE, board aruino dan bootloader arduino.

Jika ada yang menyebutkan arduino adalah mikrokontroler, maka statment tersebut adalah salah, karena arduino menunjuk pada tiga hal diatas. Untuk menunjukkan hardware arduino ada baiknya menyebut arduino dengan istilah board arduino. Sementara untuk menyebutkan program arduino atau tempat koding, ada baiknya disebut arduino IDE. Dan yang terahir adalah bootloader, isitilah ini kurang digunakan karena ketika IC yang digunakan pada board arduino biasanya sudah dilengkapi dengan bootloarder arduino.

Bagi para pembaca, semoga dapat menggunakan istilah yang sesaui untuk menunjuk sebuah produk.

Terus apa bedanya Arduino dengan esp8266. Nah, statment ini menarik. Sebelumnya perlu dijelaskan bahwa arduino yang disebutkan pada kalimat pertama adalah menunjukkan pada board arduino. Perbedaan antara board arduino dengan esp8266 adalah esp8266 telah memiliki stack khusus (fitur pembeda) untuk komunikasi wifi, sementara board arduino perlu menambahkan shield.


Mungkin cukup sampai disini dulu penjelasannya. terima kasih sudah berkunjung..

Sunday, January 28, 2018

Kondisi yang saling berlomba (Race Condition)

Race Condition

Istilah Race Condtion memang sudah banyak dibahas oleh teman-teman yang suka menulis blog. Banyak juga gaya bahasa dan penulisan tentang topik ini coba disajikan oleh teman-teman tersebut. Secara keilmuan, semua yang ditulis mengenai arti dari istilah race condition adalah benar, yaitu kondisi yang saling berlomba (arti secara harafia).

Pada kesempatan ini saya tertarik membahas hal ini dari sudut pandang kelimuan saya yaitu sistem
tertanam, bahasa kerennya adalah embedded system. Baiklah, mari kita mulai.

Pengantar


Dalam beberapa blog dan literatur yang saya baca, menyebutkan bahwa race condition adalah kondisi dimana dua atau lebih proses mengakses satu memori. Mungkin menurut saya lebih tepatnya adalah kondisi dimana ada dua atau lebih proses yang saling berlomba mengakses satu memori yang sama. Mengapa satu memori ini menjadi target dari perlombaan?. Mari kita dekati pemahaman (istilah) tersebut dari kalimat sebelumnya.

Target perlombaan dalam embedded system adalah resource. Resource di sini bisa diartikan memori, atau batasan yang lainnya seperti antarmuka dengan modem gsm atau tampilan OLED dan lain sebagainya. Sebenarnya resource ini tidak harus diperebutkan jika hanya ada satu proses yang menggunakannya pada satu saat.

Hal yang ingin saya sampaikan adalah jika pada umumnya race condition adalah mengakses memori secara bersamaan, dalam embedded system diperluas lagi, yaitu istilah memori menjadi resource. Sehingga resource ini dapat berarti apa saja.

Pembahasan


Pada Embedded system, dampak race condition muncul ketika lebih dari satu proses yang aktif secara bersamaan. Task atau thread berarti proses dalam bidang RTOS. Sementara ISR juga adalah proses yang langsung dieksekusi jika terjadi interupt, disebut juga interupt handler.

Race condition di jelaskan dengan cukup sederhana oleh Miro Samek dalam video youtube pada link ini. Pada video tersebut di jelaskan tentang satu buah led yang diakses oleh dua proses, yaitu proses pertama bertugas untuk mematikan sementara proses kedua yang adalah interupt bertugas untuk menghidupkan. Kedua proses tersebut saling berkopetisi untuk mengakses led tersebut.

Analogi dari contoh proses led tersebut, jika diaplikasikan pada kendali tabung pendingin, Ketika interupt berfungsi untuk menyalakan tabung, sementara fungsi tersebut di nonaktifkan oleh proses pertama. Hal yang akan terjadi adalah karena tabung yang semakin pantas, maka lama kelamaan akan mengakibatkan ledakan.

Berikut ini adalah beberapa cara untuk menghindari race condition, Pertama adalah melihat lebih seksama melihat resource yang digununakan apakah resource yang akan diakses secara bersamaan masi bisa diakses ke bagian yang lebih kecil. Misalnya resource yang yang dimaksud adalah sebuah register, artinya adalah masi hal yang lebih kecil yang dapat diakses yaitu mengakses secara bit. Sehingga Bit yang digunakan oleh proses yang lain tidak terganggu.

Cara menghindar yang lain adalah dengan mutex. Mutex biasanya dijumpai pada sebuah RTOS atau fremework scheduler. Istilah lain dari mutex adalah semaphore bit. Proses yang terjadi pada mutex yaitu membatasi akses resource jika satu proses sedang menggunakannya atau sedang berlansung. Hal ini akan mencegah race condition karena proses yang sedang menggunakan resource tersebut tidak diganggu saat dia sedang berlangsung.

Penutup


Rice condition akan jarang ditemukan pada awal perangkat diaktifkan. Namun, setelah sistem tersebut berjalan cukup lama maka kemungkinan race condition dapat terjadi. Oleh karena itu sebaiknya mengantisipasi sejak awal dari pada terjadi hal hal yang tidak diinginkan.

Race condition juga tidak dapat terdeteksi oleh compiler. Jadi berhati-hati lah dalam membuat program dan ingat. Sesederhana apa pun design awal sistem kita, akan sangat membatu untuk melakukan proses troubleshoting dan debuging dikemudian hari.

Terima kasih untuk kunjuntannya di postingan pertama tahun ini... Salam