Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Hitachi, Mitsubishi Mikrodenetleyici => Konuyu başlatan: Wild_Wolf - 13 Ekim 2006, 00:06:53

Başlık: renesas const alanı taşması
Gönderen: Wild_Wolf - 13 Ekim 2006, 00:06:53
Merhaba Arkadaşlar,
M30624FGPFP işlemci kullanıyorum.

CONST alanı 131 Byte
FARCONST alanı 976 Byte
HUGECONST alanı 65189 Byte
NEARDATA alanı 18780 Byte
HUGECODE alanı 112551 Byte

Burada const tanımladığım sabit string dizileri 64KByte sınırını geçti ve programım belli bir fonksiyonu çalıştırdığı anda kilitlenme yapıyor.

XCL dosyasında ilgili const tanımlanan ifadeler aşağıdadır.

-D_USER_ROM_BEGIN=c0000
-D_USER_ROM_END=FBFFE
.
.
// =======================
//     FAR/DATA20 ROM
// =======================

// Constant and initializer segments (in ROM)

-Z(FARCONST)FAR_ID=_USER_ROM_BEGIN-_USER_ROM_END
-Z(FARCONST)FAR_C
-Z(HUGECONST)DATA20_C,DATA20_ID,CHECKSUM
-Z(FARCONST)DATA16_ID,DATA13_ID,DIFUNCT

Fakat yeni bir segment tanımlayamıyorum.

Bu sorunun çözümünü bilen arkadaşlar yardımcı olursa memnun olacağım...
Başlık: renesas const alanı taşması
Gönderen: aYe - 13 Ekim 2006, 03:27:05
Sanırım IAR derleyici kullanıyorsunuz.

64K nin üzerinde hata olmasının nedeni blok geçişi.

Mitsubishi'de maksimum blok büyüklüğü 64K'dir.

Const tabloyu 64K'lik iki ayrı tablo olarak yapıp, kod ile gerektiğinde ikinci tabloyu kullanmak ilk aklıma gelen çözüm.
Başlık: renesas const alanı taşması
Gönderen: Wild_Wolf - 13 Ekim 2006, 09:02:44
Tatlisukurnazi cevabın için teşekkür ederim.Programda kullandığım tablolar sayfalara dağılmış tablolar.Onun için bölme yapamıyorum.Blok olarak constlar için  64K'nın yanına 32K lık yeni bir const bloğu oluşturabilirmiyim.Eğer oluşturabiliyorsam Linker dosyasına bunu nasıl geçireceğim.?
Başlık: renesas const alanı taşması
Gönderen: Wild_Wolf - 13 Ekim 2006, 10:23:08
herkese merhaba ,

Galiba bir yöntem geliştirdim.Dizi tanımlamarından önce ve sonrasına aşağıdaki kodu ekledim.

#pragma memory=constseg(MY_CONST)
char const deneme_dizisi[]="deneme123";
#pragma memory=default

XCL dosyasınada aşağıdaki eklemeyi yaptım..

-Z(FARCONST)CONST,CSTR,MY_CONST

Böylece tanımladığım dizi HUGECONST memory değilde FARCONST memoryde tanımlanmış oldu.