Почему в MPLAB IDE так много компиляторов?

Я узнал, что MPLAB IDE имеет разные компиляторы, такие как C18, XC8 и HI-Tech.

Я хочу знать следующие вещи:

  1. Зачем нужны разные компиляторы, когда один может справиться с задачей?
  2. Используются ли определенные компиляторы только для определенных микроконтроллеров?
  3. Есть ли больше компиляторов, чем эти 3, о которых мне нужно знать?
  4. Если любой компилятор можно использовать, скажем, для компиляции кода PIC18F, то что решает, какой из них выбрать? Я действительно хочу знать, как решить, с кем пойти.
Рыночные силы ....................

Ответы (2)

Зачем нужны разные компиляторы, когда один может справиться с задачей?

Потому что люди улучшают их с течением времени.

C18 был заменен XC8. C18 старый и дрянной, поэтому сделали XC8, который намного лучше. Они также воспользовались возможностью назвать его как-то более логично.

HI-Tech — это сторонний компилятор, написанный кем-то другим, права на который купила Microchip. Он также устарел в пользу XC8.

Используются ли определенные компиляторы только для определенных микроконтроллеров?

Да. По мере выпуска новых микросхем компилятор должен их поддерживать. Старые компиляторы, которые не обновляются, не будут поддерживать новые чипы.

Есть ли больше компиляторов, чем эти 3, о которых мне нужно знать?

Существует также компилятор SDCC с открытым исходным кодом, но он очень простой и имеет только частичную поддержку PIC и (насколько мне известно) не работает с MPLAB.

Другой, использующий собственную IDE, называется CCS, хотя я им никогда не пользовался.

Если вам не нравится C, то существует ряд компиляторов BASIC для 8-битных чипов PIC, включая Swordfish.

Если любой компилятор можно использовать, скажем, для компиляции кода PIC18F, то что решает, какой из них выбрать? Я действительно хочу знать, как решить, с кем пойти.

Это просто - вы выбираете XC8, поскольку он поддерживается в настоящее время. Все остальные старые и устаревшие.

Этот ответ на месте. Спасибо. Остался последний пункт. Когда можно использовать опцию MPASM в MPLAB. Насколько я знаю, это просто ассемблер. Зачем отказываться от удобства кода C и писать всю программу на ассемблере?
Потому что со сборкой у вас есть полный контроль над абсолютно всем. Вы можете (если вы хорошо разбираетесь) написать очень-очень небольшой код.
Не забывайте о CCS <www.ccsinfo.com/content.php?page=compilers>. Многим людям, которых я уважаю, очень нравится этот компилятор.
У меня есть компилятор CCS C на моей машине, но я не могу использовать с ним свой ICD3. Я разместил еще один вопрос, связанный с этим. Насколько я понимаю, старые компиляторы существуют для устаревшего кода и не должны использоваться для нового кода.
По поводу написания на ассемблере: это все, на чем пишу и я, и мой коллега. Хоть мой коллега и разбирается в С, но я старичок, и мой мозг просто не врубается в С. В итоге писать мне приходится гораздо дольше любую данную программу по сравнению с тем, кто пишет на языке высокого уровня. В основном это компенсируется тем, что большая часть того, что я пишу, используется очень долго ( десятилетиями).
@ quantum231: Я бы проверил форумы CCS, чтобы получить помощь с вашим компилятором ICD3 и CCS. У меня всегда было впечатление, что они хорошо играли вместе.
@DwayneReid Вот здесь для языка ассемблера. Помимо выполнения проектов PIC16 полностью на ассемблере, я также написал ассемблер для PIC24 и PIC32 (конечно, не весь проект!) аккумулятор) и UNIVAC 1108 (18 аккумуляторов и 18 индексных регистров).

Пока данный ответ ограничивается 8-битной микроэлектроникой PIC, но ОП спросил (частично):

  1. Зачем нужны разные компиляторы, когда один может справиться с задачей?

  2. Используются ли определенные компиляторы только для определенных микроконтроллеров?

Я отвечу на оба эти вопроса вместе. Microchip производит не только 8-битные микроконтроллеры (PIC10, PIC12, PIC16, PIC18), но и 16-битные (PIC24/dsPIC33) и 32-битные (PIC32).

Каждый из 8-битных PIC (кроме PIC18) имеет аналогичные наборы инструкций, используя один аккумулятор (W0), небольшой объем ОЗУ (25-256 байт) и аппаратный стек вызовов. Первоначально набор инструкций состоял из 35 инструкций, но был расширен до 49 инструкций на новых устройствах, чтобы лучше соответствовать компиляторам C (до этого момента большинство программ для 8-PIC были написаны на ассемблере — многие из них все еще находятся на микросхемах с очень небольшим количеством флэш-памяти). .)

Устройства PIC18 добавили поддержку программного стека и гораздо большую оперативную память. У них 75 инструкций (83 для более новых устройств).

Несмотря на все эти различия (в частности, различия между младшим 8-битным набором инструкций PIC и более дорогим PIC18), компилятор XC8 поддерживает все эти 8-битные семейства PIC. Это достигается путем фактического использования двух внутренних компиляторов — PICC и PICC18, и выбора того, какой из них использовать, в зависимости от выбранного процессора.

Существуют как бесплатные, так и платные версии компилятора XC8 — единственная разница заключается в объеме выполненной оптимизации.

Следующим шагом по сравнению с 8-битными микроконтроллерами PIC являются 16-битные PIC24 и dsPIC33. Они очень похожи — dsPIC включает в себя набор инструкций PIC24, но также добавляет дополнительные инструкции для выполнения DSP (цифровой обработки сигналов), отсюда и его название. Эти 16-разрядные процессоры PIC поддерживаются компилятором XC16. Хотя они могут быть запрограммированы на языке ассемблера, это делается редко, за исключением очень узких циклов или подпрограмм обслуживания прерываний, критичных ко времени (ISR).

Как и в случае с XC8, существуют как бесплатные, так и платные версии компилятора XC16 — опять же, разница заключается в объеме выполненной оптимизации.

И, наконец, есть семейство 32-битных PIC32 с набором инструкций, полученным из MIPS в стиле RISC. Новые устройства могут адресовать до 2 МБ флэш-памяти и 512 КБ данных. 32-битные процессоры поддерживаются компилятором XC32. Как и PIC24, они редко программируются на ассемблере. Кроме того, как и у компилятора Like XC16, существуют как бесплатные, так и платные версии компилятора XC32 — опять же, разница заключается в объеме выполненной оптимизации — иногда до 50%.

Ваш ответ - просто офигенность. Кстати, я купил ICD3, который вы мне рекомендовали в прошлый раз.