FreeRTOS - Segger SystemView Task süreleri anlamsız ve yüksek çıkıyor.

Başlatan apsis, 28 Haziran 2019, 19:05:08

apsis

STM32F091RC ile FreeRTOS denemeleri yapıyorum. Eğitim videosunda F446RE kullanılıyor.
İzlediğim UDEMY videosunda Task sürelerini Segger'de göstermek için DWT_CYCCNT kullanılıyor. Tabi bu CM3 ve üzeri için. Ancak bu CM0'da yok.

Bunun için SEGGER_SYSVIEW_X_GetTimestamp() fonksiyonu kullanılarak Task süreleri ölçülüyor. Fonksiyonu Segger'in pdf'sinden çektim.

https://www.segger.com/downloads/jlink/UM08027

Tabi bu fonksiyonda zaman değişkeni için SEGGER_SYSVIEW_TickCnt kullanılarak systick'de arttırmamı istiyor .
( Sayfa 73).

Bunu yaptım ancak Task süreleri bazen mikro saniyeler bazen saniyeler tuttuğunu gösteriyor. Ancak VCP'den programı izlediğimde aksamadan su gibi aktığını görüyorum.

Aynı programı STM32f429'da denedim segger gayet güzel gösterdi (DWT->CTRL |= (1 << 0); ile CYCCNT aktif ediliyor) . Ancak F0 için durum farklı.

Kodları ekleyeyim desem çok karmaşık.

İlk foto F0 için, ikinci foto F4 için.






"Makineye Beyin" MEKATRONİK

apsis

Sorunu çözdüm. Arttırmam gereken değişkeni port.c de bulunan ve systick görevi yapan fonksiyonun başına yazmam gerekiyormuş. Seggeri systemviwer ı öneririm. Tüm rtos programınız stlinke jlink bootloader  yükleyerek programla realtime test etme imkanı da sunuyor.
"Makineye Beyin" MEKATRONİK