renesas const alanı taşması

Başlatan Wild_Wolf, 13 Ekim 2006, 00:06:53

Wild_Wolf

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...
İşi çok olanların gözyaşları için vakitleri yoktur.

aYe

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.
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

Wild_Wolf

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.?
İşi çok olanların gözyaşları için vakitleri yoktur.

Wild_Wolf

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.
İşi çok olanların gözyaşları için vakitleri yoktur.