32-разрядные микроконтроллеры Microchip
Александр БОРИСОВ
bor-alex@gamma.spb.ru
В ноябре 2007 года компания Microchip анонсировала выпуск первых в своей истории 32-разрядных микроконтроллеров PIC32. Выход компании, специализирующейся на производстве 8- и 16-разрядных микроконтроллеров, на 32-разрядный рынок вполне объясним. Все тренды показывают значительное увеличение объема продаж 32-разрядных контроллеров за последние несколько лет, что, в свою очередь, связано с возросшими требованиями к встраиваемым системам.
Введение
Несмотря на то, что все предыдущие семейства контроллеров были разработаны специалистами Microchip, было решено лицензировать 32-разрядное ядро у компании MIPS Technologies Inc. — известного разработчика программных ядер. Архитектуры MIPS используют такие компании, как AMD, Broadcom, Infineon, Realtek, Sharp, Sony, NXP, Toshiba. Тем не менее PIC32 — это первый однокристальный процессор с архитектурой MIPS, имеющий интегрированную флэш-память и полный набор микроконтроллерной периферии.
Архитектура MIPS32 выбрана не случайно. При выборе новой платформы рассматривались различные варианты, а критерии выбора были следующими:
• размер кристалла и, соответственно, стоимость конечного изделия;
• потребление энергии на мегагерц тактовой частоты;
• производительность на мегагерц тактовой частоты;
• возможность расширения архитектуры;
• простота интеграции периферии;
• время реакции на прерывание.
По большинству параметров тендер выиграла компания MIPS с архитектурой MIPS32 M4K.
На текущий момент семейство PIC32 представлено 7 контроллерами с объемом флэш-памяти от 32 до 512 кбайт, объемом SRAM от
8 до 32 кбайт в 64- и 100-выводных корпусах (таблица).
Структура базового микроконтроллера семейства PIC32MX360F512L приведена на рис. 1.
Архитектура
Семейство PIC32MX основано на синтезируемом ядре MIPS32 M4K, предназначенном для использования в микроконтроллерах с низким потреблением энергии.
Основные особенности ядра MIPS32 M4K, синтезированного для применения в PIC32MX:
• Пятиступенчатый конвейер с производительностью до 1,5 DMIPS/МГц.
• Тактовая частота до 72 МГц.
• Программируемый кэш, позволяющий увеличить частоту выполнения инструкций до максимальной частоты ядра.
• Набор 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
Наименование Частота, МГц Flash, кбайт ОЗУ, кбайт Модуль предвыборки DMA, каналов Трассировка Число выводов
PIC32MX300F032H 20 32 - - - 64
PIC32MX320F064H 72 64 16 Да - - 64
PIC32MX320F128H 72 128 32 Да - - 64
PIC32MX340F256H 72 256 32 Да - 64
PIC32MX320F128L 72 128 16 Да - - 100
PIC32MX360F256L 72 256 16 Да Да 100
PIC32MX360F512L 72 512 32 Да Да 100
только с помощью специальных инструкций. В набор управляющих регистров входит таймер ядра, инкрементируемый при каждом такте.
АЛУ и набор инструкций
Семейство PIC32MX имеет два набора инструкций: 32-разрядные инструкции MIPS32 release 2 и 16-разрядный набор MIPS16e, позволяющий снизить объем кода, и, соответственно, использовать микроконтроллеры с меньшим объемом флэш-памяти.
Благодаря пятиступенчатому конвейеру все инструкции выполняются за 1 командный такт, в том числе и инструкции 16-разрядного набора — они декодируются на стадии конвейера (I) — выборка инструкции. Исключение составляют инструкции переходов (требуют одного такта ожидания для выборки инструкции по адресу перехода), умножения (максимум два такта) и деления (максимум 35 тактов). Если приложение выполняется из
флэш-памяти без использования кэша, то командный такт будет равен времени доступа (максимальная частота доступа к флэш-памяти у PIC32MX — около 33 МГц). Если используется кэш программ, то командный такт будет в большинстве случаев равен такту генератора, то есть максимальная частота выполнения инструкций будет составлять 72 МГц.
Пятиступенчатый конвейер накладывает некоторые ограничения на последовательность инструкций, однако механизм пропуска результата по конвейеру (Register Bypassing) в большинстве случаев позволяет избежать циклов ожидания, в том числе и при использовании данных сразу после загрузки регистра.
Большинство операций АЛУ и, соответственно, инструкции основного набора — трех-операндные. Источниками данных являются значения регистров, приемником результата также является регистр ядра. Инструкции
дополнительного набора MIPS16e — как трехоперандные, так и двухоперандные.
Косвенная адресация доступна только для инструкций загрузки-сохранения данных, что является особенностью всех архитектур типа «чтение-модификация-запись». Непосредственная адресация (операции с константой в коде инструкции) доступна практически для всех вычислительных инструкций, при этом размер константы составляет 16 бит для набора MIPS32 release 2.
Особенностью АЛУ ядер MIPS32 является отсутствие статусного регистра, в котором находятся флаги результатов операций (отрицательный результат, нулевой результат и т. п.) Флаги условных инструкций (сравнения и т. п.) сохраняются в указанном регистре, а инструкции условного перехода могут использовать любой регистр в качестве условия.
Набор инструкций MIPS32 release 2 включает следующие операции:
• арифметическое сложение и вычитание;
• умножение со сложением и вычитанием из аккумулятора HI/LO;
• умножение с помещением результата в регистр общего назначения;
• деление;
• логические операции AND, OR, NOR, XOR;
• определение ведущей единицы и ведущего нуля в слове;
• условное перемещение;
• множество инструкций безусловных и условных переходов;
• атомарное разрешение и запрещение прерываний;
• манипуляция с битовыми полями;
• логический и арифметический сдвиг, вращение;
• расширение знака у байта, полуслова;
• загрузка и выгрузка слова, полуслова, байта;
• атомарная загрузка и выгрузка;
• системный вызов и программная точка останова;
• переход в энергосберегающий режим;
• доступ к модулю управления ядром. Набор инструкций MIPS16e включает в себя следующие операции:
• арифметическое сложение и вычитание (беззнаковые);
• умножение;
• деление;
• логические операции AND, OR, NOT, XOR;
• расширение знака у байта, полуслова;
• логический и арифметический сдвиг;
• атомарное сохранение и восстановление стекового фрейма;
• множество инструкций безусловных и условных переходов;
• загрузка и выгрузка слова, полуслова, байта;
• программная точка останова.
При синтезе ядра M4K для PIC32MX умножитель и делитель, входящие в состав ядра, были синтезированы с опцией «оптимизация
по скорости выполнения», несмотря на то, что это привело к увеличению площади кристалла. Умножитель 32x16 позволяет получить результат умножения 32x16 за один такт, а результат умножения 32x32 — за два такта. Результат умножения может сохраняться как в регистре (младшее слово 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). Микроконтроллер может работать в двух режимах — пользовательском и режиме ядра (привилегированном режиме). В пользовательском режиме доступна только область пользователя, в привилегированном — как
область пользователя, так и область ядра. Так как все регистры управления периферийными модулями отображены на область ядра, доступ к периферии возможен только в привилегированном режиме работы.
Область памяти ядра, в свою очередь, делится на четыре области, называемые К8ЕС0, К8Е01, К8Е02 и К8Е03. В микроконтроллерах семейства Р1С32МХ физически реализованные ресурсы отображаются только на первые две области. Причем базовый адрес областей К8ЕС0 и К8Е01 отображается на физический адрес 0x00000000. Такая реализация позволяет быстро переключаться между режимами работы кэша флэш-памяти, так как кэш конфигурируется индивидуально для каждой виртуальной страницы. Отказ от использования кэша уменьшит производительность, но позволит также уменьшить потребление энергии.
Как флэш-память, так и ОЗУ могут быть разделены между сегментами КШЕО, К8ЕС0 и К8ЕС1 с шагом 2 кбайт. Кроме того, возможно выделение части ОЗУ для всех сегментов в качестве программной памяти.
Для обеспечения целостности данных и ограничения доступа предназначен модуль шинной матрицы. Он может быть сконфигурирован в различные режимы арбитража, которые отличаются приоритетами потребителей данных (ядро, ЭМА и т. п.) При конфликте доступа шинная матрица генерирует исключение.
Модуль предвыборки
Семейство Р1С32МХ имеет флэш-память с шиной 128 бит, которая позволяет за одно обращение выбирать четыре 32-разрядных инструкции. Однако даже при наличии 128-разрядного буфера выполнение инструкций с тактовой частотой ядра не представляется возможным, так как реальное приложение содержит больше количество ветвлений, повторяющихся инструкций и выборки данных из флэш-памяти.
В архитектуру Р1С32МХ включен конфигурируемый кэш, который представляет собой два массива. Первый массив — это 16 строк по 128 бит каждая, в которых хранятся выбранные из флэш-памяти инструкции и данные. Второй массив — 16х32-раз-рядных слов-тегов. Каждый тег содержит набор статусных битов и физический адрес, по которому были выбраны четыре инструкции из флэш-памяти в соответствующую строку кэша.
При выборке инструкции модуль кэша, используя массив тегов, определяет, находится ли в массиве строк инструкция с соответствующим адресом. Если инструкция отсутствует (при правильной настройке модуля предвыборки это может случиться только в случае выполнения инструкций переходов), она выбирается напрямую из флэш-памяти. Линейный код может выполняться с максимальной частотой тактирования.
Две линии кэша (8х32-разрядных инструкций) могут конфигурироваться для хранения инструкций входа в обработчик прерывания. Так как для всех прерываний (кроме наиболее приоритетного, которое может использовать дополнительный регистровый файл) эти инструкции одинаковы, теги этих строк содержат не абсолютные адреса, а адресные маски. Это позволяет максимально ускорить время входа в прерывание.
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 кГц;
• дополнительного кварцевого генератора с параметрами, оптимизированными для подключения часового резонатора (32 768 Гц). Внутренний PLL предназначен для получения максимальной тактовой частоты при использовании источников тактирования с частотой менее 72 МГц. Модуль PLL также имеет выходной делитель, что позволяет получить широкую сетку частот от одного внешнего источника.
Как и в большинстве микроконтроллеров Microchip, существует возможность переключать источники тактирования в ходе выполнения программы и подстраивать внутренний высокочастотный генератор в диапазоне ±12%.
В систему тактирования PIC32MX входит монитор наличия тактовой частоты, который генерирует прерывание и переключает источник тактирования на дополнительный (внутренний RC-генератор) при отказе основного. Этот же модуль обеспечивает вывод микроконтроллера из режима SLEEP с дополнительным источником с последующим переключением на основной. Это позволяет быстро начать выполнение приложения, не дожидаясь стабилизации частоты кварцевого генератора.
Дополнительный кварцевый генератор 32 768 Гц может быть включен и отключен программно. Он может использоваться для тактирования ядра, одного из таймеров и модуля часов реального времени.
Для снижения потребления энергии можно уменьшить тактовую частоту периферийных модулей с помощью делителя частоты ядра с коэффициентами деления 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, которое кроме закрытого интерфейса имеет модуль внутрисхемной отладки EJTAG и модуль трассировки исполняемого кода и данных. Таким образом, сторонние разработчики отладочных средств могут интегрировать в свои продукты поддержку программирования и отладки PIC32MX с помощью JTAG.
Тем не менее PIC32MX включает в себя модуль теневой отладки, который на сегодняшний день поддерживают внутрисхемный отладчик ICD2 и внутрисхемный эмулятор REAL ICE, причем последний позволяет выполнять трассировку кода и данных. Семейство PIC32MX имеет 4 аппаратных точки останова по коду и 2 точки останова по данным.
Для начального освоения PIC32MX компания Microchip предлагает использовать PIC32 Starter Kit — отладочную плату с установленным микроконтроллером PIC32MX360F512L (рис. 2). Плата включает в себя внутрисхемный отладчик с интерфейсом 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-разрядных микроконтроллеров PIC32 имеет совместимые с 16-разрядными контроллерами PIC24 и dsPIC33 периферийные модули и программные библиотеки с одинаковым API. Кроме того, PIC32MX имеют те же самые кор-
пуса и расположение выводов, что и контроллеры PIC24 и dsPIC33. Все микроконтроллеры Microchip поддерживаются единой средой разработки MPLAB IDE, и для отладки PIC32 используются те же самые отладочные средства, что и для других микроконтроллеров Microchip. Поэтому, если разработчику устройства с 16-разрядным микроконтроллером Microchip необходимо увеличить производительность или объем памяти в проекте, то все, что требуется, — это заменить микроконтроллер, все остальное окружение и средства разработки остаются теми же самыми. ■