1i7 (1i7) wrote,
1i7
1i7

Лабораторная работа 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) >>
Tags: microchip, mips, pic32, лаба 6, цифровая электроника для программистов
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment