Несмотря на то, что все предыдущие семейства контроллеров  были разработаны специалистами Microchip, было решено лицензировать  32-разрядное ядро у компании MIPS Technologies Inc., одного из лидеров в  разработке программных ядер. Архитектуры MIPS используют такие компании как AMD, Broadcom, Infeneon, Realtek, Sharp, Sony, NXP, Toshiba. Тем не менее, PIC32 это первый  однокристальный процессор с архитектурой MIPS имеющий интегрированную флэш-память  и полный набор микроконтроллерной периферии.
      Архитектура MIPS32  выбрана не случайно. При выборе новой платформы рассматривались различные варианты,  а критерии выбора были следующими:
      - размер кристалла и, соответственно, стоимость  конечного изделия
      - потребление энергии на МГц тактовой частоты
      - производительность на МГц тактовой частоты
      - возможность расширения архитектуры
      - простота интеграции периферии
      - время реакции на прерывание
      
      По большинству параметров тендер выиграла компания MIPS с  архитектурой MIPS32 M4K™.
      На сегодняшний день семейство PIC32 представлено 7  контроллерами с объемом флэш-памяти от 32 до 512 кБ, объемом SRAM от 8 до 32 кБ  в 64- и 100-выводных корпусах (табл. 1)
Таблица 1. Семейство PIC32MX 
    
| Part Number | MHz | Flash (KB) | RAM (KB) | Pre-Fetch Module | DMA Ch. | 10-bit ADC Ch. | Timers/ Cap/ Comp | UART/SPI /I2CTM | USB 2.0 OTG | ITrace | Pins TQFP | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| 40 | 32 | 8 | - | - | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 64 | 16 | Да | - | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 128 | 16 | Да | - | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 128 | 16 | Да | - | 16 | 5/5/5 | 2/2/2 | - | - | 100 | |
| 80 | 128 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 128 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | - | 100 | |
| 80 | 256 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 512 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | - | 64 | |
| 80 | 256 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | Да | 100 | |
| 80 | 512 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | - | Да | 100 | |
| 80 | 32 | 8 | - | - | 16 | 5/5/5 | 2/2/2 | Да | - | 64 | |
| 80 | 128 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | - | 64 | |
| 80 | 128 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | - | 100 | |
| 80 | 256 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | - | 64 | |
| 80 | 512 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | - | 64 | |
| 80 | 256 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | Да | 64 | |
| 80 | 512 | 32 | Да | 4 | 16 | 5/5/5 | 2/2/2 | Да | Да | 100 | 
Архитектура
Семейство PIC32MX основано на синтезируемом ядре MIPS32 M4K™, которое  позиционируется разработчиком ядра для использования в микроконтроллерах с  низким потреблением энергии.
      Основные особенности ядра MIPS32 M4K™  синтезированного для применения в PIC32MX:
      - Пятиступенчатый конвейер, производительность до  1.5 DMIPS/МГц
      - Тактовая  частота до 80 МГц 
      - Программируемый кэш, позволяющий увеличить  частоту доступа к флэш-памяти до максимальной частоты ядра
      - Набор 32-битных инструкций MIPS32® release 2
      - Дополнительный набор 16-битных инструкций MIPS16e™,  позволяющий снизить объем исполняемого кода
      - Аппаратный умножитель и делитель,  оптимизированные по скорости выполнения операции
      - Векторный приоритетный контроллер прерываний
      - EJTAG  порт, предназначенный для граничного сканирования, программирования флэш-памяти  и отладки приложения с модулем внутрисхемной трассировки
      
      Архитектура MIPS32®  это архитектура типа «чтение-модификация-запись», то есть АЛУ ядра может  обрабатывать только данные, находящиеся в регистрах общего назначения, а для  загрузки и выгрузки данных предназначены специальные инструкции.
      В качестве регистров используется регистровый банк из 32 регистров,  некоторые из которых выполняют специальные функции: (ra) - адрес возврата из  подпрограммы, (sp) - указатель  стека, (fp) - указатель  фрейма стека, (gp) - указатель  на область данных. Один из регистров (zero) всегда равен нулю.
      Большое количество регистров позволяет эффективно выполнять  вычисления, сохраняя промежуточные результаты не в стеке, а регистровом файле. Кроме  того, семейство PIC32MX имеет дополнительный набор регистров, который может  использоваться в обработчике прерывания для минимизации времени входа.
      MIPS32® имеет  пятиступенчатый конвейер со следующими стадиями: (I) - выборка инструкции, (E) – выполнение операции, (M)  – выборка данных, (A) –  выравнивание и (W) – сохранение результата. В ядро, синтезируемое для PIC32MX,  была включена опция Register Bypassing  – механизм, который позволяет значительно сократить время простоя конвейера при  использовании в качестве аргумента следующей инструкции результата предыдущей.
      Несмотря на то, что память данных и память программ  расположены в едином адресном пространстве, семейство PIC32MX имеет две раздельные шины: (I-side) – для выборки инструкций и (D-side) – для выборки данных с помощью  инструкций загрузки/сохранения. Шины подключены к ядру через управляемую шинную  матрицу, осуществляющую контроль доступа и генерацию исключений при ошибке  доступа.
      Управление ядром осуществляется с помощью механизма  сопроцессора – доступ к управляющим регистрам может быть получен только с  помощью специальных инструкций. В набор управляющих регистров входит таймер  ядра, инкрементируемый при каждом такте. 
