microchip

32-разрядные микроконтроллеры Microchip PIC32

В ноябре 2007 года компания Microchip анонсировала выпуск первых в своей истории 32-разрядных микроконтроллеров PIC32. Выход лидера в производстве 8- и 16-битных микроконтроллеров на 32-разрядный рынок вполне объясним: все тренды показывают значительное увеличение объема продаж 32-битных контроллеров за последние несколько лет, что в свою очередь связано с возросшими требованиями к встраиваемым системам.


Несмотря на то, что все предыдущие семейства контроллеров были разработаны специалистами 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.

 

©2007 Гамма-Санкт-Петербург