STM32F407 Codesize Sorunu

Başlatan e-zeki, 22 Mayıs 2020, 02:38:11

e-zeki

Merhabalar.
Bir proje için  Flash bellekten dosya okuyup içeriği grafik LCD ile listelemem gerekiyor.
Proje Keypad,GLCD,ve USB Fatfs bölümlerinden oluşmakta. Bu bölümleri Keil'de 3 ayrı proje olarak oluşturdum ve çalıştırdım.
Flash oku yaz sil rutinlerinin olduğu proje= 19.5 kb.
GLCD önce 128x64 bir logo gösteriyor açılışta başka hiç birşey yapmıyor = 4.0kb
bu iki projeyi birleştirdiğimde GLCD logo basma kapalıyken =21.8 kb.
logo basma fonksiyounu aktif ettiğim an = 33.2kb

Tek fonksiyonu çağırıyorum,kod limiti aşıp hata veriyor ve daha keypad rutinlerini eklemedim bile.
Bir fonksiyonun, tek çağırımda 12kb arttırmasının sebebi nedir?
kullanılan herşey bire bir aynı.
Tecrübeli ustalarım bu konuda bilgilerini paylaşırlarsa çok makbule geçer.

mufitsozen

Alıntı yapılan: e-zeki - 22 Mayıs 2020, 02:38:11Merhabalar.
Bir proje için  Flash bellekten dosya okuyup içeriği grafik LCD ile listelemem gerekiyor.
Proje Keypad,GLCD,ve USB Fatfs bölümlerinden oluşmakta. Bu bölümleri Keil'de 3 ayrı proje olarak oluşturdum ve çalıştırdım.
Flash oku yaz sil rutinlerinin olduğu proje= 19.5 kb.
GLCD önce 128x64 bir logo gösteriyor açılışta başka hiç birşey yapmıyor = 4.0kb
bu iki projeyi birleştirdiğimde GLCD logo basma kapalıyken =21.8 kb.
logo basma fonksiyounu aktif ettiğim an = 33.2kb

Tek fonksiyonu çağırıyorum,kod limiti aşıp hata veriyor ve daha keypad rutinlerini eklemedim bile.
Bir fonksiyonun, tek çağırımda 12kb arttırmasının sebebi nedir?
kullanılan herşey bire bir aynı.
Tecrübeli ustalarım bu konuda bilgilerini paylaşırlarsa çok makbule geçer.

floating point kullanmadan deneyin, ve hafiza istatistiklerini karsilastirin.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

e-zeki

@mufitsozen Hocam Floating point kullanmadım hiç. Hafıza istatistiklerini nasıl karşılaşırabilirim?

RaMu

Diyelim fonksiyonu yazdın ama hiç çağırmadın
o fonksiyon derlenmez dolayısıyla hafızada yer kaplamaz.
Bu bahsettiğin fonksiyon hafızada niye bu kadar yer kaplıyor diye soruyorsan
sadece basmaya çalıştığın logo bile 12kb olabilir.

Keil in küreği var internette.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

mufitsozen

Alıntı yapılan: e-zeki - 22 Mayıs 2020, 03:46:08@mufitsozen Hocam Floating point kullanmadım hiç. Hafıza istatistiklerini nasıl karşılaşırabilirim?

butun compilerlarda linker'in "map" dosyasi olur. Oradan bakabilirsin.

Seneler once gerbay bu konuda cok detayli paylasimlar yapmisti ama forumdan atilinca silindi gitti galiba.

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

e-zeki

Alıntı yapılan: RaMu - 22 Mayıs 2020, 07:22:40Diyelim fonksiyonu yazdın ama hiç çağırmadın
o fonksiyon derlenmez dolayısıyla hafızada yer kaplamaz.
Bu bahsettiğin fonksiyon hafızada niye bu kadar yer kaplıyor diye soruyorsan
sadece basmaya çalıştığın logo bile 12kb olabilir.

Keil in küreği var internette.
Hocam sorun orada zaten fonksiyonu her durumda çağırıyorum. Bu fonksiyon derleniyor.
A = 4 kb(GLCD Projesi logo basma çağırıldı.)
B = 20kb( Flash disk projesi oku/yaz/değiştir çağırılı)
C = 33 kb(GLCD + Flash disk logo basma / oku/ yaz/ değiştir çağırılı.)
gibi bir durum oluyor. bunun sebebini anlayamadım.

Ayrıca logo 1kb

@mufitsozen hocam map dosyasına bakacağım müsait olunca.

@RaMu  Küreği bulamadım bir türlü eğer kolayda link varsa...

RaMu

Şu video nun açıklamasındaydı uçmuş ama yorumlarda var:
Biraz virüs gibi ama ben bir zararını görmedim,
antivirüs programını askıya alman gerekebilir,
birde dosyayı rardan çıkardıktan sonra silememiştim, unlocker adlı program ile silmiştim.
https://youtu.be/U2aXOjsdNBY
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html