АЛУ и набор инструкций
Семейство PIC32MX имеет два набора инструкций: 32-битные  инструкции MIPS32® release 2 и  16-битный набор MIPS16e™, позволяющий снизить объем кода, и, соответственно, использовать  микроконтроллеры с меньшим объемом флэш-памяти.
      Благодаря  пятиступенчатому конвейеру все инструкции выполняются за 1 командный такт, в  том числе и инструкции 16-битного набора – они декодируются на стадии конвейера  (I) – выборка инструкции.  Исключение составляют инструкции переходов (требуют одного такта ожидания для  выборки инструкции по адресу перехода), умножения (максимум два такта) и  деления (максимум 35 тактов). Если приложение выполняется из флэш-памяти без  использования кэша, то командный такт будет равен времени доступа (максимальная  частота доступа к флэш-памяти у PIC32MX составляет 40 МГц). Если используется  кэш программ, то командный такт будет в большинстве случаев равен такту  генератора, т.е. максимальная частота выполнения инструкций будет составлять 80  МГц.
      Пятиступенчатый  конвейер накладывает некоторые ограничения на последовательность инструкций,  однако механизм пропуска результата по конвейеру (Register Bypassing) в большинстве случаев позволяет избежать  циклов ожидания, в том числе и при использовании данных сразу после загрузки  регистра.
      Большинство  операций АЛУ и, соответственно, инструкции основного набора - трехоперандные. Источниками  данных являются значения регистров, приемником результата так же является  регистр ядра. Инструкции дополнительного набора MIPS16e™ - как  трехоперандные, так и двухоперандные.
      Косвенная адресация доступна только для инструкций  загрузки/сохранения данных, что является особенностью всех «load-modify-store»  архитектур. Непосредственная адресация (операции с константой в коде  инструкции) доступны практически для всех вычислительных инструкций, при этом  размер константы составляет 16 бит для набора инструкций MIPS32® release 2.
      Особенностью АЛУ ядер MIPS32® является отсутствие статусного регистра, в котором находятся  флаги результатов операций (отрицательный результат, нулевой результат и т.п.)  Флаги условных инструкций (сравнения и т.п.) сохраняются в указанном регистре,  а инструкции условного перехода могут использовать любой регистр в качестве  условия.
      
      Набор инструкций MIPS32® release 2 включает в себя следующие операции:
      - арифметическое сложение и вычитание
      - умножение со сложением и вычитанием из  аккумулятора HI/LO
      - умножение с помещением результата в регистр  общего назначения
      - деление
      - логические операции AND, OR, NOR, XOR
      - определение первой единицы и первого нуля в  слове
      - условное перемещение
      - множество инструкций безусловных и условных  переходов
      - атомарное разрешение и запрещение прерываний
      - манипуляция с битовыми полями
      - логический и арифметический сдвиг, вращение
      - расширение знака у байта, полуслова
      - загрузка и выгрузка слова, полуслова, байта
      - атомарная загрузка и выгрузка
      - системный вызов и программная точка останова
      - переход в энергосберегающий режим
      - доступ к модулю управления ядром
      
      Набор инструкций MIPS16e™ включает в себя следующие операции:
      - арифметическое сложение и вычитание  (беззнаковые)
      - умножение
      - деление
      - логические операции AND, OR, NOT, XOR
      - расширение знака у байта, полуслова
      - логический и арифметический сдвиг
      - атомарное сохранение и восстановление стекового  фрейма
      - множество инструкций безусловных и условных  переходов
      - загрузка и выгрузка слова, полуслова, байта
      - программная точка останова
      
      При синтезе ядра M4K™ для PIC32MX умножитель и делитель,  входящие в состав ядра, были синтезированы с опцией «оптимизация по скорости  выполнения», несмотря на то, что это привело к увеличению площади кристалла.  Умножитель 32 x 16 позволяет получить результат умножения 32 x 16 за один такт,  а результат умножения 32 x 32 за два такта. Результат умножения может  сохраняться как в регистре (младшее слово 64-битного результата), так и в  специальной регистровой паре HI/LO (два слова 64-битного результата). Наличие  инструкций умножения со сложением позволяет использовать эту регистровую пару  как аккумулятор операций ЦОС.
      Делитель PIC32MX имеет механизм предварительного определения  разрядности делителя, что сокращает время выполнения операции до 7 тактов при  выполнении операции деления 32 / 8. Максимальное время выполнения операции  деления составляет 35 тактов (в случае если разрядность делителя равна 32  битам).
