STM32F10x 'de DSP Kütüphanesini derleyebilen varmı?

Başlatan Mucit23, 15 Şubat 2019, 00:19:00

Mucit23

Selamlar

Keilde DSP Kütüphanesini derleyebilen varmı? Stack sorunu yaşıyorum sanırım..

STM32F103 için DSP kütüphanesini indirip projeme ekledim. Keil derleme Compile işleminde hata vermiyor ama Linker kısmında L6406E hatasını veriyor
Alıntı YapSoftware\Software.axf: Error: L6406E: No space in execution regions with .ANY selector matching arm_common_tables.o(.constdata).
Software\Software.axf: Error: L6406E: No space in execution regions with .ANY selector matching arm_cfft_radix4_f32.o(i.arm_radix4_butterfly_inverse_f32).
Software\Software.axf: Error: L6406E: No space in execution regions with .ANY selector matching arm_cfft_radix4_f32.o(i.arm_radix4_butterfly_f32).
.
.
.


Daha önce bu kütüphaneyi Yine CM3 çekirdeği bulunan PSOC'larda derlemiştim. Fakat Medium Density Sınıfında bulunan STM32F103C8 için yukardaki hataları veriyor. Stack boyutu yetmiyor diye düşünüyorum. Bunun çözümü varmıdır?
 


OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Mucit23

Evet ST'nin Medium Denstiy MCU ları ile DSP kütüphanesini derlemek pek mümkün değil gibi. Çok genel konuştum gerçi ama sanırım çok fazla ram tüketimi olduğundan dolayı böyle.

STM32F103VET6 için derleme yaptım sorun olmadı. Proje hatasız derlendi.

e-zeki

Stack ve Heap size'ı arttırmayı denediniz mi? projenin ram kullanımı çok yüksek değilse stack ve heap size'ı arttırarak derleme ihtimaliniz yüksek.

Mucit23


Elektroemre

Optimizasyonlar hangi ayarda? O3 değilse, O3 yapıp tekrar derleyebilirsin keil ile çalışıyorsan. GCC ise optimize for size yapıp denemek lazım.

Mucit23

Evet şimdi denedim oldu. Optimizasyon Seviyesini Level3 yaptım. Hata olmadan derlendi. Fakat gereksiz optimizasyonlardan dolayı kod yanlış çalışırmı acaba? Keil'in Level3 optimizasyonu bana güven vermiyor.

CLR

Ben herzaman keil optimizasyon level 3'te derlerim, ciddi projeler yaptım, hiç sıkıntı çıkmadı. Sıkıntı çıkıyorsa muhtemelen code yazmanızda eksikler vardır.
Knowledge and Experience are Power

Mucit23

Hocam sorun oluyor. Yazılımsal olarak değil. Oluşan hataları debug ile bile çözümlemek imkansız hale geliyor. Şimdi DSP library derlendi dedim ama başka sorunlar olmaya başladı. Akşamdan kodu deneyince farkettim. RGB Matrix ekranlarla uğraşıyorum şuanda. Optimizasyon Seviyesini 3 yaptım. Kod derlendi ama Ekran için RAM'den ayırmış olduğum 512 Byte'lık alandaki değerler rastgele değişiyor. Yani ekrandaki pixeller rastgele yanmaya başlıyor. Optimizasyon seviyesi sıfır olunca böyle bir sorun olmuyor. Optimizasyon seviyesi 1 olsada yine aynı sorun başlıyor. Hangi sebepten dolayı böyle oluyor bilmiyorum ama kullanılan ram alanının başka bir yerde yine kullanıldığı kesin.

Ekran için Ayırmış olduğum RAM alanını volatile olarak tanımlasamda yine aynı sorun baş gösteriyor. Çözümü varmı bilmiyorum.

Bunun dışında Optimizasyon seviyesi 3 olunca IF lerde de sorun oluyor bazen. Örnek veriyorum if(sayı>0) ise xxx yap gibi bir yapıda şart gerçekleşse bile if içeriğini gerçekleştirmiyor. Debug yaparken lan bu niye buraya girmiyor diye saç baş yoluyordum.. Buna benzer birkaç hatayı şart içerisinde kontrol edilen değişkeni volatile olarak tanımlayarak çözmüştüm.

3. seviyede optimize kod yazmak için sanırım çok iyi bir koder olmak lazım. Benim gibi acemiler için değil sanırım.  :-[ 

Mucit23

#9
Ekleme; FFT alıyordum. FFT Size değerini düşürünce bu sorunda çözüldü. Ama FFT yine çalışmıyor. arm_cfft_radix4_f32(&S, Input); kodunu çalıştırınca Hard Faulta düşüyor MCU.

Çok zorluyorum sanırım.

Elektroemre

@Mucit23 kodun optimizasyon 0 da ve 3te farklı çalışıyorsa temel bazı yerlerde hata yapıyorsun. Keil gayet deterministik çalışan bir compiler. Level 3 te debug yapmak zorlaşıyor bu doğru, ama kodun yanlış çalışması temel konulara dikkat edilmeden kod yazıldığını gösteriyor.

Elektroemre

Ek olarak, özel değilse, projeyi upload et, bir göz atalım.

z

0. optimizasyon seviyesinde duzgun calisip 3. optimizasyon seviyesinde sacmalayan kisa bir kod ornegi verebilir misiniz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Hocam akşam eve geçince DSP Library'nin derlenebileceği bir projeyi yükleyeceğim. Sorun DSP library'de . STM32F103C8 çipiyle DSP library kullanarak FFT almaya çalışıyorum. Temel sorun şudur Optimizasyon seviyesi 0 olunca Linker sırasında L6406E hatası alıyorum. Optimizasyon seviyesi 3 olursa kod derleniyor fakat çalışırken arm_cfft_radix4_f32 fonksiyonunu çağırırsam MCU Hard Faulta düşüyor. Debug'da pek anlayamadım. Hard Faulta neden düştüğünü söyleseniz yeterli benim için.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com