Debugging STM32F103C8T6 menggunakan SW4STM32 + OpenOCD + STLINK

Ini adalah bagian keempat mengenai penggunaan SW4STM32. Bagian sebelumnya telah disebutkan di tulisan ini. Setelah sebelumnya berhasil melakukan instalasi SW4STM32, di sini akan diungkapkan catatan mengenai bagaimana mempergunakannya untuk proses debugging.

Untuk kelancaran proses berikutnya; lakukan terlebih dahulu instalasi ST-Link V2 dan OpenOCD. Instalasi perangkat lunak untuk ST-LinkV2 sudah dibahas di tulisan sebelumnya [link].  Untuk OpenOCD pun proses instalasinya umumnya tidak terlalu sulit, terutama untuk sistem berbasis Microsoft Windows. Untuk sistem GNU/Linux setelah mengunduh file instalasinya di link ini, maka lakukan proses berikut:

cd ~/openocd-0.9.0
sudo ./configure
sudo make
sudo make install

Kembali ke SW4STM32:

OCDdebug001Gambar 1. Awal pengaturan untuk debugging.

OCDdebug002Gambar 2.

Jika cara seperti pada Gambar 1 dan Gambar 2 menghasilkan pesan keesalahan, maka cobalah cara seperti Gambar 3.

OCDdebug003Gambar 3.

OCDdebug004Gambar 4. Pada proses debugging untuk pertama kali, diperlukan pengaturan seperti ini.

OCDdebug005Gambar 5.

OCDdebug006Gambar 6.

OCDdebug007Gambar 7. Scroll ke bawah hingga seperti pada Gambar 8.

OCDdebug008Gambar 8.

OCDdebug009Gambar 9.

Selain mempergunakan konfigurasi Ac6, pengguna bisa juga mempergunakan cara debugging lain seperti pada Gambar 10.

OCDdebug010Gambar 10.

OCDdebug011Gambar 11.

OCDdebug012Gambar 12.

OCDdebug013Gambar 13.

OCDdebug014Gambar 14.

OCDdebug015Gambar 15.

Nah sekarang pengguna sudah memilki dua konfigurasi debugging yang siap dipergunakan. Tetapi sebelum melakukan mencoba upaya debugging dengan bantuan OpenOCD + STLINK, perlu dilakukan perubahan kode uji. Gambahkan di bagian endless loop dengan kode uji coba blinking led:

  while (1)
    {
//      HAL_GPIO_TogglePin (LedMerah_GPIO_Port, LedMerah_Pin);
      HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
      HAL_Delay (100);
      /* USER CODE END WHILE */
      /* USER CODE BEGIN 3 */
    }

Hubungkan dongle ST-LINK V2 ke port USB di komputer.

wp-1472023019498.jpegGambar 16.

Lalu aktifkan OpenOCD dengan baris perintah berikut (sesuaikan letak file dengan konfigurasi di komputer pengguna):

$ reset; openocd -f ~/openocd-0.9.0/tcl/interface/stlink-v2.cfg -f ~/openocd-0.9.0/tcl/target/stm32f1x.cfg

Saat aktif OpenOCD pada terminal seperti pada Gambar 17.

OCDdebug016Gambar 17. OpenOCD menunggu koneksi.

Jika nanti dengan konfigurasi standard yang diatur oleh SW4STM32 gagal berfungsi dengan baik, salah satu upaya solusi adalah dengan membuat file konfigurasi baru yang akan diacu oleh setting dalam SW4STM32. Konfigurasi dalam file STM32F103SW.cfg yang perlu diganti (di dalam file lain) adalah: reset_config srst_nogate.

# This is an STM32F103SW 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_stlink.cfg]

# use hardware reset, connect under reset
#reset_config srst_only srst_nogate
reset_config srst_nogate

Jika papan mikrokontroler STM32F103C8T6 tidak dapat diprogram atau di-debug, salah satu cara adalah dengan melakukan erase. Ubah posisi jumper seperti pada Gambar 18.

wp-1472127176031.jpegGambar 18.

Lalu seperti pada Gambar 19 perintah erase dapat dilakukan setelah tombol reset pada papan ditekan dalam keadaan konfigurasi jumper seperti pada Gambar 18.

OCDdebug017Gambar 19. st-flash erase

Ok, sekarang kembali ke Gambar 16, diasumsikan semua kondisi normal dan posisi jumper sudah kembali ke posisi seperti pada gambar. Dilanjutkan pada posisi monitoring seperti pada Gambar 17. Maka proses debugging siap dilakukan dari dalam SW4STM32.

OCDdebug018Gambar 20.

Pada pilihan konfigurasi seperti pada Gambar 20, debugging terkadang dapat saya lakukan tanpa perlu melakukan aktifasi OpenOCD eksternal. Tetapi untuk amannya maka tetap pergunakan OpenOCD eksternal.

OCDdebug019Gambar 21. [Klik gambar untuk memperbesar tampilan]

Hal  yang sama juga diperoleh jika mempergunakan konfigurasi GDB Hardware Debugging.

Berikut adalah video singkat proses uji debugging.

[intense_video video_type=”youtube” video_url=”https://www.youtube.com/watch?v=6MtAfxhhEsE”]

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.