Keil против GCC для ARM7?

Чем отличается Keil от GCC для разработки ARM7? Я нахожусь в процессе выбора консультантов по hw для проекта среднего размера, и некоторые используют keil, а некоторые - gcc. Я хотел бы знать подводные камни, связанные с выбором любого из вариантов ...


person c0m4    schedule 04.08.2009    source источник
comment
KEIL предоставляет компактную и стабильную интегрированную среду разработки, включающую компилятор C / C ++, отладчик и интерфейс JTAG / SWD. Они работают слаженно с минимальной настройкой. С другой стороны, если вы хотите использовать GCC, вам необходимо подготовить агент JTAG (например, OpenOCD), и его настройка может стать сложной задачей. Короче говоря, KEIL - это более стабильная и компактная инструментальная цепочка, позволяющая с минимальными усилиями реализовать проект. Но если вы хотите узнать, как JTAG и удаленная отладка работают с сервером GDB, я определенно предлагаю инструменты с открытым исходным кодом. Это мои два цента.   -  person albin    schedule 11.05.2018
comment
Кастиону почти 9 лет, приятно видеть, что ситуация остается стабильной.   -  person c0m4    schedule 12.05.2018


Ответы (5)


Между ними очень мало различий с точки зрения кодирования / разработки. Единственное, что, я думаю, вы должны учитывать, не относится к этим компиляторам. Техническое обслуживание:

  • Сможете ли вы поддерживать программное обеспечение, если у вас нет доступа к компилятору Keil, или это будет небольшая плата?
  • Также какое отладочное оборудование / JTAG поддерживается и какова будет стоимость, если вам понадобится их приобрести?
  • Какова будет стоимость, если вам придется перейти с одного компилятора на другой из-за необходимости смены разработчиков позже?

Если вы не очень чувствительны к затратам, я думаю, что реальный вопрос заключается в том, кто сделает работу лучше всего, поскольку компилятор будет незначительной проблемой.

person Gerhard    schedule 04.08.2009

Должна быть возможность структурировать ваш код для использования обоих компиляторов. Такие атрибуты, как «упаковано», могут быть добавлены макросом, так что код будет работать с обоими. Переместите детали оборудования на более низкие уровни и настройте карты оборудования во время выполнения, а не во время компиляции. Если у вас должны быть отдельные версии кода для 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.

person Craig Mc    schedule 20.11.2011

Если я правильно помню, Киль теперь принадлежит ARM. Компиляторы ARM днем ​​и ночью лучше, чем gcc, для создания хорошего кода. Кажется, я помню, как Кейл включил сокращенную или бесплатную или любую другую версию rvct. Итак, мой вопрос заключается в том, что код намного быстрее, чище и лучше, стоит использовать коммерческое решение, когда gcc существует и хорошо используется? Я бы выбрал gcc, если вы не находитесь в ситуации нехватки производительности и не хотите мысленно переводить всю информацию на основе gcc, свободно доступную в сети, в ваши коммерческие инструменты и обратно. В целом, использование gcc, вероятно, является лучшим путем, при условии, что за окном поиска Google для Kiel, вероятно, есть много информации, но объем знаний и информации о решениях на основе gcc затмевает это.

Если консультанты используют один инструмент для выполнения первоначальной работы над проектом за вас, а затем, в конце, они передают работу, вы, вероятно, захотите иметь решение на основе gcc (это не означает, скажем, vxworks gcc или даже исходный код кода. gcc, но общее решение gcc), потому что, без сомнения, вам или кому-то еще, кого вы наняли, придется собрать эту массу и работать с ней, а с gcc вы с большей вероятностью найдете кого-то желающего и способного.

person old_timer    schedule 04.08.2009

Основное преимущество коммерческого решения - это поддержка для меня, если у вас возникнут проблемы с компилятором или библиотеками.
Открытый исходный код подходит, когда вы используете оборудование основного потока (в случае gcc = x86). Большинство проблем компилятора или библиотек обычно очень скоро будут исправлены сообществом.
Если вы разрабатываете на (возможно, экзотической) встроенной платформе, вы скоро можете почувствовать себя довольно одиноко, если у вас возникнут какие-либо проблемы с цепочкой инструментов .

person chrmue    schedule 04.08.2009
comment
Честно говоря, как часто вы сталкиваетесь с проблемами с компилятором? Я много лет использую коммерческие варианты (при разработке ARM7 и 8051) и редко испытывал трудности. - person Nate; 04.08.2009
comment
@Nate: повезет! здесь мы используем gcc для ARM9, и когда мы попытались использовать оптимизацию, возникла действительно неприятная проблема с компилятором. Как бы нам ни повезло, мы нашли патч, решающий эту проблему. Несколько лет назад я работал в другой компании, и там нам пришлось перейти с gcc (для C166) на KEIL, потому что библиотеки были полны ошибок. - person chrmue; 04.08.2009
comment
Как сотрудник CodeSourcery, я чувствую, что должен указать, что коммерческое решение и открытый исходный код не являются выбором либо-либо - мы продаем решения на основе GCC с полной поддержкой коммерческого уровня для решения и предотвращения такого рода проблем. . (Мы не единственная компания, которая продает поддержку GCC.) - person Brooks Moses; 05.08.2009
comment
Работая с DEC и Intel над их компоновщиком и компилятором VC ++ соответственно, даже наличие поддержки не свидетельствует о получении поддержки. Мне потребовалось три месяца, чтобы получить компоновщик DEC Alpha, который мог бы собрать исполняемый файл размером 32 МБ. Три месяца невозможности отправить мой код на ИХ платформу. Довольно плохо (и, возможно, это признак того, почему они сейчас мертвы). - person Chris K; 11.08.2009
comment
Мы используем компилятор Rowley CrossWorks - GCC под капотом, но с коммерческой поддержкой. Поддержка была отличной - лучше, чем у IAR, судя по моему опыту. - person peter_mcc; 01.12.2010
comment
ну, вся эта ветка смутила меня еще больше. Я просто хочу создать что-то, что будет работать с наименьшим количеством проблем. Фактически, теперь я слышал о множестве источников gcc и множестве мест для поддержки. мой Бог. хорошо, это очень крутая кривая обучения :) - person hamish; 08.04.2017

Мы используем платформу Keil и очень довольны ее производительностью и оптимизацией. Пару лет назад я провел несколько стандартных тестов, и они оказались неплохими. Еще одно соображение - поддержка, и до сих пор у Keil было очень хорошее время отклика и относительно хорошие отзывы по некоторым сложным вопросам.

К вашему сведению, если ваш проект будет использовать Keil RTOS и у вас есть какие-либо вопросы по этому поводу, исходный код доступен для покупки.

person Answerguru    schedule 11.08.2009