2015-04-13 8 views
1

Мне удалось создать код в IAR EWARM (7.40) (для ST ST32M407IG ARM Cortex-m4), который ссылается на библиотеку, созданную под Ubuntu через gcc (4.9.3). Это в основном работает, но некоторые корректировки среды сборки на обеих сторонах IAR или gcc по-прежнему остаются. Я был бы признателен за любую помощь, на которую вы могли бы мне помочь.iar ewarm, связанный с библиотекой сборки gcc eabi

Ошибки сборки отсутствуют, но EWARM и arm-none-eabi-gcc не согласны с тем, что параметры параметров передаются в встроенную библиотеку gcc. Отладчик EWARM и код, сгенерированный EWARM, согласуются друг с другом, но (по-видимому, до сих пор проводятся исследования), что местоположения, ожидаемые сгенерированным кодом gcc, смещены от ожидаемых EWARM на восемь байтов. Я исследовал только один вызов, поэтому это может быть не постоянным ...

Флаги компилятора IAR включают в себя: --aeabi и --guard_calls в соответствии с разделом: «Соответствие AEABI» в разделе справки EWARM. Флаги компилятора arm-none-eabi-gcc включают в себя: -gdwarf-3 -mabi = aapcs -march = armv7e-m -mthumb.

Я считаю, что это говорит как EWARM, так и gcc, чтобы играть хорошо вместе со стандартными процедурами ARM AAPCS и форматами dwarf v3.

EWARM, похоже, доволен либо -gdwarf-2, либо -gdwarf-3 (но не -4). Этот выбор не влияет на проблему, о которой говорилось выше.

Что еще требуется?

ответ

0

Ответ на вопрос «Что еще требуется?» кажется, ничего. Просто убедитесь, что все макросы, оцененные операторами #ifdef, совпадают в средах, поэтому вы не получите структуры данных различного размера в двух разных средах! #ifdef код - это файлы заголовков, которые должны быть тщательно оценены ...