Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конвертирование библиотеки из IAR в Keil
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > Keil
Quasar
Всех приветствую.

Есть сторонняя библиотека, собранная в IAR - ".a" файл. Её надо подключить к проекту в Keil с RealView. Библиотеки и в IAR, и в Keil - просто архивы с объектными файлами, но формат объектных файлов у компиляторов свой, и один к другому не подходит. Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib?

Дело все происходит на Cortex-M4, STM32
scifi
Цитата(Quasar @ Nov 1 2016, 01:18) *
Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib?

Наверняка есть. Ведь библиотеки в разных форматах всё равно должны содержать одну и ту же информацию, просто в разных представлениях. Но, боюсь, программу конвертации придётся делать самому.
Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации.
Quasar
Цитата(scifi @ Nov 1 2016, 09:54) *
Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации.


Я вот тоже к этому склоняюсь.

То есть как-то так:

1) Создаем проект в IAR с этой библиотекой;
2) Адреса всех нужных функций складываем в таблицу;
3) Таблицу кладем по известному адресу (собственно, как и весь скомпилированный бинарник);
4) В проекте Keil вытаскиваем из этой таблицы адреса функций и используем их.

Вроде все должно получиться?


scifi
Цитата(Quasar @ Nov 1 2016, 10:50) *
Вроде все должно получиться?

Да, должно.
Наверняка можно даже не класть таблицу адресов функций в прошивку. Можно как-то скормить эти адреса кейловскому линкеру, чтобы он сразу подставлял их в местах вызова функций.
Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.).
Quasar
Цитата(scifi @ Nov 1 2016, 10:55) *
Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.).


Вроде как:

http://supp.iar.com/FilesPublic/UPDINFO/00...r/ewarm.ENU.htm
Цитата
The IAR C/C++ compiler, assembler, linker and debugger comply with ARM EABI 2.0 - the Embedded Application Binary Interface for ARM - based on ELF/DWARF 3.0. The advantage of AEABI compliance is that any such module can be linked with any other AEABI compliant module, even modules provided by other vendors. This will for example allow modules created by GNU, ARM RealView and IAR Embedded Workbench for ARM to be linked together.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.