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

 
 
 
Reply to this topicStart new topic
> Конвертирование библиотеки из IAR в Keil, .a -> .lib
Quasar
сообщение Oct 31 2016, 22:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Всех приветствую.

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

Дело все происходит на Cortex-M4, STM32
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 1 2016, 06:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Наверняка есть. Ведь библиотеки в разных форматах всё равно должны содержать одну и ту же информацию, просто в разных представлениях. Но, боюсь, программу конвертации придётся делать самому.
Другой вариант - это прикрутить к библиотеке двоичный интерфейс (некий ABI в виде таблицы функций и т.п.), собрать и прицепить к проекту в виде двоичного куска. Должно быть сильно проще, чем изобретать программу конвертации.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Nov 1 2016, 07:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



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


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

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

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

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


Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 1 2016, 07:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Да, должно.
Наверняка можно даже не класть таблицу адресов функций в прошивку. Можно как-то скормить эти адреса кейловскому линкеру, чтобы он сразу подставлял их в местах вызова функций.
Кстати, надо убедиться, что у яра и кейла одинаковые ABI (порядок записи аргументов функции в регистры, список сохраняемых и не сохраняемых регистров и т.п.).
Go to the top of the page
 
+Quote Post
Quasar
сообщение Nov 1 2016, 08:08
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(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.

Go to the top of the page
 
+Quote Post

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

 


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


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