«Привет, мир!»

Comment are off

Появились первые результаты переноса UART в адресное пространство процессора. Тестовая программа в бесконечном цикле выводит на экран строку «Hello world!\r\n».

Ниже показан главный файл тестовой прошивки «Привет, мир». Код совершенно тривиален. Процессор обзавёлся новой инструкцией DEBUG, которая переводит процессор в режим пошагового исполнения команд и обратно (триггер). Однако, в этом примере пошаговая отладка не используется, поскольку код вывода строки работает в бесконечном цикле.

main

Следущая картинка показывает подпрограмму вывода строки в последовательный порт. Пожалуй, в ней два требующих пояснения момента. Во первых, эта подрограмма не использует стек, поэтому адрес возврата сохраняется в регистре. В этом примере для хранения адреса возврата используется регистр R12. Во вторых, поскольку пока процессор умеет работать только с 32-битными типами данных, то использует «хак» для операций с 8-битными данными.

_puts

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

_putchar

Информация о прошивке. Большое число логических элементов объясняется наличем встроенных средств отладки. При штатной работе программы они не активны, но в случае ошибки или исполнения инструкции DEBUG, процессор войдёт в режим пошагового исполнения c выводом в последовательной порт отладочной информации о состоянии шин.

Использование ресурсов ПЛИС

Тест прошивки. К сожалению, статическая картинка не может передать бесконечный вывод на экран строки приветствия. Как видите, процессор научился не только моргать лампочками, но выводить осмысленную информацию.

Run on FPGA - out to serial port

Таким образом процессор «Эверест» приобретает черты «Системы на кристалле» (SoC) — последовательный порт это первое внешнее устройство, с которым учится работать ядро процессора.

Образ тестовой прошивки для платы Марсоход можно скачать из темы на форуме Марсохода.

Напомним параметры порта:
Speed (baud) 38400
Data bits 8
Stop bits 1
Parity: None
Flow control: None

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