microchip c18 de global değişkenler için yer almada problem var

Başlatan piedos, 06 Temmuz 2008, 16:55:07

Tagli

'c018i.o' hatasını daha önce ben de almış ve bahsettiğin şekilde düzeltmiştim. Senin dosyanı denerken bu hatayı almadım ama.

Ben de C18'e yeni başlayan biri olarak çoğu şeyden emin değilim ama sanırım linker script dosyasını kendin özellikle belirtmezsen gidip program klasörünün içindekini kullanıyor. Ama bazı durumlarda hafızada alan açmak için bu dosya ile oynamak gerekiyor. Bu durumda linker script'in bir kopyasını proje klasörüne atıp, bu dosyayı da projeye ekledim, sonra değişiklik yaptım. O şekilde çalıştı.

İmlecin paranteze gelmesine çok takılma. İstersen üzerine breakpoint koymayı bir deneyebilirsin ama sanki o tür satırlara konulmuyordu diye hatırlıyorum. Devre istediğin gibi çalışıyorsa sorun yok. O sadece bir gösterim.
Gökçe Tağlıoğlu

emre salman

linker file dosyasını değiştirdim ama hala hata almaya devam etmekteyim
nasıl yapıyoruz array i tanımlarken farklı mı tanımlıyoruz acaba

Tagli

Üzerinden 5 sene geçmiş ama zamanında bu sorunla karşılaştığım ve çözdüğüm dosyayı ve linker betiğini buldum. Yine de tam olarak neyi neden yaptığımı hatırlamıyorum.

Linker betiğinde aşağıdaki gibi bir alan tanımlamışım. Ancak önceden tanımlı başka bir şeyleri silip onun yerine mi yaptım bilmiyorum. PIC18F2550 için.
DATABANK   NAME=genis      START=0x400             END=0x7FF		PROTECTED

En alta da şunu eklemişim:
SECTION		NAME=q_data		RAM=genis

Burada q_data öylesine verdiğim bir isim, özel bir anamalı yok.

Kodda da değişkeni şu şekilde tanımlamışım:
#pragma udata q_data
float q[8][8][4];


Bu arada, tavsiyem C18'i terkedip XC8'e geçmen. Aralarında ciddi bir fark yok zaten, göç zor olmayacaktır. C18 artık desteklenmiyor. Ayrıca sanırım XC8'de linker betiği ile uğraşmana gerek yok.
Gökçe Tağlıoğlu

emre salman

c18 deki tcp/ip stackı kullanıyorum eğer xc8 de varsa geçeyim ama sanırım yok