Страница 1 из 1

Массив в EEPROM - где собака зарыта?

Добавлено: Ср июн 24, 2009 13:46:53
mackerel
В главном модуле объявляю переменные:
__no_init u8b __eeprom FactorySettingsArray[4095] @0x0000;
__no_init u8b __eeprom OwnExternalAddress @0x0fff;

В модуле AllCommandHandler использую их, для чего объявляю их внешними:
extern __no_init u8b __eeprom OwnExternalAddress;
extern __no_init u8b __eeprom FactorySettingsArray[];

При линчевании возникает ошибка:
Error[e46]: Undefined external "FactorySettingsArray" referred in AllCommandHandler ( C:\Mackerel\2HDMI_SDI_Cod\Release\Obj\

Если в объявлении убрать @0x0000 (привязка к конкретному адресу) - всё работает. Но мне привязка крайне важна. В чём дело, уважаемые коты?
P.S. это только пример, конечно, на самом деле переменных несколько больше и объём массивов несколько меньше.

Добавлено: Ср июн 24, 2009 14:15:21
DrWatson
Наверное стоит объявить эти переменные в отдельном заголовочном файле, который подключать в обоих модулях директивой

Код: Выделить всё

#include "Vars.h".
Vars.h

Код: Выделить всё

#ifndef VARS_INCLUDED
__no_init u8b __eeprom FactorySettingsArray[4095] @0x0000; 
__no_init u8b __eeprom OwnExternalAddress @0x0fff;
#define VARS_INCLUDED
#endif

Добавлено: Ср июн 24, 2009 14:41:20
mackerel
DrWatson писал(а):Наверное стоит объявить эти переменные в отдельном заголовочном файле
Спасибо, проверю...