Память
Семейство PIC32MX имеет 32-битную шину адреса, что позволяет  адресовать область памяти объемом до 4 ГБ. Флэш-память, SRAM, регистры управления периферией,  конфигурационные регистры расположены в одном адресном пространстве, области  имеют уникальные базовые адреса.
      Первые микроконтроллеры семейства PIC32MX имеют до 512 кБ  флэш-памяти и до 32 кБ SRAM. Флэш-память может программироваться в ходе  выполнения программы, а часть флэш-памяти (12 кБ) выделена в особый блок,  называемый Internal Boot Flash,  в котором может размещаться загрузчик приложения. Этот блок может отдельно от  остальной памяти защищаться от записи конфигурационным словом.
      Приложение может выполняться как из внутренней флэш-памяти,  так и из внутреннего ОЗУ, которое можно динамически разделить на области  программ и данных. Поддерживается только little-endian расположение байт в  слове (младший байт имеет меньший адрес).
      В PIC32MX используются два метода  адресации – физический и виртуальный. Физический метод адресации используют DMA и контроллер флэш-памяти.  Виртуальную адресацию использует ядро для выборки инструкций и данных. Виртуальную  адресацию обеспечивает конфигурируемый механизм фиксированного перевода адресов  (FMT), который  преобразует виртуальные адреса в физические, необходимые для выборки из  флэш-памяти и SRAM.
      Виртуальная область памяти делится на две равных области по  2 ГБ. Область с младшими адресами называется областью пользователя (User Segment, KUSEG) а область со  старшими адресами – областью ядра (Kernel Segments). Микроконтроллер может работать в двух режимах –  пользовательском и режиме ядра (привилегированном режиме). В пользовательском  режиме доступна только область пользователя, в привилегированном – как область  пользователя, так и область  ядра. Так  как все регистры управления периферийными модулями отображены на область ядра,  доступ к периферии возможен только в привилегированном режиме работы.
      Область памяти ядра в свою очередь делится на четыре  области, называемые KSEG0, KSEG1, KSEG2 и KSEG3. В микроконтроллерах семейства  PIC32MX физически реализованные ресурсы отображаются только на первые две  области. Причем базовый адрес областей KSEG0 и KSEG1 отображается на физический  адрес 0x00000000. Такая реализация позволяет быстро переключаться между  режимами работы кэша флэш-памяти.
      Как флэш-память, так и ОЗУ может быть разделено между  сегментами KUSEG, KSEG0 и KSEG1, дискрет составляет 2 кБ. Кроме того, возможно  выделения части ОЗУ для всех сегментов в качестве программной памяти.
      Для обеспечения целостности данных и ограничения доступа  предназначен модуль шинной матрицы. Он может быть сконфигурирован в различные  режимы арбитража, которые отличаются приоритетами потребителей данных (ядро,  DMA и т. п.) При конфликте доступа шинная матрица генерирует исключение.
