No space in execution regions

Başlatan yldzelektronik, 31 Ağustos 2015, 11:01:22

yldzelektronik

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?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Burak B

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.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

yldzelektronik

@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.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

JKramer

Normalde hepsi tutuluyor ama 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.

yldzelektronik

#4
@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?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

muhittin_kaplan

#5
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

CLR

şö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.
Knowledge and Experience are Power

yldzelektronik

#7
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

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?

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yldzelektronik

@muhittin_kaplan  sizin kullandığınız keil versiyonu nedir?Bende lto yok.Sizde var mı?Veya olan birisi versiyonu söyleyebilir mi?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

muhittin_kaplan

keil kullanmıyorum, gcc (em:blocks yada cocoox)

yldzelektronik

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

muhittin_kaplan


yldzelektronik

"One ELF Section per Function".

I2c kullandınız mı hiç?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

CLR

Knowledge and Experience are Power

yldzelektronik

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?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.