can't find 0x2 words for psect "param" in segment

Başlatan tyilgin, 24 Ocak 2009, 11:00:17

tyilgin

Merhaba arkadaşlar,

18F4550 de, 512 byte uzunluğunda 3 adet dizi tanımlamaya çalışıyorum ancak can't find 0x2 words for psect "param" in segment "RAM" hatası alıyorum.

char dizi1[512], dizi2[512],dizi3[512] bu tanımlamada 2. ve 3. dizileri kaldırırsam derleyici bir hata vermiyor.

herbirini farklı banklara atmayı denedim, sonuç yine aynı.

konu hakkında bir fikriş olan varmı ?

tyilgin

arkadaşlar 18f4550, 2048 bayt rama sahip olduğu halde 1024 baytın üzerinde değişken tanımlayamıyorum.

Belki 1000 bayt üzerinde olduğunda banklara bölemiyordur diye düşünerek farklı dizilerde tanımlama çalıştım.

Örneğin 1020 bayt uzunluğunda bir dizi tanımlayıp hata vermediğini gördükten sonra, 20 bayt uzunluğunda bir dizi tanımladığım halde bile başlıktaki hataya benzer bir hata veriyor.

Tagli

Konu hakkında deneyimim yok ama aklıma gelen bir ihtimal derleyicinin kendi işlemleri için bir miktar RAM'a ihtiyaç duyuyor olması. Datasheet'e bakınca gözüme çarpan bir diğer nokta ise son 1024 byte'ın USB buffer olarak kullanılıyor olması. Eğer uygulamada USB ile ilgili bir özellik varsa derleyici RAM'in bu kısmına erişimi engelliyor olabilir.

Bu arada, RAM'in bir kısmının SFR'ler için ayrıldığı da göz önünde bulundurulmalı. Olayın bank sınırlarıyla ilgili olduğunu sanmıyorum, zaten banklar 256 byte uzunluğunda. Dediğin gibi olsaydı 1020'lik diziyi de oluşturamazdın.
Gökçe Tağlıoğlu

tyilgin

Alıntı yapılan: "Tagli"Konu hakkında deneyimim yok ama aklıma gelen bir ihtimal derleyicinin kendi işlemleri için bir miktar RAM'a ihtiyaç duyuyor olması. Datasheet'e bakınca gözüme çarpan bir diğer nokta ise son 1024 byte'ın USB buffer olarak kullanılıyor olması. Eğer uygulamada USB ile ilgili bir özellik varsa derleyici RAM'in bu kısmına erişimi engelliyor olabilir.

Bu arada, RAM'in bir kısmının SFR'ler için ayrıldığı da göz önünde bulundurulmalı. Olayın bank sınırlarıyla ilgili olduğunu sanmıyorum, zaten banklar 256 byte uzunluğunda. Dediğin gibi olsaydı 1020'lik diziyi de oluşturamazdın.

derleyicinin kullandığı ram miktarı ile ilgili olacağını sanmıyorum. çünkü ulaşamadığım ram miktarı çok büyük. USb ile ilgili hiç bir tanımlama da yapmadım.

Aslında programımda 18F4550 yi seçtikten sonra hata mesajı alınca yeni bir proje oluşturdum ve orada da sadece bu 2-3 diziyi tanımladım. yani kodda henüz hiç birşey de yok.

sanırım dediğiniz yeri buldum. Datasında 66. sayfada Bölüm 5.3.1 de Bank4-7 arasını usb modul kapatılırsa bu bankların da normal banklar gibi kullanılabileceğini söylemiş. Usb nin kapatılması ile ilgili olarak ta UCON registerinin 3. biti olan USBEN 'in kullanılabileceğinden bahsetmiş.

Bende "USBEN=0;" ile, main bloğunun ilk başında usb modulu kapattım ancak sonuc yine aynı....

İlginiz için teşekkür ederim.

tyilgin

Birde derleyicinin derleme sonrasındaki görüntüsü

Data space:
   RAM                  used     2h (     2) of   400h bytes   (  0.2%)
   BIGRAM               used   3FCh (  1020) of   400h bytes   ( 99.6%)
   COMRAM               used     0h (     0) of    60h bytes   (  0.0%)
   NVRAM                used     0h (     0) of   100h bytes   (  0.0%)

burada sadece BIGRAM'i kullandığı görülüyor, asıl ramdan 2bayt kullanılmış. Asıl rami kullanmama nedeni ne olabilirki ?

Tagli

Gökçe Tağlıoğlu