[an error occurred while processing this directive]
|
надо было сделать оврелейки - т.е. на этапе линковки в глобальные переменные ложились соотвествующие адреса.А помто подгрузальщик брал адреса и размеры и делал свое дело
В вашем случае надо положить размеры массивов
делать примерна так
а асм файле
; Module contain size of overlayes
; ----- for module 0 -------
.global Module_0_Start
.global _Module_0_Length
; ----- for module 1 -------
.global Module_1_Start
.global _Module_1_Length
в Цэ файле
// -------- external variable ----------
extern UINT32 Module_0; // load adress
extern UINT32 Module_0_Length;
extern UINT32 Module_1; // load adress
extern UINT32 Module_1_Length;
в командном файле
MEMORY
{
PAGE 0: /* ---- Unified Program/Data Address Space ---- */
....
SARAM2 (RWIX): origin = 0x040000, length = 0x010000 /* 64Kb */
...
}
SECTIONS
{
...
.text_Module_0 : load = SARAM2, align 0x100,
{
Module_0_Start=.;
Module_0.obj(.text)
_Module_0_Length=. - Module_0_Start;
}
/*------------------------------------*/
.text_Module_1 : load = SARAM2, align 0x100,
{
Module_1_Start=.;
Module_1.obj(.text)
_Module_1_Length=. - Module_1_Start;
}
...
}
И все
Только в вашем случае вместо
Module_0.obj(.text)
надо будет указать секцию в которой живет ваш массив. Ясно что массив надо положить в отдельную секцию - смотрите PRAGM-ы
ну в общем то достаточно извращенный способ - совсем не понятно почему не передать размер параметром?
E-mail: info@telesys.ru