ANSI графика, интерактивность и отладчик

Comment are off

Преодолён первый рубеж — процессор научился работать со встроенным последовательным портом. Чтобы показать что у нас получается, мы подгтовили простую демонстрационную прошивку. На следующей картинке показано количество ресурсов занятых демонстрационной прошивкой:

Flow status

Чтобы добавить в демку интерактивности, мы научили процессор читать данные с последовательного порта. Для этого былм реализованы две подпрограммы — _uart_status и _getchar. Их код показан на следующей картинке:

_getchar

Наконец, чтобы «подсластить» полученный результат, мы добавили в демку две ANSI картинки. Картинки были взяты готовые — мы воспользовались одной из галерей ANSI-арта. Ниже показан пример вывода картинки в терминале:

ANSI art

Сценарий работы демки весьма прост. После загрузки или сброса (reset это кнопка на плате Марсохода2, которая ближе к красному светодиоду), на удалённый терминал выводится приветствие «Hello world!\r\n». Нажатие на любую клавишу (кроме цифр 1 и 2) в терминале выведет на экран строку: «Any key pressed!». При нажатии в терминле на клавишу 1 на экране терминала будет нарисована ANSI картинка, которую вы видите выше. При нажатии на клавишу 2 на экране будет нарисована другая ANSI картинка. Мы сознательно не публикуем вторую картинку, в надежде возбудить любопытство у владельцев платы Марсоход2 и таким образом стимулировать их к тесту прошивки.

У этой демонстрашки есть одно свойство — в любой момент процессор можно перевести в режим пошагового исполнения. В этом случае управление портом передаётся встроенному отладчику и при нажатии любой клавиши в терминале в него будет выведено текущее состояние шин процессора. В режим пошагового исполнения (и обратно) процессор переводит нажатие на кнопку на плате, которая находится дальше от красного светодиода. Следует иметь в виду, что при пошаговой отладке процессор через некоторое время попадёт в цикл ожидания готовности данных с терминала. Но поскольку во время отладки порт назначен отладчику, то в пошаговом режиме получить данные с порта невозможно и цикл будет бесконечным. В режиме пошаговой отладки любое нажатие на кливишу в терминале (кроме функциональных клавиш и клавиш управления курсором) выполнит одну машинную команду (инструкцию) процессора. Вернуться в обычный режим работы можно повторным нажатием на кнопку входа в режим пошаговой отладки. Как вариант — можно нажать кнопку сброса для перевода устройства в начальное состояние.

Отметим, что мы сильно не защищались от дребезга контактов, поэтому иногда могут проявляться нежелательные эффекты при использовании кнопок на плате.

Для того, чтобы поместить ANSI картинки непосредственно в прошивку ПЛИС, мы добавили новую директиву в ассемблер — директиву import. С помощью этой директивы в прошивку можно поместить любой файл, если он помещается в область отведённую для микрокода.

Традиционно, прошивку можно скачать из темы на форуме Марсохода.

Скачать свежую версию МакроАссемблера.


Оставить комментарий