Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: yldzelektronik - 31 Ağustos 2015, 11:01:22

Başlık: No space in execution regions
Gönderen: yldzelektronik - 31 Ağustos 2015, 11:01:22
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?
Başlık: Ynt: No space in execution regions
Gönderen: Burak B - 31 Ağustos 2015, 12:27:55
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.
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 01 Eylül 2015, 09:55:37
@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.
Başlık: Ynt: No space in execution regions
Gönderen: JKramer - 01 Eylül 2015, 10:26:24
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.
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 01 Eylül 2015, 10:54:23
@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?
Başlık: Ynt: No space in execution regions
Gönderen: muhittin_kaplan - 01 Eylül 2015, 12:09:03
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)
Başlık: Ynt: No space in execution regions
Gönderen: CLR - 01 Eylül 2015, 12:40:35
şö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.
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 01 Eylül 2015, 13:18:08
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?

Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 01 Eylül 2015, 17:42:35
@muhittin_kaplan  sizin kullandığınız keil versiyonu nedir?Bende lto yok.Sizde var mı?Veya olan birisi versiyonu söyleyebilir mi?
Başlık: Ynt: No space in execution regions
Gönderen: muhittin_kaplan - 02 Eylül 2015, 17:56:28
keil kullanmıyorum, gcc (em:blocks yada cocoox)
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 02 Eylül 2015, 20:19:46
Sorunu şu şekilde çözdüm;


(http://s3.postimg.cc/mp2s1b2fz/Ads_z.jpg) (http://postimg.cc/image/mp2s1b2fz/)
Başlık: Ynt: No space in execution regions
Gönderen: muhittin_kaplan - 02 Eylül 2015, 22:01:25
yani nereyi seçtin ?
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 02 Eylül 2015, 22:05:02
"One ELF Section per Function".

I2c kullandınız mı hiç?
Başlık: Ynt: No space in execution regions
Gönderen: CLR - 02 Eylül 2015, 22:35:52
cross compile yapmadın mı?
Başlık: Ynt: No space in execution regions
Gönderen: yldzelektronik - 02 Eylül 2015, 22:39:19
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?
Başlık: Ynt: No space in execution regions
Gönderen: muhittin_kaplan - 07 Eylül 2015, 18:13:33
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ı :)