Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Статьи > Микроконтроллеры

реклама

 




Мероприятия:




Новые 32-х разрядные микроконтроллеры Microchip. Особенности архитектуры. Средства разработки

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

Несмотря на то, что все предыдущие семейства контроллеров были разработаны специалистами Microchip, было решено лицензировать 32-разрядное ядро у компании MIPS Technologies Inc., одного из лидеров в разработке программных ядер. Архитектуры MIPS используют такие компании как AMD, Broadcom, Infeneon, Realtek, Sharp, Sony, NXP, Toshiba. Тем не менее, PIC32 это первый однокристальный процессор с архитектурой MIPS имеющий интегрированную Flash память и полный набор микроконтроллерной периферии.

Архитектура MIPS32 выбрана не случайно.


Рис. 1

При выборе новой платформы рассматривались различные варианты, а критерии выбора были следующими:

  • размер кристалла и, соответственно, стоимость конечного изделия
  • потребление энергии на МГц тактовой частоты
  • производительность на МГц тактовой частоты
  • возможность расширения архитектуры
  • простота интеграции периферии
  • время реакции на прерывание

По большинству параметров тендер выиграла компания MIPS с архитектурой MIPS32 M4K™.

На сегодняшний день семейство PIC32 представлено 17 контроллерами с объемом Flash памяти от 32 до 512 кБ, объемом SRAM от 8 до 32 кБ в 64- и 100-выводных корпусах (табл. 1)

Таблица 1. Семейство микроконтроллеров PIC32

Наименование Частота, МГц Flash, КБ ОЗУ, КБ Модуль пред. выборки DMA, каналов 10-разрядный АЦП, кан. Таймер/ захват/ сравнение UART/ SPI/ I2C USB 2.0 OTG Трас-
сировка
Число выводов
PIC32MX320F032H 40 32 8 - - 16 5/5/5 2/2/2 - - 64
PIC32MX320F064H 80 64 16 Да - 16 5/5/5 2/2/2 - - 64
PIC32MX320F128H 80 128 16 Да - 16 5/5/5 2/2/2 - - 64
PIC32MX320F128L 80 128 16 Да - 16 5/5/5 2/2/2 - - 100
PIC32MX340F128H 80 128 32 Да 4 16 5/5/5 2/2/2 - - 64
PIC32MX340F128L 80 128 32 Да 4 16 5/5/5 2/2/2 - - 100
PIC32MX340F256H 80 256 32 Да 4 16 5/5/5 2/2/2 - - 64
PIC32MX340F512H 80 512 32 Да 4 16 5/5/5 2/2/2 - - 64
PIC32MX360F256L 80 256 32 Да 4 16 5/5/5 2/2/2 - Да 100
PIC32MX360F512L 80 512 32 Да 4 16 5/5/5 2/2/2 - Да 100
PIC32MX420F032H 40 32 8 - - 16 5/5/5 2/1/2 + - 64
PIC32MX440F128H 80 128 32 Да 4 16 5/5/5 2/1/2 + - 64
PIC32MX440F128L 80 128 32 Да 4 16 5/5/5 2/2/2 + - 100
PIC32MX440F256H 80 256 32 Да 4 16 5/5/5 2/2/2 + - 64
PIC32MX460F256L 80 256 32 Да 4 16 5/5/5 2/2/2 + Да 100
PIC32MX460F512H 80 512 32 Да 4 16 5/5/5 2/2/2 + Да 64
PIC32MX460F512L 80 512 32 Да 4 16 5/5/5 2/2/2 + Да 100

Архитектура

Семейство PIC32MX основано на синтезируемом ядре MIPS32 M4K™, которое позиционируется разработчиком ядра для использования в микроконтроллерах с низким потреблением энергии.


Рис. 2

Основные особенности ядра MIPS32 M4K™ синтезированного для применения в PIC32MX:

  • Пятиступенчатый конвейер, измеренная производительность до 1.5 DMIPS/МГц при использовании 32-х разрядных команд и до 1.2 DMIPS/МГц при 16-и разрядных командах.
  • Тактовая частота до 80 МГц
  • Программируемый кэш, позволяющий увеличить частоту доступа к Flash памяти до максимальной частоты ядра
  • Набор 32-битных инструкций MIPS32® release 2
  • Дополнительный набор 16-битных инструкций MIPS16e™, позволяющий снизить объем исполняемого кода
  • Аппаратный умножитель и делитель, оптимизированные по скорости выполнения операции
  • Векторный приоритетный контроллер прерываний
  • EJTAG порт, предназначенный для граничного сканирования, программирования Flash памяти и отладки приложения с модулем внутрисхемной трассировки

