На сайте habr.com появилось очень много статей о процессоре с архитектурой MIPS. Конечно это интересно. Компания Imagination Technologies Group еще 2013 году приобрела MIPS Technologies, Inc. и ее разработки в области архитектурных решений микропроцессорного ядра и IPCores. С тех пор многое изменилось. Стремясь вернуть МИПСу былое влияние на рынок, компания Imagination предприняла ряд решительных мер. Например, она открыла исходные тексты ядра всем заинтересованным лицам. Университеты могут бесплатно получить исходники и обучающие материалы по MIPS процессору и могут преподавать студентам его внутреннее устройство и принципы работы. Ядро MIPS можно запустить на многих платах с ПЛИС: de0_cv, de0_nano, de10_lite, nexys4 и других.
Позже, в 2018 году, Wave Computing приобрела технологии MIPS, однако, ядро MIPS остается открытым и это хорошая новость.
Мы подумали, что запуск ядра MIPSfpga в плате Марсоход3 должен быть интересным нашим читателям. Именно поэтому последнее время я занимаюсь портированием этого проекта на нашу плату.
Итак, что мне нужно сделать:
1) Получить исходные тексты MIPS. Инструкция вот здесь: http://www.silicon-russia.com/2015/12/11/mipsfpga-download-instructions/ (Исправление от 2019 года.)
Для получения исходных текстов MIPS зарегистрируйтесь на сайте mipsopen.com: https://www.mipsopen.com/register/ После этого, перейдите по ссылке Download: https://www.mipsopen.com/resources/download/ и найдите блок ссылок под общим названием "MIPS Open FPGA". Там есть две ссылки, которые нам подходят, эти либо MIPS Open FPGA Getting Started Package либо MIPS Open FPGA SOC. Возможно подходит и ссылка MIPS Open FPGA Labs - не знаю, тут не проверял. В любом случае придется заполнить небольшую форму и написать, зачем вам нужны эти исходники. Ну придумайте что нибудь. Я получал писал свой запрос и буквально на следующий день мне приходила на почту ссылка для скачивания.
Таким образом вы получаете первую часть - исходники ядра. Вторая часть исходных текстов - это обвязка для конкретных FPGA плат и скрипты тестирования и симуляции на http://github.com/MIPSfpga/mipsfpga-plus. Это основной репозиторий, но для платы Марсоход3 берите не эту ссылку, а мой форк на github - об этом ниже.
2) Нужно адаптировать Verilog проект mipsfpga-plus для платы Марсоход3, этим я уже занимаюсь. Проект mipsfpga-plus я форкнул с гитхаба и теперь буду его менять и сопровождать в своем репозитории https://github.com/marsohod4you/mipsfpga-plus. Я уже сделал первые комиты в проект в бранч support-for-marsohod3 (и уже, в принципе, проект работает). Может потом сделаю pull request.
3) Скачать компилятор C/C++. На самом деле тут даже целый SDK, который содержит и компиляторы и все нужные библиотеки: https://www.mips.com/develop/tools/codescape-mips-sdk/. Я уже понимаю, что запустить Linux в плате Марсоход3 скорее всего не получится, так как судя по описаниям ему требуется хотя бы 16 Мбайт памяти, а у нас есть только 8. Однако, я буду запускать так называемые baremetal программы - это когда одна единственная программа запускается и работает, как в обычном микроконтроллере.
4) Скомпилировать тестовые C-программы mipsfpga-plus и запустить их в плате Марсоход3.
Я постараюсь на страницах нашего блога описать все свои эксперименты с MIPS. Однако, материалов по теме MIPSfpga уже очень много на хабре. Просто приведу ссылки на хабровские статьи (надеюсь их автор не против):
[L2] MIPSfpga и внутрисхемная отладка
[L3] Проект MIPSfpga-plus
[L4] MIPSfpga и SDRAM
[L5] MIPSfpga и прерывания
[L6] MIPSfpga и UART
[L7] Текущая активность вокруг MIPSfpga и не только
[L8] Поднимаем Linux на MIPSfpga и ПЛИС Altera
[L9] Портирование MIPSfpga на другие платы и интеграция периферии в систему
[L10] Подключение периферийных модулей к MIPSfpga, на примере клавиатуры Pmod KYPD
[L11] Подключение периферийных модулей к MIPSfpga, на примере ультразвуковых датчиков расстояния
[L12] MIPSfpga: вне канона
[L13] Как начать работать с MIPSfpga
Подробнее...