Yazılımın nerde takıldığını nasıl bulurum?

Başlatan yucatar, 07 Haziran 2024, 10:32:32

yucatar

Merhaba,
STM32 işlemcisinde çalışan bir yazılımım var, uzun ve karmşık bir yazılım. Program bazen bir yerde takılıyor taki enerjisini kesip verene kadar düzelmiyor ben bu takıldığı yeri bulmam için keilde debug modunun bir özeliği var mı? Debug modundayken aktif olarak hangi satırda işlem yaptığını görebilirmiyim.

Erol YILMAZ

Debug modda çalıştırıp takıldığını düşündüğün yerde STOP (veya PAUSE) dersen ilgili kod satırına gider imleç.

fahri-

Program bazen takılıyorsa, işlemci parazitten dolayı rastgele noktalarda da kitleniyor olabilir. Bu durumda işlemcinin kitlenmesinden kendi kendine kurtulması için WDT kurmak gerekir.

Okan AKÇA

Başka bir yöntem Seri port ile ilgili durumları Yazarsanız programın nerde takıldigini bulabilirsiniz

elektronik_0

Benzer şekilde, breakpoint kullanmadan bir kodun akış sırasında nerelerde olduğunu yavaşlatılmış bir simülasyon şeklinde görebileceğimiz, ya da bir çeşit kod ağacı şeklinde yazılı kodun diyagramını çıkarabilecek bir yöntem var mı?
Şu an şu fonksiyonda, şu an şu değişkeni güncelliyor gibi gibi. Program akışının beklediğimiz gibi çalışıp çalışmadığını takip edebilmek adına. Diyelim onlarca koşul var her birine breakpoint atmak mümkün değil. Akışı nasıl takip edebilirim?

yucatar

#5
Ben yazılımı erol hocamın dediği gibi durdurunca nerde takıldığını buldum. Projemde freertos mevcut bir tane task haberleşmeyi kontrol ediyor, anladığım kadarıyla parazit olduğunda HardFault hatasına geçiyor ve orda takılıyor normal çalışmada stack boyutu yeterli gözüküyor. Şimdilik RX pinine pull-up dirençi takıp deneme yapıcam. Sizin bu konuyla ilgili bir tavsiyeniz var mı?


08 Haziran 2024, 16:46:38

08 Haziran 2024, 16:46:21
Alıntı yapılan: elektronik_0 - 08 Haziran 2024, 09:34:53Benzer şekilde, breakpoint kullanmadan bir kodun akış sırasında nerelerde olduğunu yavaşlatılmış bir simülasyon şeklinde görebileceğimiz, ya da bir çeşit kod ağacı şeklinde yazılı kodun diyagramını çıkarabilecek bir yöntem var mı?
Şu an şu fonksiyonda, şu an şu değişkeni güncelliyor gibi gibi. Program akışının beklediğimiz gibi çalışıp çalışmadığını takip edebilmek adına. Diyelim onlarca koşul var her birine breakpoint atmak mümkün değil. Akışı nasıl takip edebilirim?

Keilde kodu satır satır ilerletebiliyorsunuz ama sistemin çalışma hızını etkileyeceği için en doğru çözüm uart dan bilgisayara veri göndererek izlemek.

M.Salim GÜLLÜCE

bir başka yöntem ise bir çıkışa led koyup hel alt programda belli adet yanıp sönme eklenirse görsel analiz ile sonuca gidilebilir.
1 rutin de 1 defa 2. rutinde 2 defa 3. rutinde 3 defa gibi.

fide

Her proses için 4 haneli bir tanım (sayısal yada alfanumerik) yapın.
O proses başlayınca eprom hafızada biryere bu tanımı yazın yada uart üzerinden yazdırın.
Program biraz daha yavaş çalışır ama hangi prosesye kodun patladığını takip edebilirsiniz.

Hatta uarttan gönderirseniz dinleyecek olan terminal programa saat/tarih eklenebilir yada veritabanı/text dosyayı log tutabilir
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

sagamenn

devrenize harici 232 bağlayın  şüphelendiğiniz yerlerden veri alın veya @M.Salim GÜLLÜCE 'nin dediği gibi de uygulanabilir yada başlarım  böyle sıkıntılı yazılıma der oturur kodu tekrar baştan yazarsın  arkadaşlar güzel örnekler vermiş seç beğen al  kardeşim

MrDarK

Freertos kullaniyorsan percipio trace analyserda deneyebilirsin
Picproje Eğitim Gönüllüleri ~ MrDarK