реклама на сайте
подробности

 
 
> Как работает компилятор C для BlackFin?, несколько глобальных вопросов
K A A
сообщение Oct 12 2006, 11:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 15-06-06
Пользователь №: 18 069



Начал писать программу для BlackFin и возникло несколько вопросов:
1. Объектные файлы линкуются, используя информацию из .ldf. Где можно почитать об этом подробно по-русски, как этот ldf настраивать? Знаю, что есть описание на английском, но тяжеловато все сразу осилить.
2. Это принятый в индустрии метод или что-то специфичное для AD, все эти секции, а в них какие-то непонятные объекты? До этого писал программы на C с помощью gcc для AVR, там с такими вещами не сталкивался.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
dxp
сообщение Oct 12 2006, 12:34
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(K A A @ Oct 12 2006, 18:24) *
Начал писать программу для BlackFin и возникло несколько вопросов:
1. Объектные файлы линкуются, используя информацию из .ldf. Где можно почитать об этом подробно по-русски, как этот ldf настраивать? Знаю, что есть описание на английском, но тяжеловато все сразу осилить.
2. Это принятый в индустрии метод или что-то специфичное для AD, все эти секции, а в них какие-то непонятные объекты? До этого писал программы на C с помощью gcc для AVR, там с такими вещами не сталкивался.
Заранее спасибо.

ldf - линкерный скрипт, служит для управления размещением секций с данными, кодом и т.д. по конкретным физическим адресам в процессе компоновки. Это обычно дело, такой подход используется почти везде. И в gcc тоже - например, в виндовом avr-gcc линкерные скрипты лежат WinAVR\avr\lib\ldscripts\. Это есть и у IAR, и у VDSP, и CCS и у многих других пакетов. А как иначе управлять компоновкой?

Насчет русскоязычного описания не знаю, вряд ли оно существует. И лучше на это не рассчитывать. Если уж взялись за этот проц, надо быть готовым к шудированию сотен страниц на аглицком. Он нам не такой уж и сложный (совсем не Хемингуэй smile.gif ).

В составе VDSP еще есть визуальный редактор линкерных скриптов, называется Expert Linker (меню Tools). Позволяет выдавать карту памяти в графике и редактировать ее в этом виде. Но я не пользовался. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
K A A
сообщение Oct 12 2006, 13:13
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 15-06-06
Пользователь №: 18 069



ОК, а чем отличается Memory Segment от Output Section?
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 12 2006, 13:47
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(K A A @ Oct 12 2006, 20:13) *
ОК, а чем отличается Memory Segment от Output Section?

Секции - это то, куда компилятор и ассемблер "складывают" объекты (переменные). Типа контейеров данных в объектных файлах. А сегменты памяти - это области физической памяти целевой платформы. И скрипт как раз и указывает линкеру какие секции (с объектами) в какие сегменты физической памяти рассовывать.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
impatt
сообщение Oct 23 2006, 04:31
Сообщение #5


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Цитата(K A A @ Oct 12 2006, 14:24) *
Начал писать программу для BlackFin и возникло несколько вопросов:
1. Объектные файлы линкуются, используя информацию из .ldf. Где можно почитать об этом подробно по-русски, как этот ldf настраивать? Знаю, что есть описание на английском, но тяжеловато все сразу осилить.
2. Это принятый в индустрии метод или что-то специфичное для AD, все эти секции, а в них какие-то непонятные объекты? До этого писал программы на C с помощью gcc для AVR, там с такими вещами не сталкивался.
Заранее спасибо.

Так как не понял, каким компилятором пользуешься, предполагаю, что gcc.
Линкер в состеве gcc, можно сказать, отсутствует, - он находится в составе binutils и называется ld. Информации на русском по линкеру и его скриптам можно найти здесь: http://www.opennet.ru/docs/RUS/gnu_ld/
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016