Модуль предвыборки
Семейство PIC32MX имеет флэш-память с шиной 128 бит, которая  позволяет за одно обращение выбирать четыре 32-битных инструкции. Однако даже при  наличии 128-битного буфера  выполнение  инструкций с тактовой частотой ядра не представляется возможным, так как  реальное приложение содержит больше количество ветвлений, повторяющихся  инструкций и выборки данных из флэш-памяти.
      Поэтому в архитектуру PIC32MX был введен конфигурируемый кэш  предвыборки, состоящий из 16 128-битных строк. 4 строки могут  использоваться в качестве кэша данных, что полезно при обработке больших  константных массивов.
      Использование кэша предвыборки позволяет выполнять линейный  код с максимальной частотой тактирования. Этому способствуют две линии кэша с  адресной маской, которые могут содержать повторяющиеся инструкции, а так же  механизм предикативной выборки инструкций.
Контроллер прерываний
В ядре MIPS32 MK4™  предусмотрено три режима работы прерываний – совместимый с MIPS32 release 1, векторный режим и режим обслуживания  внешнего контроллера прерываний.
      В семействе PIC32MX реализован внешний векторный контроллер  прерываний, однако при сборке ядра оставлен и оригинальный одновекторный режим.
      
      Внешний контроллер прерываний PIC32MX обладает следующими  особенностями:
      - время реакции на прерывание – не более 5 тактов  генератора
      - до 96 источников прерываний
      - до 64 векторов прерываний
      - каждый вектор прерывания может иметь приоритет  от 1 до 7
      - каждый вектор прерывания может иметь  дополнительный приоритет от 0 до 3
      - дополнительный регистровый файл для обслуживания  прерывания с максимальным приоритетом
      - конфигурируемое положение векторов прерываний 
      - конфигурируемая дистанция между векторами  прерываний
      - возможность программной генерации любого  прерывания
      - таймер отложенных прерываний
      
      Контроллер прерываний PIC32MX аналогичен контроллеру  прерываний 16-битных семейств PIC24/dsPIC за исключением того,  что векторов прерываний меньше чем источников. Поэтому часть источников  прерываний используют один вектор. Как правило, это прерывания одного  периферийного модуля, например, прерывание по приему UART и прерывание по  передаче UART. Приоритеты назначаются пользователем не источнику прерывания, а  вектору.
      Контроллер прерываний PIC32MX отслеживает все источники на каждом такте генератора. Если  один из источников прерываний активен и его приоритет больше чем текущий  приоритет ядра, устанавливается флаг прерывания (который можно установить и  программно) и запрос на прерывание. Между ступенями (E) и (M) конвейера проверяется запрос на прерывание и, если он  установлен, ядро прекращает выполнение программы и переходит на соответствующий  вектор прерывания.
      Вектора с приоритетами 7 могут использовать дополнительный  набор регистров ядра, что позволяет снизить время входа в функцию обработки  прерывания, так как в этом случае контекст сохранять не требуется.
      Положение векторов в адресном пространстве может быть  изменено программно, так же как и дистанция между векторами.
      Интересной особенностью является таймер отложенных  прерываний. Для использования этого таймера необходимо установить его период  (32-битный регистр) и приоритет прерывания таймера. Все источники с приоритетом  ниже или равным приоритету таймера не установят запрос на прерывание, а запустят  таймер, в который перед этим будет загружено значение из регистра периода.  Таймер будет декрементироваться каждый такт. Как только значение таймера будет  равно нулю, установится флаг источника прерывания, запустившего таймер.
    
Системные модули
Как и 16-битные контроллеры Microchip, семейство PIC32MX обладает набором системных модулей, необходимых для построения надежной и самодостаточной однокристальной системы.
Модуль сброса
Модуль сброса PIC32MX полностью аналогичен модулю сброса  16-битных микроконтроллеров PIC24/dsPIC. Единственное отличие – отсутствие  сброса при выборке инструкции с неизвестным кодом (это обрабатывается логикой  исключений ядра), и сброса при конфликте исключений.
      
      Микроконтроллеры PIC32MX имеют следующие источники сброса:
      - сброс по включению питания (POR)
      - внешний  сброс (MCLR)
      - сброс по снижению напряжения питания
      - сброс при ошибке четности конфигурационных слов
      - программный сброс
    - сброс по переполнению сторожевого таймера