Архитектура 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™, позволяющий снизить объем кода, и, соответственно, использовать микроконтроллеры с меньшим объемом Flash памяти.

Благодаря пятиступенчатому конвейеру все инструкции выполняются за 1 командный такт, в том числе и инструкции 16-битного набора - они декодируются на стадии конвейера (I) - выборка инструкции. Исключение составляют инструкции переходов (требуют одного такта ожидания для выборки инструкции по адресу перехода), умножения (максимум два такта) и деления (максимум 35 тактов). Если приложение выполняется из Flash памяти без использования кэша, то командный такт будет равен времени доступа (максимальная частота доступа к Flash памяти у 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 кБ Flash памяти и до 32 кБ SRAM. Флэш-память может программироваться в ходе выполнения программы, а часть Flash памяти (12 кБ) выделена в особый блок, называемый Internal Boot Flash, в котором может размещаться загрузчик приложения. Этот блок может отдельно от остальной памяти защищаться от записи конфигурационным словом.

Приложение может выполняться как из внутренней Flash памяти, так и из внутреннего ОЗУ, которое можно динамически разделить на области программ и данных. Поддерживается только little-endian расположение байт в слове (младший байт имеет меньший адрес).

В PIC32MX используются два метода адресации - физический и виртуальный. Физический метод адресации используют DMA и контроллер Flash памяти. Виртуальную адресацию использует ядро для выборки инструкций и данных. Виртуальную адресацию обеспечивает конфигурируемый механизм фиксированного перевода адресов (FMT), который преобразует виртуальные адреса в физические, необходимые для выборки из Flash памяти и SRAM.

Виртуальная область памяти делится на две равных области по 2 ГБ. Область с младшими адресами называется областью пользователя (User Segment, KUSEG) а область со старшими адресами - областью ядра (Kernel Segments). Микроконтроллер может работать в двух режимах - пользовательском и режиме ядра (привилегированном режиме). В пользовательском режиме доступна только область пользователя, в привилегированном - как область пользователя, так и область ядра. Так как все регистры управления периферийными модулями отображены на область ядра, доступ к периферии возможен только в привилегированном режиме работы.

Область памяти ядра в свою очередь делится на четыре области, называемые KSEG0, KSEG1, KSEG2 и KSEG3. В микроконтроллерах семейства PIC32MX физически реализованные ресурсы отображаются только на первые две области. Причем базовый адрес областей KSEG0 и KSEG1 отображается на физический адрес 0x00000000. Такая реализация позволяет быстро переключаться между режимами работы кэша Flash памяти.

Как Flash память, так и ОЗУ может быть разделено между сегментами KUSEG, KSEG0 и KSEG1, дискрет составляет 2 кБ. Кроме того, возможно выделения части ОЗУ для всех сегментов в качестве программной памяти.

Для обеспечения целостности данных и ограничения доступа предназначен модуль шинной матрицы. Он может быть сконфигурирован в различные режимы арбитража, которые отличаются приоритетами потребителей данных (ядро, DMA и т. п.) При конфликте доступа шинная матрица генерирует исключение.

Модуль предвыборки

Семейство PIC32MX имеет Flash память с шиной 128 бит, которая позволяет за одно обращение выбирать четыре 32-битных инструкции. Однако даже при наличии 128-битного буфера выполнение инструкций с тактовой частотой ядра не представляется возможным, так как реальное приложение содержит больше количество ветвлений, повторяющихся инструкций и выборки данных из Flash памяти.

Поэтому в архитектуру 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
  • Универсальная последовательная шина USB OTG 2.0
  • параллельный 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 любой разрядности с произвольным полиномом.

Отладочные средства для контроллеров PIC32

Компания Microchip Technology Inc. предлагает полный набор отладочных средств для 16-и разрядных контроллеров PIC32, включая среду разработки MPLAB IDE, Си-компилятор, средства внутрисхемной отладки и отладочные платы.

Среда разработки Microchip MPLAB IDE является универсальной для всех микроконтроллеров Microchip от простейших 6-и выводных 8-и разрядных PIC10F до 32-х разрядных контроллеров PIC32. Единая среда разработки для всей продукции Microchip позволяет разработчикам легко перейти на использование новых микроконтроллеров.

Так же Microchip предлагает высокоэффективный компилятор Си для своих 32-х разрядных контроллеров. Компилятор периодически обновляется для обеспечения поддержки новых контроллеров, увеличения эффективности и добавления новых функций. Текущая версия компилятора MPLAB C32 версии 1.03 получила обновленные оптимизированные математические библиотеки с увеличенной скоростью более чем в пять раз.

Для начального ознакомления и для учебных целей Microchip предлагает бесплатную студенческую версию компилятора C32. Данная версия работает без ограничений в течение 60 дней, после чего отключаются уровни оптимизации кода по быстродействию -O2 и -О3 и оптимизация по объему кода -Os. Так же по истечению ознакомительного срока перестает работать генератор кода MIPS16 (поддержка набора 16-битных инструкций).

Совместно с компилятором С32 поставляется библиотека со стандартными ANSI-89 функциями, включая математические функции.

Аппаратные средства отладки

Для внутрисхемной отладки кода контроллеров PIC32 подходят те же самые отладчики ICD-2 и REAL ICE, что и для остальных семейств микроконтроллеров Microchip. Сравнительные характеристики и особенности отладчиков приведены в Табл.2.

PIC32MX - первое семейство в линейке Microchip, которое имеет не только проприетарный интерфейс внутрисхемной отладки. Ядро MIPS32 M4K™ включает в свой состав модуль внутрисхемной отладки EJTAG и модуль трассировки исполняемого кода и данных. Таким образом, сторонние разработчики отладочных средств могут интегрировать в свои продукты поддержку программирования и отладки PIC32MX с помощью JTAG.

Тем не менее, PIC32MX включает в себя модуль теневой отладки, который на сегодняшний день поддерживают внутрисхемный отладчик ICD2 и внутрисхемный эмулятор REAL ICE, причем последний позволяет выполнять трассировку кода и данных. Семейство PIC32MX имеет 4 аппаратных точки останова по коду и 2 точки останова по данным.

Таблица 2. Отладочные средства для программирования и отладки PIC32

Отладочное средство Программирование Отладка кода Трассировка кода Особенности
PICKit 2 (PG164120) Да Нет (на данный момент поддерживается отладка только младших семейств) Нет Программатор для всех микроконтроллеров Microchip
PIC32 Starter Kit (DM320001) Да Да Нет Демонстрационные платы со встроенным внутрисхемным USB JTAG программатором и отладчиком
PIC32 USB Board (DM320002)
ICD-2 (DV164005) Да Да Нет Внутрисхемный программатор-отладчик для большинства микроконтроллеров Microchip
REAL ICE (DV244005) Да Да Да (требуется дополнительный кабель) Внутрисхемный эмулятор с высоко скоростным USB 2.0.

Для начала освоения контроллеров PIC32 Microchip предлагает две простые и дешевые демонстрационные платы PIC32 Starter Kit и PIC32 USB Board. Обе платы содержат контроллер PIC32MX (PIC32MX 360F512 или PIC32MX460F512) и интегрированный USB-JTAG внутрисхемный отладчик с возможностью установки точек останова. Таким образом разработчик, решивший попробовать PIC32 и не имеющий внутрисхемного отладчика, может начать освоение контроллера без дополнительных средств разработки. Демонстрационная плата PIC32 USB Board отличается тем, что содержит контроллер семейства PIC32MX с поддержкой USB OTG. Данная плата имеет разъемы USB-A (плата может являться хостом и позволяет подключать, например, внешние USB накопители) и USB-microAB для подключения USB устройств Host, Device и OTG.

Для тех, кому стартового комплекта становится мало, Microchip предлагает плату расширения портов ввода-вывода - PIC32 I/O Expansion Board. Плата PIC32 Starter Kit или PIC32 USB Board является по сути процессорной платой для платы расширения PIC32 I/O Expansion Board, к которой, в свою очередь, можно подключать целый ряд специализированных интерфейсных плат. Интерфейсные платы расширения универсальны и так же подходят для совместной работы с отладочной платой Explorer 16.

Для того чтобы работать с отладочной платой Explorer 16 и контроллерами PIC32MX, нужно в Explorer 16 установить процессорный модуль с соответствующим контроллером PIC32 или использовать плату переходник (AC320002) для подключения PIC32 Starter Board к плате Explorer 16.

Конфигурирование платы Explorer 16 под различные контроллеры и прикладные задачи
Рис. 3. Конфигурирование платы Explorer 16 под различные контроллеры и прикладные задачи

Таблица 3. Возможные варианты подключения отладочных плат

Процессорный модуль Основная отладочная плата Платы расширения Приложение
PIM USB (MA320002) Explorer 16 USB PICtail. Plus Daughter Board (AC164131) Работа с USB: Host, Device, OTG
PIM (MA320001) Audio PICtail Plus Daughter Board (AC164129) Работа со звуком
ECAN/LIN PICtail Plus Daughter Board (AC164130) CAN и LIN интерфейсы связи
PIC32 Starter Board + AC320002 PICtail board for SD and MMC (AC164122) Работа с Flash картами памяти, FAT
PIC32 USB Board + AC320002 PICtail Plus board for Ethernet (AC164123) Разработка Ethernet-устройств
IrDA PICtail Plus Daughter Board (AC164124) Разработка IrDA устройств
PIC32 Starter Kit PIC32 I/O Expansion Board Speech Playback PICtail Plus Daughter Board (AC164125) Работа со звуком
PICDEM Z MRF24J40 2.4 GHz Daughter Card (AC163027-4) Разработка 2.4ГГц беспроводных сетей ZigBee, MiWi и других
PIC32 USB Motor Control Interface PICtail Plus D-Card (AC164128) Управление электродвигателями
Graphics PICtailTM Plus Daughter Board (AC164127) Работа с цветными графическими TFT индикаторами
PIC32 USB   Работа с USB: Host, Device, OTG

Компания Microchip поддерживает платформу PIC32MX не только отладочными платами, но и готовыми библиотеками. Под каждую интерфейсную плату есть соответствующие библиотеки и примеры программ.

Библиотеки и примеры программ

В настоящий момент контроллеры PIC32 поддерживаются следующими специализированными библиотеками (см. Табл.4).

Таблица 4. Библиотеки Microchip для контроллеров PIC32

Область применения Наименование Описание
USB USB Device and Embedded Host Stack Поддержка стеков USB
USB Dual-Role Stack (планируется)
USB OTG Stack (планируется)
Коммуникации Microchip TCP/IP with support for SSL Поддержка стеков TCP/IP
Microchip TCP/IP with BSD Sockets
IrDA™ Protocol Stack (планируется) Стек беспроводного протокола IrDA™
ZigBee™ Protocol Stack (планируется) Стек беспроводного протокола ZigBee™ (2.4ГГц)
MiWi™ Protocol Stack Стек беспроводного протокола MiWi (2.4ГГц)
CAN Library for PIC32 Библиотека для работы с CAN протоколом, включена поддержка MCP2515
Serial Port Bootloader for PIC32MX Реализация бутлоадера через последовательный порт
Общего назначения 16-bit File System Файловая система FAT16
32-bit File System Файловая система FAT32
Data EEPROM Emulation Library for PIC32 Эмуляция EEPROM памяти в Flash памяти программ
Math Library Математические библиотеки
Peripheral Library Библиотеки работы с периферией
Графика Microchip Graphics Library Баблиотека работы с графическими объектами, графический интерфейс пользователя
Звук Audio Library for PIC32MX - поддержка Speex, ADPCM и WAV Компрессия и декомпрессия звука

Средства отладки и разработки сторонних компаний

Помимо библиотек, предоставляемых компанией Microchip Technology Inc., доступно большое количество библиотек и операционных систем реального времени от сторонних фирм:

  • CMX-RTX™ - коммерческая вытесняющая операционная система реального времени, с малым объемом кода и быстрым переключением контекста.
  • CMX-MicroNet™ - коммерческий стек протоколов TCP/IP c реализацией HTTP сервера, FTP сервера и клиента.
  • CMX-FFS-FAT™ - коммерческая файловая система FAT12/16/32 с поддержкой длинных имен, нескольких дисков и нескольких разделов на диске.
  • easyGUI - коммерческая библиотека для реализации графического интерфейса пользователя (GUI) с использованием монохромных и цветных панелей. Поддерживает большое количество контроллеров ЖКИ
  • 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, соответствует требованиям стандарта RTCA DO-178B для авиационного оборудования
  • Micrium uC/TCP-IP - компактный стек протоколов TCP-IP
  • Micrium uC/Probe - средство мониторинга, позволяет пользователю в реальном времени просматривать динамику системы без остановки программы. uC/Probe это Windows приложение, которое связывается по JTAG, RS-232, TCP-IP или USB интерфейсам
  • Micrium uC/FS - файловая система для встраиваемых приложений
  • Micrium uC/GUI - графическая библиотека для реализации пользовательского интерфейса на графических ЖК индикаторах.

Сторонние фирмы предлагают также и средства разработки и отладки, поддерживающие 32-х битные контроллеры Microchip.

Компания Ashling Microsystems предлагает отладчик кода PathFinder, среду разработки AsIDE и аппаратный эмулятор EJTAG с поддержкой микроконтроллеров PIC32. В качестве компилятора может использоваться либо MPLAB C32, либо компилятор C/C++ от компании MIPS (MIPS SDE). Полный набор отладки компании Ashling включает:

  • Внутрисхемный отладчик Opella-XD EJTAG
  • Отладчик кода PathFinder
  • Среда разработки AsIDE-MIPS
  • GDB-Server-MIPS. Сервер позволяет аппаратным эмуляторам Ashling использоваться с GNU GDB/Insight/Eclipse CDT и отладчиками. Поддерживается Windows и Linux.

Компания Green Hills Software, лидер в области разработки программных отладочных средств, предлагает интегрированную среду разработки MULTI IDE, включающую в себя менеджер проектов, текстовый редактор, пофайлер DoubleCheck™. Так же компания Green Hills Software предлагает EJTAG эмулятор Green Hills Probe и компилятор Си Green Hills MIPS Compiler.

Компания HI-TECH Software, хорошо известная по Си компиляторам для 8-и и 16-битных PIC-микроконтроллеров Microchip, так же объявила о выпуске Си компилятора для PIC32 - "HI-TECH C PRO for the PIC32".

Это первый OCG (Omniscient Code Generation) Си компилятор HI-TECH для 32-битных микроконтроллеров.

OCG позволяет компилятору определять какие конкретно регистры надо сохранить до того как входить в прерывание. Таким образом, вместо того, чтобы сохранять фиксированное количество регистров каждый раз, будут сохраняться только те, которые необходимо, тем самым исключаются лишние циклы, уплотняется код и увеличивается быстродействие, снижается потребляемый ток, и т.д.

Особенности HI-TECH Си компилятора для PIC32:

  • интеграция в среду разработки HI-TIDE 3;
  • интеграция в среду разработки MPLAB IDE;
  • поддержка отладочных средств MPLAB ICD-2, MPLAB REAL ICE;
  • включает исходный код библиотек и примеры проектов;
  • включает макроассемблер, линкер, препроцессор;
  • поддерживает различные ОС: Windows (в том числе Vista 64-bit), Linux и Mac OS X;
  • поддерживается с командной строки, что обеспечивает интеграцию в сторонние среды разработки и редакторы кода.


Как уже отмечалось, новое семейство высокопроизводительных 32-х разрядных микроконтроллеров PIC32 имеет совместимые с 16-и разрядными контроллерами PIC24 и dsPIC33 периферийные модули и программные библиотеки с одинаковым API, PIC32MX имеют те же самые корпуса и расположение выводов, что и контроллеры PIC24 и dsPIC33. Все микроконтроллеры Microchip поддерживаются единой средой разработки MPLAB IDE, и для отладки PIC32 используются те же самые отладочные средства, что и для других микроконтроллеров Microchip. Поэтому, если разработчику устройства с 16-и разрядным микроконтроллером Microchip необходимо добавить большей производительности или больше памяти в свой проект, то все что требуется, это заменить микроконтроллер, все остальное окружение и средства разработки остаются теми же самыми. Только Microchip Technology Inc. предоставляет более чем 500 типов микроконтроллеров от простых 8-и разрядных, высокопроизводительных 16-и разрядных микроконтроллеров и контроллеров цифровой обработки сигналов и 32-х разрядных PIC32, поддерживаемых единой бесплатной средой разработки и универсальными внутрисхемными отладчиками.

Илья Афанасьев,
Компания Гамма Санкт-Петербург

Статья была напечатана в журнале КиТ №9 за 2008 год






 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники