CM7 Hard Fault Analizi

Başlatan volkanunal, 28 Şubat 2020, 14:06:35

volkanunal

Kullanılan IDE : Keil

Merhabalar, hard faulta düşme durumlarında nasıl bir analiz gerçekleştirilmeyi düşme gerçekleşmeden önce yapılan operasyona nasıl ulaşabilirim.

Bu yazıyı buraya yazmadan önce nerelerden bilgi edinmeye çalıştığımı aşağıda belirtiyorum.

1-) Hardfault durumu gerçekleştiğinde, Core registerleri inceledim oralardan bir çıkarım yapmaya çalışarak disassembly tarafından kontrol sağladım. Ancak yolumu kaybettim.

2-)Hardfault'a düşme durumuna sebebiyet veren fault mekanizmaları inceledim ve sorun "BUS FAULT", bus faulta sebebiyet olarakta "PRECISERR ve BFARBVALID" registerları set oluyor.

BFAR registerinin degeri -> 0x315f49C4
CSFR registerinin degeri -> 0x82 (BFSR)

olmayan bir adrese erişim sağlamakta.

3-) Şu notu referans alarak bazı kontroller sağladım ancak sonuca ulaşamadım.
https://www.segger.com/downloads/application-notes/AN00016

4-)Keil tarafında sunulan Call Stack+Locals penceresinden düşmeden önce girdiği modülü bakmaya çalıştım ancak göstermedi. Çalışan kodu herhangi bir yerde durduğumda, belli bir diagnostic çıkarıyor ama fault durumunda çıkarmadı.


Core registerlarından bir şeyler çıkarabileceğimi düşünmekteyim ama bir akla daha ihtiyacım var galiba.




volkanunal

Alıntı yapılan: volkanunal - 28 Şubat 2020, 14:06:35Kullanılan IDE : Keil

Merhabalar, hard faulta düşme durumlarında nasıl bir analiz gerçekleştirerek, düşme gerçekleşmeden önce yapılan operasyona nasıl ulaşabilirim.

Bu yazıyı buraya yazmadan önce nerelerden bilgi edinmeye çalıştığımı aşağıda belirtiyorum.

1-) Hardfault durumu gerçekleştiğinde, Core registerleri inceledim oralardan bir çıkarım yapmaya çalışarak disassembly tarafından kontrol sağladım. Ancak yolumu kaybettim.

2-)Hardfault'a düşme durumuna sebebiyet veren fault mekanizmaları inceledim ve sorun "BUS FAULT", bus faulta sebebiyet olarakta "PRECISERR ve BFARBVALID" registerları set oluyor.

BFAR registerinin degeri -> 0x315f49C4
CSFR registerinin degeri -> 0x82 (BFSR)

olmayan bir adrese erişim sağlamakta.

3-) Şu notu referans alarak bazı kontroller sağladım ancak sonuca ulaşamadım.
https://www.segger.com/downloads/application-notes/AN00016

4-)Keil tarafında sunulan Call Stack+Locals penceresinden düşmeden önce girdiği modülü bakmaya çalıştım ancak göstermedi. Çalışan kodu herhangi bir yerde durduğumda, belli bir diagnostic çıkarıyor ama fault durumunda çıkarmadı.


Core registerlarından bir şeyler çıkarabileceğimi düşünmekteyim ama bir akla daha ihtiyacım var galiba.





mufitsozen

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

volkanunal

Alıntı yapılan: mufitsozen - 28 Şubat 2020, 14:17:29Debugging Hard Fault & Other Exception

Using Cortex-M3/M4/M7 Fault Exceptions

How to debug a HardFault on an ARM Cortex-M MCU

Teşekkür ederim hocam, ben linkleri inceledim zaten pratik anlamda daha önce çalışma yapan birisi var mıdır bu konuda diye merak ederek sormak istedim.


Elektroemre

Alıntı yapılan: volkanunal - 28 Şubat 2020, 14:06:354-)Keil tarafında sunulan Call Stack+Locals penceresinden düşmeden önce girdiği modülü bakmaya çalıştım ancak göstermedi. Çalışan kodu herhangi bir yerde durduğumda, belli bir diagnostic çıkarıyor ama fault durumunda çıkarmadı.

Bu kısımdan defalarca HardFault düşüşündeki call stack'ı takip ettiğimi hatırlıyorum. Belki bir ayarınız eksiktir.

Projet properties'ten "Output > Debug information" işaretli olsun ve mümkünse Optimizasyon Level 0'da iken derleyip, debug da hard fault'a düşürün.

z

Hard fault rutinine breakpoint koy.

Kodunu calistir.

Fault durumu olusunca herhangi bir BX LR satirina gel ve set program counter de.

Single step yap.

Su anda faulta dusmene neden olan satirdasin ya da bir sonrasinda.

Bu genelde ise yariyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com