Какой лучший компилятор c для Pic18 микро
Мы начинаем новый проект на основе микрочипа PIC18F252. Какой компилятор 'c' лучше всего использовать?
15 ответов
Технология PICC всегда была для меня надежной и имела многолетнее развитие.
- Компилятор Microchip C18: действительно лучший и самый простой в использовании. Идеально подходит для профессионального использования.
- HI-TECH: используется, когда микрочип не работает (это было для PIC16).
- CCS
- SourceBoost
PS: Я сам работал над семейством PIC18F25XX и PIC18F45xx, поэтому я немного об этом знаю.;)
PS2: В случае ошибки компилятора (это случилось с нами), команда Microchip довольно быстро реагирует, и новые версии выпускаются довольно быстро. Попробуйте найти местного торгового посредника, который имеет контакты с Microchip, а затем поучаствуйте в мероприятии с ними и получите прямые контакты. Бесценный.
Несколько лет назад я провел обширные исследования компилятора Hitech PICC18 и компилятора Microchip C18.
Я думаю, что большинство людей, которые решили использовать компилятор Microchip C18, только потому, что они видят его, когда заходят на сайт микрочипов, и уже знакомы с MpLab по сборке (что является ужасной IDE IMHO).
Решение HiTech намного ближе к ANSI C (следовательно, код гораздо более переносим). С C18 вы добавляете все виды ключевых слов, специфичных для компилятора, и вынуждены гораздо больше управлять памятью.
- Вы должны указать, какому банку оперативной памяти выделять переменные.
- Чтобы константная строка была выделена для пространства Программы (вместо ram), вы должны использовать ключевое слово rom.
- Вы не можете размещать переменные размером более 256 байт без редактирования скрипта компоновщика.
Отличное сравнение, которое идет глубже, можно найти здесь: http://www.xargs.com/pic/picc18-vs-c18.html
Кроме того, от компилятора также необходимо учитывать IDE. Я заядлый поклонник затмения, и поэтому мне очень понравился HiTide HiTech по этой причине. Однако, так как Microchip приобрел HiTech... кажется, что они больше не поддерживают HiTide. Я не думаю, что это официально... но из моего опыта поддержки HiTech... они больше не исправляют ошибки, что является настоящим позором.
Я также попробовал их про компиляторы. Мне очень нравится идея. Но мой проект превысил требования к блоку auto param и не смог его использовать. Похоже, что компиляция заняла слишком много времени, но это могло быть из-за сложности программы.
Я не использовал компилятор Microchip, но использую продукты HiTech в течение многих лет. Мне вообще понравился их компилятор PIC16, но я считаю их компилятор PIC18 довольно разочаровывающим. Несмотря на то, что я ценю отсутствие необходимости помещать все переменные в банки, правила, используемые компилятором HiTech, раздражают, причудливы и глупы. Краткая справка: чип имеет 16 256-байтовых банков переменных (* не все 256 байтов доступны во всех банках) и один указатель банка. Прямой доступ к переменной требует выбора правильного банка; смена банков занимает одну инструкцию.
Глобальные и статические целые числа и структуры, а также их массивы, размер которых колеблется от 2 до 255 байт, будут выделяться в psects для каждого модуля; psect каждого модуля должен умещаться на 256-байтовой странице. Массивы байтов, а также отдельные байты входят в "большой" psect, где предполагается, что каждый байт находится на другой странице.
Все автоматические переменные и параметры в программе должны умещаться на 256-байтовой странице (они размещаются статически во время ссылки). Компоновщик выполняет наложение переменных, которые никогда не существуют одновременно, но он предполагает, что любой вызов указателя функции с определенной сигнатурой может вызывать любую функцию, адрес которой взят и которая имеет эту сигнатуру.
Можно объявить глобальные и статические переменные размером до 128 байтов как "близкие". К ним можно получить доступ без переключения банков. Невозможно указать, что автоматические переменные или параметры должны быть расположены "рядом".
Правила переключения банков, используемые HiTech, означают, что многие функции, даже если они никогда не используют какие-либо переменные вне своего собственного модуля, будут окроплены инструкциями movlb (switch-bank).
Я не хочу "всезнающего генерирования кода". Мне нужна возможность добавить несколько подсказок, чтобы разумно размещать вещи, определяя ключевые слова или макросы для пользовательских псектов, позволяя автоматическим и локальным переменным совместно использовать псекты с другими переменными (перекрывая автоматические переменные / параметры в максимально возможной степени с учетом указанных банковских ограничений). Если поставщик компилятора действительно хочет быть хорошим, разрешите указателям принимать банковские квалификаторы, чтобы указатель, который когда-либо только указывал на вещи в определенном псекте, мог быть сохранен в 8 битах. Аналогичным образом, разрешите банковским квалификаторам функций и указателей функций указывать, что определенные косвенные вызовы могут работать только с определенными функциями. Вместо того чтобы делать указатели на функции 24 бита или работать для обеспечения того, чтобы косвенно вызванные функции заканчивались в первых 64 КБ, установите автоматический GOTO в первые 64 КБ, чтобы указатели функций могли быть 16-разрядными. Или еще лучше, если функция "класс" имеет менее 64 различных функций, используйте 8-битный указатель.
Я слишком много спрашиваю?
Мы используем CCS, и это довольно хорошо. Очень медленно, но работает хорошо. Во всяком случае, у меня нет никакого сравнения с другими компиляторами, так что может быть лучший выбор.
Я в настоящее время использую CCS и ненавижу это. Это настолько нестандартно и так много подмножества C, что это просто отстой. Я подумываю о переходе в ближайшее время. Я собираюсь сначала попробовать компилятор Microchip C18, а затем я буду сильно глотать и получу HighTech, который кажется довольно солидным из рассмотрения пробной версии и образцов.
Мне не нравились CCS, это было слишком странно.
SourceBoost не плохой и довольно дешевый, около 40 фунтов стерлингов.
Компилятор Microchip C18 - лучший IMO, но очень дорогой. Тем не менее, есть бесплатное демо / студенческое издание.
Используйте sdcc:
а для несвободного (но бесплатного!) PIC-компилятора mikroC - это gr8!
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/
НТН
Система IAR имеет компилятор PIC18 / IDE: IAR Embedded Workbench для PIC18.
Я использую CCS в течение многих лет. Я обнаружил несколько ошибок, но поддержка там отличная, и я могу развиваться быстрее и проще с CCS, чем с C18 или HiTec.
Я использую SourceBoost в течение года или около того, и я не в полном восторге, но это было хорошо. Тем не менее, я только что закончил тестирование размера кода между SourceBoost 7, MCC18 и Hi-Tech C. Результаты были замечательными.
Для небольшого примера программы (которая включает структуры, массивы, указатели функций, указатели структур, символы и целые числа) набор SB7 производил код, который был примерно в 2/3 размера MCC18 и HTC. Я хотел определить, сколько из этого было связано с запуском и временем выполнения, поэтому я добавил в образец программы больше случайных вещей, и дельта размера показала, что SB по-прежнему на 2/3 больше остальных. HTC был немного меньше, чем MCC18, но незначительно. Все оптимизации включены во всех средах.
Вещи, которые мне не нравятся в SB:
- ограниченный встроенный ассемблер
- медленно компилировать и ссылаться
- IDE только немного лучше, чем MPLAB.
Вещи, которые мне нравятся в этом:
- Ну, конечно, размер кода кажется меньше, чем у конкурентов.
- Несколько расширений языка (например, ссылки). Убивает мобильность, хотя.
- Цена.
- Поддержка через форумы на самом деле очень хорошая. Авторы часто пишут.
- Автоматическое удаление неиспользуемого кода (я думаю, что эта функция замедляет компиляцию и ссылку)
Так как мне не нравится SB IDE, я использую Source Insight для редактора, и он ROCKS! Утилита SB "make" также безнадежна, поэтому я использую GnuWin32 make, которая является абсолютно реальной и бесплатной.
Так что в целом я чувствую себя немного лучше по поводу своего выбора инструментов.
Во всяком случае, надеюсь, что это помогает кому-то там.
Я бы настаивал на том, что вы используете компилятор C18. Это очень прочный и очень простой в использовании. Это необходимо для профессионального развития. Это действительно зависит от размера проекта, над которым вы работаете.
Начните с бесплатного / студенческого издания, и вы почувствуете, как его использовать. Если ваш проект небольшой, это может быть все, что вам нужно. Я только что закончил проект dev большого размера на PIC 18F и был очень доволен компилятором C18.
MPLAB C-18 хорош, и у них есть бесплатная версия для студентов. У него хороший пользовательский интерфейс, достаточно простой, чтобы не запутывать пользователей. Это то, что я использую.
Если вам это сойдет с рук (я бы предпочел), используйте PIC18 Assembler с MPLAB. Его преимущество заключается в том, что он бесплатный и относительно хорошо документирован, а также имеет приличную поддержку hardwars / debugger. Его небольшой набор команд и простота привели к легкому и быстрому кодированию.
Если вы настроены на c, хотя:
CCS - хороший компилятор, немного глючный и довольно дорогой, но также имеет хорошие возможности отладки.
Microsoft Embedded Studio (или что-то в этом роде) отлично подходит, если вы уже привыкли к методологии написания кода на Visual Studio 6. Опять хорошая аппаратная поддержка и отличный отладчик.
Я считаю, что если вы ищете бесплатное решение, вы действительно можете получить c-компиляторы для MPLAB, хотя я лично никогда не использовал их, поэтому не могу судить.