[an error occurred while processing this directive]
|
тупо выделял сегмент по размеру переменной и ее там размещал. Ни одного раза неправильной линковки не было.
.ldf:
...
MEMORY
{
seg_rth { TYPE(PM RAM) START(0x00008000) END(0x000080ff) WIDTH(48) }
seg_init { TYPE(PM RAM) START(0x00008100) END(0x0000810f) WIDTH(48) }
seg_pmco { TYPE(PM RAM) START(0x00008110) END(0x000087ff) WIDTH(48) }
seg_pmda { TYPE(PM RAM) START(0x00009000) END(0x0000982f) WIDTH(32) }
seg_pmff { TYPE(PM RAM) START(0x00009830) END(0x00009fff) WIDTH(32) }
seg_dmff { TYPE(DM RAM) START(0x0000C000) END(0x0000D76f) WIDTH(32) }
seg_dmda { TYPE(DM RAM) START(0x0000D770) END(0x0000Dfff) WIDTH(32) }
}
PROCESSOR p0
{
LINK_AGAINST( $COMMAND_LINE_LINK_AGAINST)
OUTPUT( $COMMAND_LINE_OUTPUT_FILE )
SECTIONS
{
seg_rth
{
INPUT_SECTIONS( $OBJECTS(seg_rth) $LIBRARIES(seg_rth))
} >seg_rth
seg_init
{
INPUT_SECTIONS( $OBJECTS(seg_init) $LIBRARIES(seg_init))
} >seg_init
seg_pmco
{
INPUT_SECTIONS( $OBJECTS(seg_pmco) $LIBRARIES(seg_pmco))
} >seg_pmco
seg_pmda
{
INPUT_SECTIONS( $OBJECTS(seg_pmda) $LIBRARIES(seg_pmda))
} >seg_pmda
seg_pmff SHT_NOBITS
{
INPUT_SECTIONS( $OBJECTS(seg_pmff) $LIBRARIES(seg_pmff))
} >seg_pmff
seg_dmff SHT_NOBITS
{
INPUT_SECTIONS( $OBJECTS(seg_dmff) $LIBRARIES(seg_dmff))
} > seg_dmff
seg_dmda
{
INPUT_SECTIONS( $OBJECTS(seg_dmda) $LIBRARIES(seg_dmda))
} > seg_dmda
}
}
.asm
...
/************************************************************************/
/* Data Variables. */
/************************************************************************/
.SEGMENT/DM seg_dmff;
.VAR fifo_dm[FIFO_LEN_DM];
.GLOBAL fifo_dm;
.ENDSEG;
.SEGMENT/PM seg_pmff;
.VAR fifo_pm[FIFO_LEN_PM];
.GLOBAL fifo_pm;
.ENDSEG;
...
E-mail: info@telesys.ru