July 23rd, 2013

Лабораторная работа 6: знакомство с промышленной реализацией архитектуры MIPS на примере pic32 (1)

Инструменты разработки выбрали, установили и проверили на работоспособность. Теперь пришло время познакомиться с промышленной реализацией архитектуры MIPS32 в виде процессора PIC32 поближе.

Вообще говоря, тема программирования микроконтроллеров для новичков популяризована и раскрыта в большом количестве литературы в гораздо большей степени, чем цифровой дизайн с Verilog и ПЛИС. Также любой студент-программист и даже школьник сможет начать программировать контроллер за один вечер на Си еще быстрее, чем ПЛИС на Verilog. По этой причине в оставшееся время я не буду пытаться углубляться в особенности чипов PIC32 или по нарастающей сложности приводить примеры программирования с решением типовых задач на очередном витке абстракции.

Вместо этого ограничимся поверхностным рассмотрением контроллера PIC32 в контексте предыдущей лабораторной работы на Verilog с собственной реализацией процессора MIPS - попробуем выделить некоторые аналогичные элементы систем и посмотреть, в чем сходство и в чем различие реализации нашей и реализации промышленной. А в качестве практической части будет запуск простых программ на ассемблере MIPS и на Си, традиционно мигающих светодиодами.

Дополнительно документация

В дополнение к уже выбранным книгам скачаем из интернета еще документ с полным техническим описанием микроконтроллера pic32 (или datasheet - на сленге даташит) с microchip.com (к слову, в "Programming 32-bit Microcontrollers in C. Exploring the PIC32. Lucio Di Jasio." на этот документ делается большое количество отсылок, что логично).

На сайте microchip.com его можно найти следующим образом:
microchip.com > PRODUCTS > 32-bit PIC® Microcontrollers > Data Sheets > PIC32MX3/4 Data Sheet (сохраненная копия).


Также нам пригодится документация на отладочную плату с микроконтроллером pic32 - как уже договорились ранее, в данной серии лабораторных работ это будет плата Digilent ChipKIT Uno32. Нужный нам документ (на странице платы Digilent ChipKIT Uno32 ссылка в списке документов внизу страницы - раздел "Support Documents", подойдет REV.B или REV.C - не важно) - chipKIT™ Uno32 reference manual (сохраненная копия).

Поддерживаемые команды - ассемблер MIPS32

Начнем с самого простого и очевидного - списка поддерживаемых процессором команд, т.е. языка ассемблера.

В нашей учебной реализации процессора MIPS32 мы с самого начала договорились из всего множества определенных в ассемблере MIPS32 команд реализовать всего 7: add (сложение), sub (вычитание), lw (загрузка значения из памяти данных), sw (сохранение значения в память данных), addi (сложение с константой), beq (условный переход), j (безусловный переход) - ниже каждая из них будет разобрана в деталях.

Очевидно, что производитель промышленного контроллера pic32 компания Microchip не может позволить себе аналогичное упрощение жизни, поэтому микроконтроллер pic32 содержит реализацию всех команд ассемблера, определенных в стандарте архитектуры MIPS32. Как легко догодаться, полный список команд можно посмотреть в документе с полным техническим описанием микроконтроллера pic32 (даташите) - раздел "27.0 Instruction Set > Table 27-1: MIPS32 Instruction Set":



Как видим, наши команды add, addi и beq присутствуют уже на 1й странице таблицы - все честно. Все остальные реализованные нами команды (sub, lw, sw и j) там тоже есть - желающие могут убедиться в этом самостоятельно, открыв документ и пролистав таблицу. Всего в таблице перечислено 124 команды.

Исходя из этих чисел уже можно попробовать оценить масштаб работы, который будет необходимо проделать тому, кто по какой-то причине решит пройти путь от лабораторной работы в ее текущем виде до полноценного процессора, который получит возможность хотябы попытаться запускать программы, скомпилированные для MIPS32. Реализовано 7 команд из 124х - это чуть больше 5%, осталось еще 95%. В процентах выглядит мало, но в абсолюте не так страшно - где есть 7, там будет и 117, тем более, что многие из них (но далеко не все!) могут быть реализованы по уже обкатанному нами не слишком сложному шаблону.

Однако команды ассемблера - это только вершина айсберга.


Продолжение Лабораторная работа 6: знакомство с промышленной реализацией архитектуры MIPS на примере pic32 (2) >>