4 Temmuz 2018 Çarşamba

STM32 ile UART üzerinden program yükleme

Eğer elinizde SWD destekli bir debugger yoksa bir mikrodenetleyiciye yazılım atmak çok zor bir hale gelebiliyor. Kişisel tavsiyem bir adet J-Link v9 ve sonrası bir debugger almak. Bu ürünün klonlarına da ulaşmak mümkün. Kullandığım bütün mikrodenetleyici geliştirme araçları (Embitz, Atollic, vb.) J-Link'e destek veriyor. Genelde OpenOCD kullanan debugger lar ile de çalışabilirsiniz ama performans olarak ULINK ya da J-Link'in native modundan geride kalıyorsunuz. Düşük fiyatı ile popüler olan pratik bir kart olan bluepill (geliştirici terimi artık standart haline gelmiş) ile SWD destekli debugger kullanmak gerekiyor. Sadece ST serisi işlemcilerle çalışacaksanız STLink debugger edinmek en mantıklısı. Bluepill kartı üzerinde STM32F103C8T6 işlemcisi var. Bu işlemci 64KB sabit belleğe (program belleği) ve 20KB SRAM (geçici bellek) sahip olan Cortex M3 tanımlarına göre üretilmiş bir işlemci. Ek olarak üzerindeki USB bağlantısı da birçok çalışma için esneklik sağlıyor. Bu işlemcinin çalışma hızı ise 72 MHz. bluepill kartı üzerinde SWD ile ST-Link v2 testini yapmıştım. Bu debugger Arduino STM32 ortamı ile çalıştığınızda da direkt program upload işlemi için kullanılabiliyor.

İlgili resim

Fakat elinizde bu debugger olmadan da bluepill e program atabilirsiniz. Ben bu işlem için mbed bulut derleyicide STM32F103 için hazırladığım programı USART modülü üzerinden işlemciye yüklüyorum. Bu konunun detayları için aşağıdaki bağlantıya başvurabilirsiniz:

https://os.mbed.com/users/hudakz/code/STM32F103C8T6_Hello/

Bu işlem için RTS ve DTR pinleri açıkta olan bir USB-Seri dönüştürücüye ihtiyaç var. Ben sparkfun üretimi USB-Seri dönüştürücü kullanıyorum. Bluepill ile dönüştürücünün bağlantıları şu şekilde:

RTS: R (Reset)
DTR: BOOT0 (Bootloader Setting)
RXD: PA_9
TXD: PA_10

Bu karta program atmak için ise komut satırından çalışan stm32flash aracını kullanacağız. Bu aracı https://sourceforge.net/projects/stm32flash/ bağlantısından indirebilirsiniz.

mbed bulut derleyiciden indirdiğiniz ikili program dosyasını aşağıdaki komut satırı ile karta yüklüyoruz.

stm32flash -i -R -i rts,-rts,-dtr,dtr:rts,-dtr,dtr -g 0x8000000 -b 921600 -w app.bin COM7 Bu işlem ile aslında işlemcinin BOOT0 ucunu lojik "1" seviyesine çekip RESET ucu ile yeniden başlatıyoruz. Bu şekilde işlemci UART Bootloader modunda başlıyor. Geriye kalan UART üzerinden programın ikili halini bayt bayt işlemciye aktarmak. Ben yükleme hızı olarak -b parameteresi ile 921600 BAUD kullandım. Eğer sorun yaşarsanız 115200 hızından başlayarak da farklı hızları deneyebilirsiniz. Programı belleğe yazma işini bootloader yazılımı yapıyor. Başarılı yükleme sonrasında yapılan ikinci reset işlemi program otomatik olarak çalışmaya başlıyor. İşte ekran çıktısı:



Hiç yorum yok:

Yorum Gönder