Я узнал, что MPLAB IDE имеет разные компиляторы, такие как C18, XC8 и HI-Tech.
Я хочу знать следующие вещи:
Зачем нужны разные компиляторы, когда один может справиться с задачей?
Потому что люди улучшают их с течением времени.
C18 был заменен XC8. C18 старый и дрянной, поэтому сделали XC8, который намного лучше. Они также воспользовались возможностью назвать его как-то более логично.
HI-Tech — это сторонний компилятор, написанный кем-то другим, права на который купила Microchip. Он также устарел в пользу XC8.
Используются ли определенные компиляторы только для определенных микроконтроллеров?
Да. По мере выпуска новых микросхем компилятор должен их поддерживать. Старые компиляторы, которые не обновляются, не будут поддерживать новые чипы.
Есть ли больше компиляторов, чем эти 3, о которых мне нужно знать?
Существует также компилятор SDCC с открытым исходным кодом, но он очень простой и имеет только частичную поддержку PIC и (насколько мне известно) не работает с MPLAB.
Другой, использующий собственную IDE, называется CCS, хотя я им никогда не пользовался.
Если вам не нравится C, то существует ряд компиляторов BASIC для 8-битных чипов PIC, включая Swordfish.
Если любой компилятор можно использовать, скажем, для компиляции кода PIC18F, то что решает, какой из них выбрать? Я действительно хочу знать, как решить, с кем пойти.
Это просто - вы выбираете XC8, поскольку он поддерживается в настоящее время. Все остальные старые и устаревшие.
Пока данный ответ ограничивается 8-битной микроэлектроникой PIC, но ОП спросил (частично):
Зачем нужны разные компиляторы, когда один может справиться с задачей?
Используются ли определенные компиляторы только для определенных микроконтроллеров?
Я отвечу на оба эти вопроса вместе. 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%.
Рассел МакМахон