UglySTM32 – Just for Fun!

“Beauty is only skin deep, but ugly goes clean to the bone.”
― Dorothy Parker

Melakukan “forking” STM32-base dan membuat UglySTM32. Masih tahap awal dan ujicoba. UglySTM32 intinya hanya menggunakan CMSIS! Tanpa library HAL dan LL. Struktur direktori saya modifikasi sekaligus upgrade CMSIS dari upstream.

Untuk UglySTM32 hanya tersedia CMSIS tipe STM32F4xx saja. Yach agar “core system” sederhana (dan tetap jelek :). Menambah adalah satu hal, melakukan “maintenance” adalah perjuangan setengah mati lol. Cukup mudah untuk menambah CMSIS untuk tipe F1 dan F7 misalnya.

Untuk memakai UglySTM32, git clone UglySTM32 dan download Toolchain arm-none-eabi jika belum mempunyai. Pilih toolchain yang pre build dan ekstrak di direktori tools.

___________________________________

Karena menggunakan Makefile, maka development mudah dilakukan dengan editor apa saja (termasuk editor macam Geany, VIM, MCEDIT, dan Nano).

Untuk toolchain saya menggunakan gcc arm-none-eabi version 10.3. Sedang library CMSIS Core upgrade ke versi 5.6.0 dan untuk F4 ke firmware versi 1.27 dari STM32Cube.

Linker dan startup tetap menggunakan punya STM32-base. Kedua faktor ini mesti kompatibel. Tantangan kedepan adalah merubah keduanya agar bisa langsung upgrade ke upstream.

Konfigurasi Linker dan Startup relatif sama dari waktu ke waktu. Kecuali Ada tambahan chip baru dari STM32. File ini bisa di “generate” lewat STM32CubeIDE. Terlebih jika membutuhkan linker untuk RAM ( debug di RAM secara intensif). Tentu Anda dapat membuat file ini sendiri jika ingin.

Cara menggunakan UglySTM32 tinggal clone saja. Nama directory UglySTM32 bisa diganti sesuai keinginan. Misal nama tetangga Anda yang bawel :). Yang penting struktur direktori di dalamnya tetap. Jika ingin merubah, modifikasi file common.mk (terletak pada direktori UglySTM32/base/make).

Toolchain tinggal download dan instal pada direktory tools. Atau gunakan toolchain yang sudah ada pada sistem. Sebagai contoh : PC saya menggunakan toolchain arm-none-eabi versi 10.2 untuk keperluan lain. Sedang untuk UglySTM32 saya pakai versi 10.3 pre-build.

Untuk cek toolchain yang ada, ketik $which arm-none-eabi-gcc maka akan ditunjukkan path dari toolchain tersebut. Untuk mengetahui versi, ketik $arm-none-eabi-gcc -v.

Toolchain versi 10.3.1 ini saya instal di /home/mic/ugly/tools/ Sedang untuk versi 10.2 di /usr/bin. Kedua versi ini bisa dipakai. Tinggal tentukan mana yang mau dipakai. Gunakan path lengkap saat memanggil toolchain tambahan agar tidak salah sasaran :).
Jika menempatkan toolchain dilain folder, sesuaikan path di atas. File common.mk ada di direktori UglySTM32/base/make
Default bahasa pemrograman adalah C. Jika ingin merubah ke C++, tinggal hilangkan tanda # dan beri # pada bagian CC. CC merujuk ke C, sedang CXX merujuk ke C++. Cek file common.mk pada direktori base/make

Gambar di bawah contoh source code untuk blink led ala CMSIS. Editor menggunakan VIM. Tentu Anda dapat menggunakan IDE modern apa saja.

Source code – Blink LED

Gambar di bawah saat kompilasi dengan instruksi $make. Jika ingin, dari barisan panjang bisa dicek apakah flag dari kompiler ikut terpakai atau tidak.

Catatan : CC untuk menjalankan gcc / C, CXX untuk menjalankan g++/C++ , CFLAGS untuk Flag C, CXXFLAGS untuk flag C++, CPPFLAGS Flag untuk C dan C++.

Kombinasi untuk kompile gcc –> CC – CPPFLAGS – CFLAGS -Target

Kombinasi untuk kompile g++ –> CXX-CPPFLAGS-CXXFLAGS -Target

$Make flash
$make clean

Ada 2 file dalam berurusan dengan Makefile, yaitu common.mk. Satu terletak di direktori /base/make, satu lagi di direktori /base/make/STM32F4xx. Untuk common.mk pada direktori /base/make, semua flag diasumsikan bekerja untuk semua tipe STM32. Entah F1,F3, F4, maupun F7. Jika ingin memodifikasi bagian flag, pertimbangkan jika flag tersebut berlaku untuk semua tipe STM32. Misalkan -mfpu tidak semua tipe STM32 mempunyai FPU (Floating Point Unit) seperti F1.

Jika ingin menambah flag tambahan untuk tipe tertentu, misal F4, tambahkan di bagian common.mk /base/make/STM32F4xx. Pertimbangkan, kedepannya Anda akan menambah tipe STM32, maka biarkan bagian common.mk di /base/make berlaku untuk semua.

Saya menambahkan opsi flag -mfloat-abi=hard. Ikutan saja di bagian ini :).

Untuk file Makefile yang terletak di projects/yourproject/src, sesuaikan nama device dengan target STM32 . Cek penamaan file di /base/linker/STM32F4xx. Semisal menggunakan STM32F401CCU, maka DEVICE = STM32F401xC. Jika menggunakan STM32F407VG6, maka DEVICE = STM32F407xG.

Info lain cek STM32-base. Terlebih bagian Github. Untuk contoh pemrograman bare metal dengan CMSIS, cek DK7IH. Ada banyak tutorial di situs tersebut. Untuk contoh langsung, cek Github dari DK7IH. Embedded expert.io juga banyak memberikan tutorial mengenai STM32 dan CMSIS.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s