Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросик по линковке.
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
3.14
Отлаживаю проект на MicroBlaze.
В доке сказано, что компилятор и утилиты и него ГНУ-тые.
Так вот, можно сделать так, чтоб в одном исходнике разные подпрограммы распологались в разных сегментах памяти?
Например, вот пример простого скрипта линковщика, в котором котором програма непрерывна:
Код
MEMORY
{
ILMB (x) : ORIGIN = 0x0, LENGTH = 0x1000
DLMB (i) : ORIGIN = 0x2000, LENGTH = 0x1000
DOPB (w) : ORIGIN = 0x8000, LENGTH = 0x30000
}

А вот часть примера, с частями программы в разных областях памяти:
Код
MEMORY
{
LMB : ORIGIN = 0x0, LENGTH = 0x1000
OPB : ORIGIN = 0x8000, LENGTH = 0x5000
}
  ...
.text : {
/* Uncomment the following line to add specific files in the opb_text */
/* region */
/* *(EXCLUDE_FILE(file1.o).text) */
/* Comment out the following line to have multiple text sections */
*(.text)
} >LMB
  ...
.opb_text : {
/* Uncomment the following line to add an executable section into */
/* opb memory */
/* file1.o(.text) */
} >OPB
  ...

Может можно все-таки как то с помощью директив компилятора куски кода по секциям рассовывать?
Например, в VisualDSP (Analog Devices), это делается с помощью section("memory") перед объектом.
makc
По умолчанию все функции ложатся в секцию .text объектных файлов. Для того, чтобы изменить целевую секкцию функции можно использовать аттрибут section следующиего вида:
Код
extern void foobar (void) __attribute__ ((section ("bar")));


В результате функция foobar ляжет в секцию bar. А дальше уже дело линковщика слинковать все так, как описано в линкер-скрипте.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.