Сторожевой таймер
Сторожевой таймер в микроконтроллерах семейства PIC32MX  тактируется от внутреннего низкочастотного RC генератора. Физически сторожевой  таймер представляет собой 25-битный счетчик и регистр сравнения. Переполнение  сторожевого таймера вызывает сброс контроллера или вывод ядра и периферии из  режимов энергосбережения. Период сторожевого таймера может находиться в  диапазоне от 1 мс до 1048 сек. 
      Сторожевой таймер может включаться и отключаться программно.  Программное отключение таймера может быть запрещено в слове конфигурации.
      Сброс сторожевого таймера в отличие от предыдущих семейств  контроллеров Microchip осуществляется путем установки бита в регистре  конфигурации таймера.
Система тактирования и энергосберегающие режимы
Микроконтроллеры семейства PIC32MX имеют развитую систему  тактирования. Ядро и периферийные модули могут тактироваться от четырех  различных источников:
      основного кварцевого генератора с возможностью  подключения PLL
      внутреннего высокочастотный RC генератора 8 МГц  с выходным делителем и возможностью подключения PLL
      внутреннего низкочастотного RC генератора 32  кГц
      дополнительного кварцевого генератора с  параметрами, оптимизированными для подключения часового резонатора (32768 Гц)
      Внутренний PLL предназначен для получения максимальной таковой частоты при  использовании источников тактирования с частотой меньшей 80 МГц. Модуль PLL так же имеет выходной  делитель, что позволяет получить широкую сетку частот от одного внешнего  источника.
      Как и в большинстве микроконтроллеров Microchip, существует  возможность переключать источники тактирования в ходе выполнения программы и  подстраивать внутренний высокочастотный генератор в диапазоне ±12%.
      В систему тактирования PIC32MX входит монитор наличия  тактовой частоты, который генерирует прерывание и переключает источник  тактирования на дополнительный (внутренний RC генератор) при отказе основного.  Этот же модуль обеспечивает вывод микроконтроллера из режима SLEEP с  дополнительным источником с последующим переключением на основной. Это  позволяет быстро начать выполнение приложения, не дожидаясь стабилизации частоты  кварцевого генератора.
      Дополнительный кварцевый генератор 32768 Гц может быть  включен и отключен программно. Он может использоваться для тактирования ядра,  одного из таймеров и модуля часов реального времени. 
      Для снижения потребления энергии можно уменьшить тактовую  частоту периферийных модулей с помощью делителя частоты ядра с коэффициентами  деления 2, 4 и 8.
      Микроконтроллеры семейства PIC32MX имеют два основных режима  энергосбережения IDLE и SLEEP. В режиме IDLE ядро останавливает выполнение  программы, однако основной тактовый генератор и периферийные модули продолжают  работу. При входе в режим SLEEP, основной тактовый генератор отключается.
      Вывод микроконтроллера из энергосберегающих режимов возможен  при сбросе, прерывании или переполнении сторожевого таймера. Для входа в  энергосберегающий режим используется инструкция WAIT.
      Использование энергосберегающих режимов совместно с гибким  управлением тактированием, позволит значительно уменьшить потребление энергии устройством.
