Вопрос

Мы начинаем новый проект на базе микросхемы PIC18F252.Какой компилятор C лучше всего использовать?

Это было полезно?

Решение

Технология PICC всегда была для меня надежной и развивалась в течение многих лет.

Другие советы

  1. Компилятор микрочипа C18:действительно лучший и простой в использовании.Идеально подходит для профессионального использования.
  2. ПЕРЕДОВЫЕ ТЕХНОЛОГИИ:Используется, когда микрочип не работает (было для PIC16).
  3. CCS
  4. ИсточникBoost

ПС:Я сам работал над семейством PIC18F25XX и PIC18F45xx, поэтому знаю кое-что кусочек об этом.;)

ПС2:В случае ошибки компилятора (это случилось с нами) команда Microchip очень быстро реагирует и новые версии выпускаются довольно быстро.Попробуйте найти местного реселлера, который имеет контакт с Microchip, затем примите участие в мероприятии с ним и получите прямые контакты.Бесценный.

Несколько лет назад я провел обширное исследование компиляторов Hitech PICC18 и Microchip C18.

Я думаю, что большинство людей решают использовать компилятор Microchip C18 только потому, что видят его, когда заходят на сайт микрочипа, и уже знакомы с MpLab по сборке (что, ИМХО, ужасная IDE).

Решение HiTech намного ближе к ANSI C (следовательно, код гораздо более переносим).С C18 вы добавляете все виды ключевых слов, специфичных для компилятора, и вам приходится гораздо больше управлять памятью.

  1. Вы должны указать, в какой банк оперативной памяти распределить переменные.
  2. Чтобы строка const была выделена для пространства программы (вместо оперативной памяти), вам необходимо использовать ключевое слово rom.
  3. Вы не можете разместить переменные размером более 256 байт без редактирования сценария компоновщика.

Отличное сравнение, которое идет более подробно, можно найти здесь: http://www.xargs.com/pic/picc18-vs-c18.html

Помимо компилятора вам также необходимо принять во внимание IDE.Я страстный поклонник Eclipse, и именно по этой причине мне очень понравился HiTide от HiTech.Однако, поскольку Microchip приобрела HiTech...похоже, HiTide они больше не поддерживают.Я не думаю, что это официально...но из моего опыта поддержки HiTech...они больше не исправляют ошибки, и это настоящий позор.


Я также пробовал их профессиональные компиляторы.Мне очень нравится эта идея.Но мой проект превысил требования к блокированию автоматических параметров и не смог его использовать.Также казалось, что компиляция заняла очень много времени, но это могло быть из-за сложности программы.

Я не пользовался компилятором Microchip, но уже много лет пользуюсь продуктами HiTech.В целом мне понравился их компилятор PIC16, но компилятор PIC18 меня несколько разочаровал.Хотя я ценю отсутствие необходимости вручную помещать все переменные в банки, правила, используемые компилятором HiTech, раздражают, причудливы и глупы.Краткая предыстория:чип имеет 16 банков переменных по 256 байт (*не все 256 байт доступны во всех банках) и один указатель банка.Прямой доступ к переменной требует выбора соответствующего банка;смена банков занимает одну инструкцию.

Глобальные и статические целые числа и структуры, а также их массивы, размер которых колеблется от 2 до 255 байт, каждый будет выделен в psects для каждого модуля;psect каждого модуля должен умещаться на странице размером 256 байт.Массивы байтов, а также отдельные байты объединяются в «большую» секцию, где предполагается, что каждый байт может находиться на отдельной странице.

Все автоматические переменные и параметры в программе должны умещаться на странице размером 256 байт (они выделяются статически во время компоновки).Компоновщик накладывает переменные, которые никогда не действуют одновременно, но предполагает, что любой вызов указателя функции с определенной сигнатурой может вызвать любую функцию, чей адрес взят и которая имеет эту сигнатуру.

Можно объявить глобальные и статические переменные размером до 128 байт как «near».Доступ к ним возможен без переключения банков.Невозможно указать, что автоматические переменные или параметры должны располагаться «рядом».

Правила переключения банков, используемые HiTech, означают, что многие функции, даже если они никогда не используют какие-либо переменные за пределами своего собственного модуля, будут дополнены инструкциями movlb (переключения банка).

