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

 
 
> Embedded VC для ARM, Уговорить линкер
VslavX
сообщение Oct 28 2005, 14:52
Сообщение #1


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Сейчас работаю с ARM кросс-компиляторами IAR (4.11) и GCC (самосбор 3.2).
Работаю, возможно, несколько извращенно - MS VC++ 6.0 в качестве среды.
(для Windows тоже много писать приходится) К проекту прикручивается makefile который собственно билдает, тулзы программирования и мониторинга и проч.
Матюки кросс-компиляторов пропускаются через perl-скрипты и выдаются в VC в стиле "аля MS". Поэтому навигация по ошибкам пашет на ура.
А теперь мне вот еще очень source-browse захотелось - очень уж с ним классно в чужих сырцах разбираться.
Ну взял я MS EVC++ 4.0. Все выглядит привычно, но вот никак не получается у меня MS линкер уговорить разместить код с адреса 0. Заточено оно под WinCE/Win32, а там эта область - железное табу (NULL pointer area).
В-общем-то, можно и не линковать - другой компилятор использовать, а MS только для построения bsc-файла запускать. Но я так посмотрел - у MS ARM компилер тоже неплохой, так что линкер таки тоже желательно уговорить.
Кто-нибудь такую проблему уже решал?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Oct 31 2005, 07:40
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам.

Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 31 2005, 09:41
Сообщение #3


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(sergeeff @ Oct 31 2005, 10:40)
Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам.

Действительно, релокатор написать - не проблема, формат PE хорошо документирован, тем более приходилось уже писать релокаторы (для MZ-exe). Дык, лень же smile.gif - после великолепных универсальных линкеров
xlink и ld. Если никто более приличного не посоветует, возможно-таки и напишу релокатор.
Цитата(sergeeff @ Oct 31 2005, 10:40)
Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет.

А я в eVC makefile не прикручивал. Я прикрутил его в обычный VC smile.gif. А в eVC
пока makefile был без надобности - линкер вот уговариваю.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 31 2005, 11:15
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 21:12
Рейтинг@Mail.ru


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