Должна быть возможность структурировать ваш код, чтобы использовать оба компилятора. Атрибуты типа «упакованные» могут быть макросов, поэтому код подходит для обоих. Переместите сведения об оборудовании на более низкие уровни и настройте карты оборудования во время выполнения, а не во время компиляции. Если у вас должны быть отдельные версии кода для Kiel и GCC, поместите их в отдельные файлы и настройте, который используется с GCC make или файлом проекта Kiel.
Одна проблема, которую мне еще предстоит решить, - это ассемблерный код. Киль использует armasm, а gcc использует as. Кажется, они имеют очень разные форматы исходного кода. Еще одна причина избегать ассемблера, если можете.
Преимущество использования GCC заключается в том, что вы можете ориентироваться на платформы, отличные от ARM, что идеально подходит для имитации вашего приложения на платформе с гораздо лучшими инструментами разработки (например, valgrind под x86 linux). Фактически, это подход, который должен использовать каждое ARM-ориентированное приложение. Сначала разработайте на x86, затем перенесите на ARM.
Есть также стоимость того, чтобы оставаться в курсе с Килем. Одно место, которое я знаю, застряло на RVDK 2.1 (2002?), Потому что стоимость обновления до последней версии для трех разработчиков непомерно высока.
Я бы также добавил, что gcc & pedantic вытряхнет предупреждения и ошибки в вашем коде намного лучше, чем наша (предположительно древняя) версия Kiel.
Киль может предоставить более жесткий код ARM, поэтому сохраняйте его для выполнения целевых сборок. В противном случае используйте GCC.