Мне не нужна «всезнающая генерация кода».Мне нужна возможность добавить несколько подсказок для разумного размещения вещей, определяя ключевые слова или макросы для пользовательских psect, позволяя автоматическим и локальным переменным совместно использовать psect с другими переменными (наложение автоматических переменных/параметров, насколько это возможно, с учетом указанных банковских ограничений).Если поставщик компилятора действительно хочет быть вежливым, разрешите указателям принимать квалификаторы банка, чтобы указатель, который всегда указывал бы только на вещи в определенном фрагменте, мог храниться в 8 битах.Аналогичным образом разрешите квалификаторам банка функций и указателям на функции указывать, что определенные косвенные вызовы могут работать только с определенными функциями.Вместо того, чтобы делать указатели функций 24-битными или работать над тем, чтобы функции, вызываемые косвенно, попадали в первые 64 КБ, поместите автоматический переход GOTO в первые 64 КБ, чтобы указатели функций могли быть 16-битными.Или еще лучше, если «класс» функции имеет менее 64 различных функций, используйте 8-битный указатель.

Я прошу слишком многого?

Мы используем CCS и это очень хорошо.Очень медленно, но работает хорошо.В любом случае, у меня нет сравнения с другими компиляторами, так что, возможно, есть варианты получше.

CCS мне не понравился, он был слишком причудливым.

SourceBoost неплох и довольно дешев, около 40 фунтов стерлингов.

Компилятор Microchip C18 — лучший по моему мнению, но очень дорогой.Однако существует бесплатная демо-версия или студенческая версия.

В настоящее время я использую CCS и ненавижу его.Он настолько нестандартен и представляет собой подмножество C, что просто отстой.Я подумываю о смене в ближайшее время.Сначала я попробую компилятор Microchip C18, а затем с трудом сглотну и получу HighTech, который кажется довольно надежным, судя по обзору пробной версии и образцов.

В системе IAR имеется компилятор/IDE PIC18: Встроенная рабочая среда IAR для PIC18.

Я использую CCS уже много лет.Я нашел несколько ошибок, но поддержка отличная, и с CCS я могу разрабатывать быстрее и проще, чем с C18 или HiTec.

используйте SDCC:

http://sdcc.sourceforge.net/

а для несвободного (но бесплатного!) PIC-компилятора mikroC — gr8!

http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/

ХТХ

Я бы настаивал на использовании компилятора C18.Он чрезвычайно прочен и очень прост в использовании.Это необходимо для профессионального развития.Это действительно зависит от размера проекта, над которым вы работаете.

Начните с бесплатной/студенческой версии, и вы почувствуете, как ее использовать.Если ваш проект небольшой, это может быть все, что вам нужно.Я только что закончил крупный проект разработки на PIC 18F и был очень доволен компилятором C18.

MPLAB C18 - Студент

Я использую SourceBoost около года и не в полном восторге, но все в порядке.Однако я только что завершил тест размера кода между SourceBoost 7, MCC18 и Hi-Tech C.Результаты были замечательными.

Для небольшого примера программы (которая включала в себя структуры, массивы, указатели функций, указатели структур, символы и целые числа) комплект SB7 создавал код, размер которого составлял примерно 2/3 размера MCC18 и HTC.Я хотел определить, какая часть этих расходов приходится на запуск и время выполнения, поэтому я добавил больше случайных элементов в пример программы, и разница в размере показала, что размер SB по-прежнему составляет 2/3 от размера остальных.HTC был немного меньше MCC18, но незначительно.Все оптимизации включены во всех средах.

Что мне не нравится в SB:

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

Что мне в нем нравится:

  • Ну, размер кода, конечно, кажется меньше, чем у конкурентов.
  • Несколько расширений языка (например.Рекомендации).Однако убивает портативность.
  • Цена.
  • Поддержка на форумах на самом деле довольно хорошая.Авторы часто публикуют.
  • Автоматическое удаление неиспользуемого кода (думаю, эта функция замедляет компиляцию и компоновку)

Поскольку мне не нравится SB IDE, я использую Source Insight в качестве редактора, и он ПОТРЯСАЮЩИЙ!Утилита SB make также безнадежна, поэтому я использую GnuWin32 make, которая абсолютно полезна и бесплатна.

В общем, я чувствую себя немного лучше в выборе инструментов.

В любом случае, надеюсь, это кому-то поможет.

MPLAB C-18 хорош, и у них есть бесплатная студенческая версия.Он имеет хороший пользовательский интерфейс, который достаточно прост и не сбивает с толку пользователей.Это то, что я использую.

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

Если вы настроены на c:

CCS — хороший в использовании компилятор, немного глючный и довольно дорогой, но также обладающий хорошими возможностями отладки.

Microsoft Embedded Studio (или что-то в этом роде) отлично подойдет, если вы уже привыкли к методологии написания кода на языке C, используемой в Visual Studio 6.Опять же хорошая аппаратная поддержка и отличный отладчик.

Я считаю, что если вы ищете бесплатное решение, вы действительно можете получить компиляторы C для MPLAB, хотя лично я никогда ими не пользовался, поэтому не могу судить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top