Чем отличается Keil от GCC для разработки ARM7? Я нахожусь в процессе выбора консультантов по hw для проекта среднего размера, и некоторые используют keil, а некоторые - gcc. Я хотел бы знать подводные камни, связанные с выбором любого из вариантов ...
Keil против GCC для ARM7?
Ответы (5)
Между ними очень мало различий с точки зрения кодирования / разработки. Единственное, что, я думаю, вы должны учитывать, не относится к этим компиляторам. Техническое обслуживание:
- Сможете ли вы поддерживать программное обеспечение, если у вас нет доступа к компилятору Keil, или это будет небольшая плата?
- Также какое отладочное оборудование / JTAG поддерживается и какова будет стоимость, если вам понадобится их приобрести?
- Какова будет стоимость, если вам придется перейти с одного компилятора на другой из-за необходимости смены разработчиков позже?
Если вы не очень чувствительны к затратам, я думаю, что реальный вопрос заключается в том, кто сделает работу лучше всего, поскольку компилятор будет незначительной проблемой.
Должна быть возможность структурировать ваш код для использования обоих компиляторов. Такие атрибуты, как «упаковано», могут быть добавлены макросом, так что код будет работать с обоими. Переместите детали оборудования на более низкие уровни и настройте карты оборудования во время выполнения, а не во время компиляции. Если у вас должны быть отдельные версии кода для Kiel и GCC, поместите их в отдельные файлы и настройте, который используется с gcc make или файлом проекта Kiel.
Одна проблема, которую мне еще предстоит решить, - это код ассемблера. Kiel использует armasm, а gcc - as. Похоже, у них очень разные форматы исходного кода. Еще одна причина по возможности избегать ассемблера.
Преимущество использования GCC заключается в том, что вы можете ориентироваться на платформы, отличные от ARM, что идеально подходит для моделирования вашего приложения на платформе с гораздо лучшими инструментами разработки (например, valgrind под x86 linux). Фактически, это подход, которого должно придерживаться каждое приложение, ориентированное на ARM. Сначала разработайте на x86, а затем перенесите на ARM.
Есть еще и стоимость того, чтобы оставаться в курсе дела с Килем. Когда-то место, которое я знаю, застряло на RVDK 2.1 (2002?), Потому что стоимость обновления до последней для трех разработчиков непомерно высока.
Я также добавлю, что gcc & pedantic будет вытряхивать предупреждения и ошибки в вашем коде намного лучше, чем наша (по общему признанию древняя) версия Kiel.
Киль может предоставить более жесткий код ARM, поэтому оставьте его для выполнения целевых сборок. В противном случае используйте GCC.
Если я правильно помню, Киль теперь принадлежит ARM. Компиляторы ARM днем и ночью лучше, чем gcc, для создания хорошего кода. Кажется, я помню, как Кейл включил сокращенную или бесплатную или любую другую версию rvct. Итак, мой вопрос заключается в том, что код намного быстрее, чище и лучше, стоит использовать коммерческое решение, когда gcc существует и хорошо используется? Я бы выбрал gcc, если вы не находитесь в ситуации нехватки производительности и не хотите мысленно переводить всю информацию на основе gcc, свободно доступную в сети, в ваши коммерческие инструменты и обратно. В целом, использование gcc, вероятно, является лучшим путем, при условии, что за окном поиска Google для Kiel, вероятно, есть много информации, но объем знаний и информации о решениях на основе gcc затмевает это.
Если консультанты используют один инструмент для выполнения первоначальной работы над проектом за вас, а затем, в конце, они передают работу, вы, вероятно, захотите иметь решение на основе gcc (это не означает, скажем, vxworks gcc или даже исходный код кода. gcc, но общее решение gcc), потому что, без сомнения, вам или кому-то еще, кого вы наняли, придется собрать эту массу и работать с ней, а с gcc вы с большей вероятностью найдете кого-то желающего и способного.
Основное преимущество коммерческого решения - это поддержка для меня, если у вас возникнут проблемы с компилятором или библиотеками.
Открытый исходный код подходит, когда вы используете оборудование основного потока (в случае gcc = x86). Большинство проблем компилятора или библиотек обычно очень скоро будут исправлены сообществом.
Если вы разрабатываете на (возможно, экзотической) встроенной платформе, вы скоро можете почувствовать себя довольно одиноко, если у вас возникнут какие-либо проблемы с цепочкой инструментов .
Мы используем платформу Keil и очень довольны ее производительностью и оптимизацией. Пару лет назад я провел несколько стандартных тестов, и они оказались неплохими. Еще одно соображение - поддержка, и до сих пор у Keil было очень хорошее время отклика и относительно хорошие отзывы по некоторым сложным вопросам.
К вашему сведению, если ваш проект будет использовать Keil RTOS и у вас есть какие-либо вопросы по этому поводу, исходный код доступен для покупки.