Quasar 20 31 октября, 2016 Опубликовано 31 октября, 2016 · Жалоба Всех приветствую. Есть сторонняя библиотека, собранная в IAR - ".a" файл. Её надо подключить к проекту в Keil с RealView. Библиотеки и в IAR, и в Keil - просто архивы с объектными файлами, но формат объектных файлов у компиляторов свой, и один к другому не подходит. Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib? Дело все происходит на Cortex-M4, STM32 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Есть ли какой-либо вариант от конвертировать IAR'овский ".a"-файл в Keil'овский .lib? Наверняка есть. Ведь библиотеки в разных форматах всё равно должны содержать одну и ту же информацию, просто в разных представлениях. Но, боюсь, программу конвертации придётся делать самому. Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации. Я вот тоже к этому склоняюсь. То есть как-то так: 1) Создаем проект в IAR с этой библиотекой; 2) Адреса всех нужных функций складываем в таблицу; 3) Таблицу кладем по известному адресу (собственно, как и весь скомпилированный бинарник); 4) В проекте Keil вытаскиваем из этой таблицы адреса функций и используем их. Вроде все должно получиться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Вроде все должно получиться? Да, должно. Наверняка можно даже не класть таблицу адресов функций в прошивку. Можно как-то скормить эти адреса кейловскому линкеру, чтобы он сразу подставлял их в местах вызова функций. Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Кстати, надо убедиться, что у яра и кейла одинаковые 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться