STM32F4 Hard Fault Problemi

Başlatan EMP_Otto, 04 Ocak 2016, 16:57:45

EMP_Otto

Merhaba arkadaslar STM32F4 Dİscovery kit kullanarak geliştirdiğim projede işlemci sürekli HardFaultta düşüyor.

SCB->HFSR = 0x40000000
SCB->CFSR = 0x00020000

HardFaultta düştüğümdeki register degerleri yukaridaki gibi.
Hardfault nedeni olarak

INVSTATE   

Invalid state UsageFault:

0 = no invalid state UsageFault

1 = the processor has attempted to execute an instruction that makes illegal use of the EPSR.

When this bit is set to 1, the PC value stacked for the exception return points to the instruction that attempted the illegal use of the EPSR.

This bit is not set to 1 if an undefined instruction uses the EPSR.

olarak görünüyor.İşlemcide neyi yanlıs kullanıyorum acaba?

İyi Çalışmalar...
Bu işler zordur,özveri ister...

F493

Selam,

   Sorun Stack size ile ilgili sanırım.  stack size'ı arttırıp dener misiniz?  IAR compiler da Tools->Options->stack sanırım.

Aşağıdaki linkte de benzer bir sorun olmuş.

http://www.keil.com/forum/17228/

Esen kalın.

EMP_Otto

Cevabınız için teşekkür ederim.Paylaştıgınız linkteki arkadasta FatFs ile ugrasırken aynı problemle karsılaşmıs.FAtfs için 4k lık bir buffer ayırıyor sistem.f_mkfs fonksyionunun return kısmındada hard faultta düşüyor.Yani return dediğim anda HardFault durumu oluşuyor.Stack size default olarak 1k belirlenmiş keilde ben 1kden 4k ye kadar denedim ama yine aynı hatayla karsılasıyorum.Stack Size maximum kaç olablir aacaba?
Bu işler zordur,özveri ister...

F493

Selam,

   Eğer sizin kodun içinde bir yerlerde Stack size tanımlı ise sizin Compiler ayarından yaptığınız ayarı dikkate almıyor olabilir?.
 
    Yazılımın içinde bir arayın, belki define edilmiştir onu referans alıyordur.
    Olmazsa bir de sadece denemek adına stacksize'ı 16K falan yapın, bakalım tepkisi aynı mı olacak.
 
   Esen kalın.

EMP_Otto

#4
Aslında projeyi smtm32l053 kiti üzerindede yapıyorum ama ondada aynı hatayı alıyorum.İkisindede hard faultta düşüyor.Stack size'ı cok artırdıgımda  No space in execution regions with .ANY selector matching hatasını alıyorum.FatFs için low level driverlarda sıkıntı yok  istediğim sectöre istediğim kadar datayı yazabiliyorum  ve okuyabiliyorum.
Fakat f_mkfs fonksiyonundan cıkarken return dediğim yerde işlemci hard faulta düşüyor.
Başka bir önerisi olan var mı acaba?
Bu işler zordur,özveri ister...