Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

Architecture(adsp-2181) // определение типа процессора

SEARCH_DIR( $ADI_DSP\218x\lib ) // определение пути к библиотекам

// Имена файлов, библиотек, ключей берутся из командной строки,

// необходимо также подключить libc.dlb, но это можно сделать также

// через Project | Project Options | Link | Additional options: libc.dlb

$OBJECTS = $COMMAND_LINE_OBJECTS, libc.dlb;

// 2181 имеет 16K слов (24-bit) ПП и 16K слов (16-bit) ПД

MEMORY {

// Используем всю доступную ПП и ПД

int_area {TYPE(PM RAM) START(0x0000) END(0x002f) WIDTH(24)}

prog_area {TYPE(PM RAM) START(0x0030) END(0x37fe) WIDTH(24)}

data_area {TYPE(DM RAM) START(0x0000) END(0x2fff) WIDTH(16)}

heap_area {TYPE(DM RAM) START(0x3000) END(0x37ff) WIDTH(16)}

stack_area {TYPE(DM RAM) START(0x3800) END(0x3fdf) WIDTH(16)}

}

PROCESSOR p0 {

// Ключи для линкера берутся из командной строки

LINK_AGAINST( $COMMAND_LINE_LINK_AGAINST )

// Имя выходного файла берется из командной строки

OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

SECTIONS {

// Секция таблицы векторов прерываний,

// названия векторов определены в 218x_int_tab.asm

sec_int {

INPUT_SECTIONS( $OBJECTS(IVreset ) )

INPUT_SECTIONS( $OBJECTS(IVirq2 ) )

INPUT_SECTIONS( $OBJECTS(IVirql1 ) )

INPUT_SECTIONS( $OBJECTS(IVirql0 ) )

INPUT_SECTIONS( $OBJECTS(IVsport0xmit ) )

INPUT_SECTIONS( $OBJECTS(IVsport0recv ) )

INPUT_SECTIONS( $OBJECTS(IVirqe ) )

INPUT_SECTIONS( $OBJECTS(IVbdma ) )

INPUT_SECTIONS( $OBJECTS(IVirq1 ) )

INPUT_SECTIONS( $OBJECTS(IVirq0 ) )

INPUT_SECTIONS( $OBJECTS(IVtimer ) )

INPUT_SECTIONS( $OBJECTS(IVpwrdwn ) )

} >int_area

// Программная секция

sec_code {

// program – имя по умолчанию программной секции кода для

// СИ – файлов, может быть изменено в 218x_hdr.asm или

// директивой segment(segment_name) в тексте СИ-программы

INPUT_SECTIONS( $OBJECTS(program) )

// UART_CODE – имя секции программы,

// заданное в файле uart.asm

INPUT_SECTIONS( $OBJECTS(UART_CODE) )

} >prog_area

// Секция данных

sec_data {

// data1 – имя по умолчанию секции данных для

// СИ – файлов, может быть изменено в 218x_hdr.asm или

// директивой segment(segment_name) в тексте СИ-программы

INPUT_SECTIONS( $OBJECTS(data1))

// UART_DATA – имя секции данных, заданное в файле uart.asm

INPUT_SECTIONS( $OBJECTS(UART_DATA))

} >data_area

// Поддержка инициализации СИ – переменных, включая С++

sec_ctor {

INPUT_SECTIONS( $OBJECTS(ctor) )

} >data_area

// Поддержка кучи

sec_heap {

.heap = .;

.heap_size = MEMORY_SIZEOF(heap_area);

.heap_end = . + MEMORY_SIZEOF(heap_area) - 1;

} >heap_area

// Поддержка стека

sec_stack {

ldf_stack_limit = .;

ldf_stack_base = . + MEMORY_SIZEOF(stack_area) - 1;

} >stack_area

} // окончание SECTIONS

} // окончание processor p0

Рис. 1.20. Содержимое линкерного файла AsyncMix.ldf, входящего в проект AsyncMix

Файл рис. 1.20 в основном соответствует содержимому файла рис. 1.16. Отличие заключается в том, что:

  • раздел $OBJECTS дополнен именем файла libc.dlb;

  • в раздел MEMORY включены области памяти int_area, heap_area и stack_area;

  • в раздел SECTION добавлены секции СИ программы: program – для программной секции, data1 – для секции данных (в которой находятся переменные ch и handler), ctor – для секции данных (инициализация переменных CИ-программы), heap – для секции данных (поддержка кучи), stack – для секции данных (поддержка стека).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]