Периферийные модули
32-битное семейство PIC32MX имеет обширный набор  периферийных модулей:
      - универсальные порты ввода-вывода, толерантные к  +5 В
      - 24 входа внешних прерываний по изменению уровня  с одним вектором
      - 5 входов внешних прерываний по фронту с  индивидуальным векторами
      - 5 16-разрядных таймеров общего назначения
      - 5 модулей захвата
      - 5 модулей сравнения
      - 2 модуля SPI
      - 2 модуля I2C
      - 2 модуля UART с аппаратной поддержкой IrDA, LIN и RS-485
      - параллельный 16-битный порт с 16-битной адресной  шиной
      - часы реального времени с календарем
      - 10-битный 16 канальный аналого-цифровой  преобразователь
      - два компаратора с регулируемым модулем опорного  напряжения
      - JTAG  интерфейс для граничного сканирования, программирования и отладки
      - модуль прямого доступа к памяти (DMA) с интегрированной  функцией вычисления CRC
      
      Большинство периферийных модулей аналогично по  функциональности соответствующим модулям семейства PIC24FJ, что должно упростить переход на  32-битные PIC32MX. Компания Microchip предоставляет  библиотеку обслуживания периферии Peripheral Library PIC32MX, API которой совместим с  аналогичным пакетом для PIC24FJ.
      Следует отметить основную особенность управления  периферийными модулями. Все периферийные регистры PIC32MX имеют по три  дополнительных слова для атомарной манипуляции с битами: xSET, xCLR и xINV.  Установка битов в слове xSET устанавливает соответствующие биты в периферийном  регистре. Установка битов в слове xCLR сбрасывает соответствующие биты в  периферийном регистре. Слово xTGL  предназначено для инвертирования битов в регистре.
      Например, сброс младшего бита в регистре TRISA будет  выглядеть следующим образом:
      TRISACLR = (1 << 0);
      В этом случае нет необходимости считывать значение TRISA в  регистр, обнулять бит и сохранять итоговое значение:
      TRISA  &= ~(1 << 0);
      Такой механизм позволяет значительно сократить количество  инструкций на обслуживание периферии, увеличить скорость работы и обеспечить  атомарность операций. Кроме того, большинство периферийных регистров используют  только младшую часть слова, что позволяет компилятору использовать эффективные  арифметические и логические инструкции с константными операндами.
      Как уже отмечено, большинство периферийных модулей в PIC32MX  перенесено из 16-битного семейства PIC24F, поэтому далее будут рассмотрен  уникальный для PIC32MX контроллер DMA.
Контроллер прямого доступа к памяти (DMA)
Контроллер DMA  предназначен для передачи данных между блоками памяти и периферийными модулями  без участия ядра контроллера.
      Семейство PIC32MX имеет до 4 идентичных каналов DMA, которые  могут использоваться как для передачи данных между периферией и памятью, так и  для переноса данных между блоками памяти.
      Контроллер DMA позволяет обеспечивать транзакции на уровне  слов, и байтов. В последнем случае выравнивания по слову данных не требуется.  Арбитраж доступа осуществляется на основании фиксированных приоритетов каналов.
      Два каналы могут быть объединены в цепочку – после окончания  передачи ведущего канала автоматически запускается ведомый  канал.
      Каналы могут работать в двух адресных режимах: нормальном и  расширенном. В нормальном режиме объем передаваемых данных ограничен 256  байтами, но допустима транзакция по невыровненному адресу и передача типа  «память-периферия». В расширенном режиме адресации объем передаваемых данных не  должен превышать 64 кБ.
      Контроллер DMA имеет в своем составе модуль вычисления  циклического избыточного кода (CRC),  который может быть подключен к любому каналу. Модуль позволяет вычислять CRC любой  разрядности с произвольным полиномом.
Средства разработки
Компания Microchip традиционно предоставляет полный набор отладочных средств для освоения и профессиональной работы с семейством PIC32MX.
Программные средства разработки
Одновременно с анонсом 32-разрядных контроллеров PIC32MX  компания Microchip выпустила новую версию среды разработки MPLAB 8.0, которая на  сегодняшний день поддерживает все семейства, начиная от PIC10 и заканчивая  PIC32. 
      Выпущен компилятор с языка Си MPLAB C32 – порт известного  компилятора GCC. Компилятор включает библиотеки стандартных функций, написанные  разработчиком ядра MIPS. Доступна бесплатная студенческая версия компилятора с  ограничением по объему исполняемого кода (64 кБ).
      
      Доступны средства разработки сторонних компаний: 
      Ashling asIDE – среда разработки, включающая в себя менеджер  проектов, текстовый редактор, отладчик кода PathFinder и аппаратный EJTAG эмулятор.  В качестве компилятора может использоваться либо MPLAB C32, либо компилятор C/C++ от компании MIPS (MIPS SDE).
      Green Hills MULTI IDE – среда разработки, включающая в себя менеджер проектов,  текстовый редактор, пофайлер DoubleCheck™, и Green Hills Probe – EJTAG  эмулятор. В качестве компилятора используется компилятор Green Hills MIPS.
      
      Давний партнер Microhip, компания Hi-Tech,  известная российским разработчикам высокоэффективным Си-компилятором для  8-битных семейств так же заявила о том, что ведутся работы над разработкой  компилятора и среды для семейства PIC32MX. Дата выпуска назначена на апрель  2008 года.
