Merhaba,
Stm32f030p4 ile bir proje üzerinde çalışıyorum.Kodlamayı bitirdim.Lakin derlemeyi tamamlayamıyorum.Sanırım yeterli flashım yok.Linking işlemini başarıyla bitiremeden şu hatayı alıyorum;
Error: L6406E: No space in execution regions with .ANY selector matching
Bu hatadan 43 tane falan var.Optimizasyonu açsam bile sığdıramıyorum.SIğmaması çok saçma.Acaba bir yerde tablolardan fazlaca tanımlyıp unuttum mu diye düşünüyorum.
Hangi dosya ne kadar alan kullanmış veya hangi değişken ne kadar alan kullanmış bunu görebiliyor muyum?Veya bu hatanın sebebi nedir?
Keil' de solda proje ağacında proje adının altındaki kök klasöre çift tıkla. Projenin MAP dosyası açılacak. Oradan herşeyi görebilirsin.
@Burak BAYRAKİnceledim.Teşekkürler.Peki şöyle bir sorum var.
X.c, y.c, z.c diye dosyalardan oluşan minik bir kütüphaneciğiniz olsun. Kütüphanedeki bütün fonksiyonları elbette kullanmayacaksınız.Peki bu dosyalar derlendikten sonra bütün dosyalar mı flashda yer tutacak yoksa yalnızca kullandığınız fonksiyonlar kadarı mı?
Soruyu bitirirken gereksizliğini fark ettim.Lakin yine de cevabı merak ediyorum.
Normalde hepsi tutuluyor ama http://stackoverflow.com/questions/4274804/query-on-ffunction-section-fdata-sections-options-of-gcc (http://stackoverflow.com/questions/4274804/query-on-ffunction-section-fdata-sections-options-of-gcc) adresinde yazıldığı gibi, kullanılmayanların yer tutmamasını sağlayabiliyorsunuz. Bu GCC için ama Keil'de de benzer ayarlar vardır.
@JKramer Oradaki sohbetten fazlaca bir şey anlayamadım.Aslında zihnim dağınık sanırım ondan.Zihnimi dağıtan şey şu;
Keil de map dosyasında yer alan veriler ne anlama geliyor.Mesela Unused Section kısmı var.Bir de kullanmadığım fonksiyonlar için yer ayırıyor.Anlamıyorum.?
Acaba map dosyasından biraz bahsedebilir mi biri.Veya bahseden bir doküman var mıdır?
mesaj birleştirme:: 01 Eylül 2015, 11:34:00
map dosyası dikkatli incelendiğinde bütün detaylar görülebiliyor. hangi değişkenin ne kadar yer kapladığını görebiliyorum.Güzelmiş.
Lakin halen yukarıdaki soruma cevap bulamadım.Bir dosyanın içindeki bütün fonksiyonlar yerine nasıl yalnızca kullandığım fonksiyonların flashda yer kaplamasını sağlarım?
LTO yu aktif ederek derlermisiniz
mesaj birleştirme:: 01 Eylül 2015, 12:16:23
https://www.picproje.org/index.php/topic,53804.msg409298.html#msg409298 (https://www.picproje.org/index.php/topic,53804.msg409298.html#msg409298)
şöyle yapabilirsin,
keil'de proje üzerinde sağ click ve options
Target->use cross-module optimizasyon'un işaretle compiler 3 kez projeni derleyip kütüphanelerini optimize edecek
Ayrıca yine aynı yerde c/c++ tab'ında optimizasyon seviyenini level 3 yaparsan kodların bayağı bir sıkışır ama nizami kod yazmamışsan projende sıkıntılar çıkabilir.
LTO nedir?Keil de nasıl açılıyor?Düzeltme: Keilde nasıl yapıldığını buldum.Lakin;
http://www.keil.com/support/man/docs/gsac/gsac_toolopts.htm (http://www.keil.com/support/man/docs/gsac/gsac_toolopts.htm)
bu linkte yer alan resimdeki gibi değil benim proje ekranım. Ben 4.73 kullanıyorum.Bundan olabilir mi?
@CLR bendeki mcu 16k flash.Program ilk derlendiğinde 17 küsür kb oluyor.Dolayısıyla bu da pek işimi görmedi.Ancak bütün derlemelerden sonra 10k ya düştü.Şaşırdım doğrusu.
Nasıl yapabiliyor ki bunu?
@muhittin_kaplan sizin kullandığınız keil versiyonu nedir?Bende lto yok.Sizde var mı?Veya olan birisi versiyonu söyleyebilir mi?
keil kullanmıyorum, gcc (em:blocks yada cocoox)
Sorunu şu şekilde çözdüm;
(http://s3.postimg.cc/mp2s1b2fz/Ads_z.jpg) (http://postimg.cc/image/mp2s1b2fz/)
yani nereyi seçtin ?
"One ELF Section per Function".
I2c kullandınız mı hiç?
cross compile yapmadın mı?
Alıntı yapılan: CLR - 02 Eylül 2015, 22:35:52
cross compile yapmadın mı?
Yapmıştım.Ama bu seçenek işe yarayınca gerek kalmadı.
mesaj birleştirme:: 02 Eylül 2015, 22:40:19
Abi bir Allah'ın kulu da i2c kullanmamışmıdır ki?Kafayı yedirecek.Aynı yerde dönmekten sıkıldım.Arpa boyu gidemedim sabahtan beri.Yok mu bir şey söyleyecek kimse?
http://www.muhittinkaplan.com/2013/08/07/stm32f4-mpu6050-usart-i2c-coide-coos-ile-vb-net-de-3d/ (http://www.muhittinkaplan.com/2013/08/07/stm32f4-mpu6050-usart-i2c-coide-coos-ile-vb-net-de-3d/)
şurada kullandım ama epey bir zorlamıştı :)