STM32 için DFU (Device Firmware Upgrade)

STM32 serisi işlemcilerin yazılımı USB üzerinden güncellenebilir. Bu projede, USB organizasyonu tarafından tanımlanmış bir yöntem olan DFU, STM32 miniDev’e uygulanmıştır.Device firmware upgrade (DFU), USB organizasyonu tarafından tanımlanmış (http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf) bir yeniden programlama (güncelleme) yöntemidir. Üzerinde USB arayüzü bulunan cihazların herhangi bir programlayıcıya ihtiyaç duymadan var olan USB konnektöründen yeniden programlanabilmesini sağlar. Yani, USB ile çalışan bir bootlader da denilebilir.

DFU yöntemi STMicroelectronics firmasının bir tanımlaması olmadığından diğer firmaların mikroişlemci/mikrodenetleyicilerine de uygulanabilir. Burada anlatılacak olan uygulama STMicroelectronics’in dökümanlarından ve yazılımlarından yararlanılarak STM32 miniDev‘de geliştirilmiştir. Uygulama çerçevesinde yapılanlar üç başlık altında incelenecektir. Bunlar donanım, donanım yazılımı ve bilgisayar programıdır.

1. Donanım

STM32 miniDev uygulamalarında, STM32 miniDev’in HID olarak çalışması sağlanmıştı. Hazırlanan bu donanıma bir buton eklenmiştir (PB15: JP7 konnektörünün 13. pini). Bu buton ile DFU mod, application mod (normal çalışma modu) seçimi yapılacaktır.

BOOT0 ve BOOT1 pinleri GND konumunda olacaktır. JP2 (BOOT0) ve JP1 (BOOT1)’de jumper 2 ve 3 nolu pinleri kısa devre yapacak şekilde takılmalıdır.

2. Donanım Yazılımı

Donanım yazılımı konusu aslında iki bölümde incelenmelidir. Bunlardan birincisi DFU yazılımı, yani bootloader yazılımıdır. İkincisi ise application yani normal çalışma anında çalışması istenen yazılımdır.

2.1. DFU Yazılımı

STMicroelectronics’in USB özelliğine sahip işlemcileri için geliştirdiği STM32F10xxx USB development kit (UM0424) yazılım paketi içerisinde örnek DFU yazılımı bulunmaktadır. Bu paketi indirmek için: www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/um0424.zip

Bu paket için hazırlanmış user manual’i indirmek için: www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00158241.pdf

DFU yazılımı STM3210B-EVAL/STM3210E-EVAL (STMicroelectronics’in geliştirme kitleri) için yazılmıştır. Bunu STM32 miniDev’e adepte etmek mümkündür. Bunun için yapılması gerekenler:

- UM0424.zip, UM0424 klasörüne unzip yapılır.

- \UM0424\USBLib\demos\Device_Firmware_Upgrade\project\RVMDK\ klasöründeki Keil projesi açılır.

- Target seçimi için Select target’tan STM3210B-EVAL seçilir. İşlemci seçimi için Project -> Options for Target ‘STM3210B-EVAL’ ile STM32F103C8 seçilir. Target olarak STM3210B-EVAL seçilmesinin nedeni, STM32 miniDev devresinde kullanılan işlemcinin (STM32F103C8), STM3210B-EVAL’de kullanılan işlemci gibi (STM32F103VB) medium-density olmasıdır.

- \UM0424\USBLib\demos\Device_Firmware_Upgrade\include\platform_config.h header dosyasında, STM3210B-EVAL’i seçmek gerekir. Bunun için #define USE_STM3210B_EVAL satırının comment’i kaldırılır, #define USE_STM3210E_EVAL satırı comment’lenir.

- Yine platform_config.h’da #define    DFU_ENTER_PIN    GPIO_Pin_15 yapılır. Buton PB15′e bağlandığı için bu değişikliğe ihtiyaç vardır. Eğer buton başka bir portun pinine bağlacaksa #define    DFU_ENTER satırı da uygun şekilde değiştirilmelidir.

- Burada anlatılan uygulamada USB disconnect moduna getirilmiyor. Eğer böyle bir durum varsa platform_config.h’da #define    USB_DISCONNECT_PIN satırı da kontrol edilmelidir.

- Proje derlenir ve Ulink/Ulink2/Ulink-me ile STM32 miniDev’e yüklenir.

2.2. Application Yazılımı

Application yazılımı, yukarıda anlatılan DFU yazılımı tarafından mikroişlemciye yüklenecek olan yazılımdır. \UM0424\USBLib\demos\Device_Firmware_Upgrade\binary\template project\RVMDK\ klasöründe örnek bir yazılım vardır.

STM32 miniDev uygulamalarında, DS2 LED’inin sürekli yandığı ve DS3 LED’inin flash yaptığı bir uygulama (GPIO Uygulaması) anlatılmıştı. Bu uygulamayı application yazılıma dönüştürmek için yapılması gerekenler:

- DFU yazılımı 0×8000000 adresinden başlar. Application yazılımı 0×8003000 adresinden başlamalıdır.

- Project -> Options for Target sayfasında bulunan Output bölümünde Create HEX File seçilir.

- Project -> Options for Target sayfasında bulunan Linker bölümünde Use Memory Layout from Target Dialog seçilir.

- STM32_Init.c’de vector table adresi 0×8003000 yapılır. Bunun için ilgili satırlar aşağıdaki gibi değiştirilmelidir.

#define __NVIC_SETUP             1
#define __NVIC_USED              0×00000001
#define __NVIC_VTOR_VAL          0×00003000

- Bu değişiklikler yapıldıktan sonra proje derlenir. Derleme sonucunda \GPIO_STM32miniDev\obj\ klasörü altında GPIO_STM32miniDev.hex dosyası oluşur.

- Keil’da yapılan derleme sonucu oluşan iki farklı firmware dosyası vardır, bunlardan biri .axf diğeri .hex uzantılıdır. (Keil üzerinden Ulink ile program yüklerken .axf uzantılı olan kullanılır.) Ancak DFU ile firmware’i yüklemek için bazı ilave bilgiler gerekir, .axf ve .hex uzantılı dosyalar bu bilgileri içermez. Bunların yerine DFU dosya yapısında bir firmware kullanılmalıdır.

- Derleme sonucu oluşan .hex uzantılı firmware’i .dfu uzantılı hale getirmek için DFU File Manager kullanılır.

- DFU File Manager, STMicroelectronics tarafından hazırlanmış DfuSe program paketinin (UM0412) bir parçasıdır. İndirmek için: www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/um0412.zip

Programın user manual’ini (UM0412, Getting Started with DfuSe USB device firmware upgrade) indirmek için: www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00155676.pdf

- UM0412.zip ile indirilen setup (DfuSe_Demo_V3.0_Setup.exe) bilgisayara kurulur.

- DfuSe programının bir parçası olan DFU File Manager çalıştırıldığında (Başlat -> Programlar -> STMicroelectronics -> DfuSe -> DFU File Manager) açılan pencerede I want to GENERATE a DFU file from S19, HEX or BIN files seçilir.

Daha sonra açılan pencereden S19 or HEX butonu tıklanır ve GPIO_STM32miniDev.hex dosyası seçilir.

Generate butonu tıklanarak GPIO_STM32miniDev.dfu dosyası oluşturulur. Böylece GPIO uygulaması, bir sonraki bölümde anlatılacak DfuSe Demonstration programına uygun hale getirilmiştir.

GPIO Uygulamasının DFU’ya uygun halini indirmek için tıklayınız.

3. Bilgisayar Programı

Application programına ait firmware’i (.dfu uzantılı), USB üzerinden bilgisayara yüklemek için DfuSe Demonstration programı kullanılır. (Bir önceki bölümde bu program bilgisayara kurulmuştu.) Bu aşamada, 2.1. Bölümde anlatılan DFU yazılımının STM32 miniDev’e yüklü olduğu varsayılır.

Bu bölümde öncelikle DFU ile ilgili driver’lar yüklenecek ardından application programının donanıma yüklenmesi sağlanacaktır. Bunun için yapılması gerekenler:

- STM32 miniDev bilgisayarın USB portuna takılır. İşletim sistemi (windows) USB cihazı tanır ve ardından ilgili driver’ların yüklenmesini ister. DFU yönteminin çalışması için bilgisayarın donanımı uygun şekilde tanıması gerekir, bu nedenle driver’lara ihtiyacı vardır. Driver’ların yükleme işlemi user manual’de (UM0412) detaylı şekilde anlatılmıştır.

- Driver’lar yüklendikten sonra, STM32 miniDev, işletim sistemi tarafından STM Device in DFU Mode şeklinde tanınır.

- DfuSe Demonstration programı çalıştırılır (Başlat -> Programlar -> STMicroelectronics -> DfuSe -> DfuSe Demonstration).

- STM32 miniDev’in bilgisayara bağlandığı USB kablosu çıkarılır. PB15′e bağlı bulunan butona basılı tutularak USB kablosu bilgisayara takılır. Böyle DFU moduna girilir. (PB15 = 0: DFU Mode, PB15 = 1: Application Mode)

Cihaz DFU modda tanınmışsa programa ait ekran görüntüsü aşağıdaki gibi olacaktır (1 numaralı kırmızı çerçeve).

- Application yazılımını yüklemek için, ekran görüntüsündeki 2 numaralı kırmızı çerçevede görülen Optimize Upgrade duration seçili olmalıdır. Choose butonu ile yüklemek istenilen .dfu uzantılı firmware bulunur ve Upgrade butonu ile yükleme işlemi yapılır. Daha sonra Verify butonu ile yükleme işlemi kontrol edilir.

- Application yazılım doğru bir şekilde yüklendiyse File correctly loaded mesajı (4 numaralı kırmızı çerçeveyle gösterilen yerde) görülür ve yükleme işlemi tamamlanmış olur.

- Bu aşamadan sonra STM32 miniDev bilgisayara tekrar bağlandığında (buton basılmıyorsa) artık application yazılım çalışacaktır.

- DfuSe Demonstration programı ile donanıma firmware yüklenebildiği gibi ayrıca donanımda bulunan firmware upload edilebilir. Bunun için ekran görüntüsündeki 3 numaralı kırmızı çerçeveli bölüm kullanılabilir.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>