Аппаратные средства разработки
PIC32MX – первое семейство в  линейке Microchip, которое имеет не только проприетарный интерфейс внутрисхемной  отладки. Ядро MIPS32 M4K™ включает в свой состав модуль  внутрисхемной отладки EJTAG и модуль трассировки исполняемого кода и данных.  Таким образом, сторонние разработчики отладочных средств могут интегрировать в  свои продукты поддержку программирования и отладки PIC32MX с помощью JTAG.
      Тем не менее,  PIC32MX включает в себя модуль теневой отладки, который на сегодняшний день  поддерживают внутрисхемный отладчик ICD2 и внутрисхемный эмулятор REAL ICE,  причем последний позволяет выполнять трассировку кода и данных. Семейство  PIC32MX имеет 4 аппаратных точки останова по коду и 2 точки останова по данным.
      Для начала освоения PIC32MX компания Microchip предлагает использовать  PIC32 Starter Kit – отладочную плату с установленным микроконтроллером PIC32MX360F512L.  Плата включает в себя внутрисхемный отладчик с интерфейсом USB, реализованный  на микроконтроллере PIC18F4550. На плате установлены 3  светодиода и 3 кнопки. Плата питается от интерфейса USB.
      В дальнейшем планируется выпуск плат расширения к PIC32  Starter Kit, которые будут подключаться к 122-выводному разъему, установленному  на плате. 
      Так же доступен процессорный модуль, предназначенный для  использования совместно с популярной отладочной платой для 16-битных семейств  Explorer 16. На процессорном модуле установлен разъем трассировки, который  можно использовать для подключения к внутрисхемному эмулятору REAL ICE.
Программные библиотеки
Компания Microchip традиционно обеспечивает разработчиков  квалифицированной технической поддержкой в виде руководств по применению и  программных библиотек.
      Не является исключением и семейство PIC32MX, для которого на  данный момент доступен TCP/IP стек с BSD (Berkley Socket Distribution) API. Механизм  сокетов позволяет использовать стороннее программное обеспечение, например, HTTP и  FTP серверы и клиенты,  различные сетевые протоколы и т. п. В состав стека входит реализация файловой  системы FAT16, примеры реализации HTTP и FTP сервера, реализация SNMP агента.
      
      Доступно большое количество библиотек и от сторонних  разработчиков:
  CMX-RTX™ – коммерческая вытесняющая операционная система реального времени, с малым  объемом кода и быстрым переключением контекста. 
  CMX-MicroNet™ - коммерческий стек протоколов TCP/IP c реализацией HTTP сервера,  FTP сервера и клиента.
  CMX-FFS-FAT™ - коммерческая файловая система FAT12/16/32  с поддержкой длинных имен, нескольких дисков и нескольких разделов на диске.
  easyGUI – коммерческая библиотека для реализации графического интерфейса пользователя с  использованием монохромных и цветных панелей. Поддерживает большое количество  контроллеров ЖКИ
  ThreadX® – коммерческая вытесняющая RTOS
  freeRTOS – бесплатная вытесняющая  операционная система реального времени, поставляемая с открытыми исходными  кодами, поставляемая под лицензией GPL-like, разрешающей применение freeRTOS в коммерческих проектах  без публикации исходного кода проекта.
  Salvo™ - коммерческая кооперативная RTOS.
  RAMTEX GUI – коммерческая библиотека GUI
  Segger  embOS – коммерческая вытесняющая RTOS
  Segger emWin – коммерческая библиотека GUI
  Segger emFile – коммерческая файловая система FAT12/16/32
  Micrium  uC/OS-II – широко известная коммерческая вытесняющая RTOS.
      Часть из этих продуктов уже доступно (например, freeRTOS),  выпуск остальных анонсирован на начало 2008 года.
Как  уже отмечалось, новое семейство высокопроизводительных 32-разрядных  микроконтроллеров PIC32MX имеет схожие с 16-разрядными контроллерами PIC24 и dsPIC33  периферийные модули и программные библиотеки с одинаковым API. Кроме того,  PIC32MX полностью аналогичны 16-разрядным контроллерам Microchip по  расположению выводов.
    Все  микроконтроллеры Microchip поддерживаются единой средой разработки MPLAB IDE, и  для отладки PIC32MX используются те же самые аппаратные отладочные средства,  что и для других семейств Microchip. 
