Требуется заставить компилятор не использовать первые 64 байта в EEPROM.
Объявляю в *.h
Код
typedef struct T_EEPROM
{
unsigned char Key[16];
unsigned long Login;
unsigned char IP_Server[4];
unsigned int Port_Server;
unsigned int Port_Client;
unsigned char APN[24];
unsigned char Serial[8];
unsigned long CRC32;
} T_EEPROM_Header;
{
unsigned char Key[16];
unsigned long Login;
unsigned char IP_Server[4];
unsigned int Port_Server;
unsigned int Port_Client;
unsigned char APN[24];
unsigned char Serial[8];
unsigned long CRC32;
} T_EEPROM_Header;
потом
Код
T_EEPROM_Header __eeprom *EE_Header;
и обращение такое в качестве теста
Код
EE_Header->Key[0] = 10;
EE_Header->Key[1] = 11;
EE_Header->Key[5] = 12;
EE_Header->Key[10] = 13;
EE_Header->Key[14] = 14;
EE_Header->Key[15] = 15;
EE_Header->Login = 0x00000000;
EE_Header->IP_Server[0]=1;
EE_Header->IP_Server[1]=2;
EE_Header->IP_Server[2]=3;
EE_Header->IP_Server[3]=4;
EE_Header->Port_Server = 0xAAAA;
EE_Header->Port_Client = 0xBBBB;
EE_Header->APN[0] = 1;
EE_Header->APN[1] = 2;
EE_Header->APN[5] = 3;
EE_Header->APN[10] = 4;
EE_Header->APN[22] = 5;
EE_Header->APN[23] = 6;
EE_Header->CRC32 = 0xCCDDEE00;
EE_Header->Key[1] = 11;
EE_Header->Key[5] = 12;
EE_Header->Key[10] = 13;
EE_Header->Key[14] = 14;
EE_Header->Key[15] = 15;
EE_Header->Login = 0x00000000;
EE_Header->IP_Server[0]=1;
EE_Header->IP_Server[1]=2;
EE_Header->IP_Server[2]=3;
EE_Header->IP_Server[3]=4;
EE_Header->Port_Server = 0xAAAA;
EE_Header->Port_Client = 0xBBBB;
EE_Header->APN[0] = 1;
EE_Header->APN[1] = 2;
EE_Header->APN[5] = 3;
EE_Header->APN[10] = 4;
EE_Header->APN[22] = 5;
EE_Header->APN[23] = 6;
EE_Header->CRC32 = 0xCCDDEE00;
чтоб не использовать первые 64 байта памяти еепром, правлю файл cfgm162.xcl так
Код
//////////////////////////////////////////////////////////////////////////////
// Internal EEPROM
-D_..X_EEPROM_END=1FF // End of eeprom memory
//-D_..X_EEPROM_START=0 //OLD
-D_..X_EEPROM_START=64 //NEW
// Internal EEPROM
-D_..X_EEPROM_END=1FF // End of eeprom memory
//-D_..X_EEPROM_START=0 //OLD
-D_..X_EEPROM_START=64 //NEW
как только начинаю заполнять стркутуру, он пишется с 0 адреса

если начинаю использовать раздельные данные без структуры типа
Код
__no_init unsigned int __eeprom Dest_Port_eeprom;
__no_init unsigned int __eeprom Sour_Port_eeprom;
__no_init unsigned int __eeprom Sour_Port_eeprom;
то при записи в них данных
Код
Dest_Port_eeprom = 0xABCD;
Sour_Port_eeprom = 0xEFAB;
они ложатся точно со смещения в 64 байта, но хочется использовать структуру.
Подскажите, что неправильно