🇬🇧 You can read the English version of this article here.

Gömülü sistemlerde telemetri ancak iki koşul birlikte sağlandığında gerçekten işe yarar: cihaz tarafında üretmesi ucuz olmalı, PC tarafında ise anlamlandırması kolay olmalıdır. Bu STM32F429I-DISC1 projesinde observer katmanını bu fikir üzerine kurdum. Mikrodenetleyici yalnızca metrik üretir; parse etme, son durumu tutma, geçmiş oluşturma ve görselleştirme işi PC tarafındaki bridge servisinde kalır.

Mimari, kartın elindeki pratik imkanları kullanıyor. STM32 tarafından USART1 ile veri gönderilebilir ve bu hat kart üzerindeki ST-LINK Virtual COM Port üzerinden bilgisayara taşınır. Mevcut debug akışını bozmamak için SWO/ITM text çıkışı da geriye uyumlu olarak desteklenir. Tarayıcı STM32 ile doğrudan konuşmaz; yerel Python bridge üzerinden REST endpointlerine ve WebSocket streamine bağlanır.

Buradaki ana karar dashboard’u tek bir paket tipine kilitlememekti. Mevcut firmware’in ürettiği video_metrics payload’u hâlâ destekleniyor: FPS, render süresi, CPU load, SRAM, SDRAM ve flash kullanımı okunuyor. Fakat UI tamamen bu tek formata gömülü değil. Gelen her numeric alan normalize edilip id, label, value, unit, kind ve category bilgisi olan bir metrik descriptor’una çevriliyor. Böylece yarın temperature.mcu_c veya dma2d.fill_rate_mp_s gibi yeni alanlar geldiğinde frontend kodunu baştan yazmak gerekmiyor.

Bridge tarafında birden fazla veri kaynağı ekledim. Kod ST-LINK VCP için serial okuyabiliyor, bir komutun stdout çıkışını tüketebiliyor, TCP stream okuyabiliyor, stdin ile test edilebiliyor, sentetik demo veri üretebiliyor ve mevcut ST-LINK SWO yolunu da çalıştırabiliyor. Bu sayede donanım yokken UI geliştirilebilir; kart bağlandığında aynı dashboard gerçek metrikleri okumaya devam eder.

Transport tarafında iki format destekleniyor. JSON veya NDJSON, firmware hızla değişirken okunabilir ve debug etmesi kolay bir yol sağlar. Mimari dokümandaki binary TELM frame ise daha verimli aktarım için hazırdir: magic header, version, type, payload length, sequence number, uptime, payload ve CRC16-CCITT alanlarından oluşur. Bridge CRC kontrolü yapar, sequence gap yakalarsa dropped packet sayacını artırir. Böylece hatadaki belirsizlik de dashboard metriğine dönüşür.

UI tarafında ilk ekranda bugün önemli olan metrikler sabit kartlar olarak durur: FPS, CPU, render süresi, RAM, SDRAM ve flash. Bunun yanında normalize edilmiş metrik listesinden dinamik kartlar ve grafik seçim menüsü üretilir. Böylece hem STM32 video workload’u için odakli bir ekran var, hem de yeni metric aileleri geldikçe tasarım kırılmadan genişleyebiliyor.

Sonuç olarak firmware’i web server’a çevirmeden küçük ama genişleyebilir bir observability katmanı kurmuş olduk. STM32 render ve ölçüm işine odaklanır; PC bridge ise zamanla loglama, replay, SQLite session veya daha detaylı analiz özelliklerine büyüyebilir. En önemlisi, artık yeni metrik eklemek dashboard tasarımı değil, firmware veri sözleşmesi kararı haline geldi.

GitHub Deposu

STM32 observer firmware ve telemetri dashboard bridge kaynak kodlarına GitHub üzerinden erişebilirsiniz: