Инструменты разработки
выбрали, установили и проверили на работоспособность. Теперь пришло время познакомиться с промышленной реализацией архитектуры 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":
![](http://img-fotki.yandex.ru/get/9504/161653612.6d/0_da449_dea0ff69_XL.png)
Как видим, наши команды add, addi и beq присутствуют уже на 1й странице таблицы - все честно. Все остальные реализованные нами команды (sub, lw, sw и j) там тоже есть - желающие могут убедиться в этом самостоятельно, открыв документ и пролистав таблицу. Всего в таблице перечислено 124 команды.
Исходя из этих чисел уже можно попробовать оценить масштаб работы, который будет необходимо проделать тому, кто по какой-то причине решит пройти путь от лабораторной работы в ее текущем виде до полноценного процессора, который получит возможность хотябы попытаться запускать программы, скомпилированные для MIPS32. Реализовано 7 команд из 124х - это чуть больше 5%, осталось еще 95%. В процентах выглядит мало, но в абсолюте не так страшно - где есть 7, там будет и 117, тем более, что многие из них (но далеко не все!) могут быть реализованы
по уже обкатанному нами не слишком сложному шаблону.
Однако команды ассемблера - это только вершина айсберга.
Продолжение
Лабораторная работа 6: знакомство с промышленной реализацией архитектуры MIPS на примере pic32 (2) >>