ccs te rom structan ram structa veri taşımak

Başlatan piedos, 16 Ağustos 2009, 01:54:31

piedos

selamlar,  

Ben 1 gündür bir problemle cebelleşiyorum. bir structım var, içinde bir string bir de int8 sayı tutan elemanlar var.

bu structan iki adet oluşturuyorum birisi romda birisi ramde

amacım kullanıcıdan bu değerleri isteyip (rs232ile) ramdeki structa yazmak, sonra da saklamak için romdaki structa yazmak. Kullanıcıdan girdileri alıp Ramdeki structa yazıyorum burada problem yok

işlemci yeniden açılınca bu sefer romdaki struct içeriğini ramdeki structa yazacak.

c18 de bu işlem çok kolaydı

structInRam = structInRom;
structInRom = structInRam;

yazınca olur biterdi ama bu ccs çok belalı ne denedimse kabul etmiyor, yardımlarınızı bekliyorum

denediğim fonksiyonlar:
memcpy--hata veriyor
write_program_memory--adress hatası
strcpy --hata
pointerToRam ve pointerToRom denemeleri de fayda etmedi


struct yerine const string lerle işi çözebiliyorum ancak, ilerleyen aşamalarda 5 farklı structın 200 kopyasını romda saklamam gerekiyor eğer bunu stringlerle teker teker tanımlarsam yüzlerce string oluşturmam gerekiyor.
teşekkürler
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

ahmet2004

Alıntı Yapwrite_program_memory--adress hatası

write_program_memory yi

nasıl denediniz?Örnek verebilirmisiniz?

piedos

Alıntı yapılan: "ahmet2004"
Alıntı Yapwrite_program_memory--adress hatası

write_program_memory yi

nasıl denediniz?Örnek verebilirmisiniz?


//global
struct stcStore{
int8 startAddressOfStruct;
char name[20];
int  age;
};

struct stcStore s_structRAM;
struct stcStore ROM s_structROM;



//fonksiyon içi
char * ptr2Ram;
const char * ptr2Rom;

ptr2Ram = &s_structRAM;//
//ptr2Rom = &s_structROM;// bu satır hata veriyor

read_program_memory(&s_structROM.startAddressOfStruct,ptr2Ram,sizeof(s_structRAM) );


write_program_memory(&s_structROM.startAddressOfStruct, ptr2Ram, sizeof( s_structRAM ));

//startAddressOfStruct, struct tanımı içindeki 1 bytelık bir değişken, ve ilk //sırada, bunu yapmazsam ROMdaki adresi okuyamıyorum.


gordugunuz gibi biraz takla attırınca problem cozoluyor ancak adres tanımında &s_structROM.startAddressOfStruct yerine &s_structROM kullanabilmem lazım c18 bunu destekliyor zaten desteklemesi lazım

yardımlarınızı bekliyorum

teşekkürler
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."