Hello SCR1

 

В этом видео ролике я показываю, как запустить простую RISC-V программу в плате Марсоход3. Программа написана для системы Syntacore RISC-V SCR1.

В оригинальных синтакоровских исходниках есть простой пример sw/hello, но он уж совсем простой и скучный - эта программа запускается и выводит в консоль, через последовательный порт сообщение "Hello SCR1" и все.

Я сделал свою программу helloEx. Она чуть похитрее. Её исходники есть на нашем github в папке sw/helloEx. Дальше расскажу, что делает эта программа и как запускить её в нашей FPGA RISC-V системе.

Программа при запуске первым делом печатает "Hello SCR1", а затем в цикле:

  • выводит на светодиоды состояние двоичного счетчика;
  • выводит на семисегментный индикатор этот же счетчик в шестнадцатеричном виде;
  • опрашивает состояние порта DIP switch, а на плате Марсоход3 с шилдом 7ми сегментного индикатора это просто 4 кнопки;
  • при нажатии на кнопку печатает в консоль последовательного порта сообщение об изменении состояния кнопок;
  • при нажатии на первую или вторую кнопку меняет направление счета двоичного счетчика UP или DOWN;
  • опрашивает порт таймера и вносит в цикл задержку.

Программа написана на языке C и компилируется для процессора RISC-V. О том, как установить среду для компиляции программ на Си я писал в предыдущей статье.

Если коротко повторить, то я использую консоль GitBash для ОС Windows 10 с установленной к нему утилитой сборки make. В консоли GitBash набираю:

> cd sw/helloEx
> export CROSS_PATH=/d/Programs/riscv/riscv-gcc-w64-10.2.0-gb693c14--200904T1226/bin/
> make PLATFORM=marsohod3_scr1

Вероятно вы можете использовать любой другой путь к RISC-V компилятору.

В результате сборки получается двоичный файл build.marsohod3_scr1.tcm.o2/hello.bin
Теперь его нужно загрузить в FPGA плату и запустить на реализованном в ней процессоре RISC-V.

Напомню, что у нас в FPGA проекте первым стартует bootloader. Уже этот bootloader предоставляет возможность интерактивной работы и одна из его функций это загрузка внешней программы через последовательный порт по протоколу Xmodem.

Последовательность действий такая:

  • загружаем проект в FPGA с помощью Intel Quartus Prime Programmer через JTAG платы Марсоход3 (первый канал микросхемы FTDI FT2232H );
  • запускаем на комьютере программу TeraTerm и конфигурируем её на второй последовательный порт микросхемы FTDI. Скорость передачи 115200, 8 бит, 1 стоп, без чётности;
  • нажимаем в консоли TeraTerm "i" и видим всю информацию о системе SCR1 и плате;
  • нажимаем в консоли TeraTerm "1" и видим нам предлагается ввести адрес, куда будет загружаться наша программа. Здесь вводим f0000000. Это адрес TCM, Tightly Coupled Memory - область статической памяти в системе, всего 64 килобайта. Сюда будет загружена программа по протоколу Xmodem;
  • в программе TeraTerm выбираем в меню File -> Transfer -> XMODEM -> Send и появляется диалоговое окно выбора файла для пересылки. Выбираем только что скомпилированный build.marsohod3_scr1.tcm.o2/hello.bin. Всё. Файл отправлен;
  • в консоли терминала набираем "g" для запуска загруженной программы. Система попросит ввести адрес запуска программы. Опять вводим f0000000. Нажимаем Enter - программа запущена и работает.

Всё изложенное здесь продемонстрированно на видео в начале поста.
В общем пока тут всё не сложно. Можно двигаться дальше и будем изучать.

 

Добавить комментарий