«Привет, мир!»
Появились первые результаты переноса UART в адресное пространство процессора. Тестовая программа в бесконечном цикле выводит на экран строку «Hello world!\r\n».
Ниже показан главный файл тестовой прошивки «Привет, мир». Код совершенно тривиален. Процессор обзавёлся новой инструкцией DEBUG, которая переводит процессор в режим пошагового исполнения команд и обратно (триггер). Однако, в этом примере пошаговая отладка не используется, поскольку код вывода строки работает в бесконечном цикле.
Следущая картинка показывает подпрограмму вывода строки в последовательный порт. Пожалуй, в ней два требующих пояснения момента. Во первых, эта подрограмма не использует стек, поэтому адрес возврата сохраняется в регистре. В этом примере для хранения адреса возврата используется регистр R12. Во вторых, поскольку пока процессор умеет работать только с 32-битными типами данных, то использует «хак» для операций с 8-битными данными.
Далее подпрограмма вывода символа в последовательный порт. Процессор не поддерживает прерывания, поэтому подрограмма в цикле проверяет готовость порта к передаче данных. Пока придётся таким образом опрашивать состояние устройств, а в будущем вместо прерываниний будут использоваться сообщения.
Информация о прошивке. Большое число логических элементов объясняется наличем встроенных средств отладки. При штатной работе программы они не активны, но в случае ошибки или исполнения инструкции DEBUG, процессор войдёт в режим пошагового исполнения c выводом в последовательной порт отладочной информации о состоянии шин.
Тест прошивки. К сожалению, статическая картинка не может передать бесконечный вывод на экран строки приветствия. Как видите, процессор научился не только моргать лампочками, но выводить осмысленную информацию.
Таким образом процессор «Эверест» приобретает черты «Системы на кристалле» (SoC) — последовательный порт это первое внешнее устройство, с которым учится работать ядро процессора.
Образ тестовой прошивки для платы Марсоход можно скачать из темы на форуме Марсохода.
Напомним параметры порта:
Speed (baud) 38400
Data bits 8
Stop bits 1
Parity: None
Flow control: None
Оставить комментарий