Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Embedded VC для ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
VslavX
Сейчас работаю с 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 компилер тоже неплохой, так что линкер таки тоже желательно уговорить.
Кто-нибудь такую проблему уже решал?
sergeeff
Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам.

Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет.
VslavX
Цитата(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 был без надобности - линкер вот уговариваю.
sergeeff
Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор!
VslavX
Цитата(sergeeff @ Oct 31 2005, 14:15)
Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор!
*

Жаль, это был один из вариантов, который я собирался пробовать. А может быть можно cod файлы скормить штатному bscmake из VC6?
Чтобы не было неясностей, изложу ситуацию подробней:
- сейчас работаю VC6 + makefile + кросс-компилятор + perl-фильтры
- поставил eVC, скомпилил проект по умолчанию - проблемы с линкером
- _отдельно_ от eVC написал makefile (запускаю nmake из Far-а) из которого
вызываю строчные тулзы от eVC. Согласитесь - VC/eVC не самая лучшая среда для отладки makefile smile.gif Командная строчка удобней. Вот на этом этапе я и подзадержался sad.gif - надо "уговорить линкер"
sergeeff
В догонку. Я тут погорячился насчет bsc ARM evc++ в VC. Все нормально понимается, сам раньше неправильно ключи компилятора установил. Прошу прощения за дезу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.