Терминал VT100



На этом видео - демонстрация возможностей терминала VT100 созданного на базе платы Марсоход2 и ее шилда разъемов. Плата Марсоход2 подключена к ноутбуку через USB кабель. Из среды Altera Quartus II я загружаю скомпилированный образ проекта VT100 в ПЛИС Cyclone III платы и после этого подключенный к плате монитор обнаруживает видеосигнал и синхронизируется.

Проект для ПЛИС Cyclone III представляет из себя SoC (System-on-Chip) на базе Amber ARMv2a. Тут я немного поленился и не стал менять загрузчик из ПЗУ проекта - там сейчас простейший монитор, который позволяет загрузить через последовательный порт протоколом XMODEM в ОЗУ платы собственно программу vt100.elf. После загрузки этой программы в память платы и после запуска vt100.elf на экране монитора появляется надпись "Hello VT100 World!" и еще мигает курсор.

Теперь самое интересное. У меня на ноуте стоит виртуальная машина с Ubuntu. Я ее дополнительно сконфигурировал так, что ttyUSB1 будет использоваться как консоль.

В свойствах виртуальной машины есть возможность подсоединенные USB устройства подключить к виртуальной машине.

ubuntu

Виртуальная машина видит плату Марсоход2 как устройство Future Devices Dual RS232-HS. Подключаю плату к машине Ubuntu и вот чудо: через несколько секунд появляется консоль терминала.

На демонстрационном видео видно:

  • появляется запрос на ввод логина и пароля Linux - ввожу;
  • выполняю простые команды типа "ls" и "ls -l";
  • запускаю MidnightCommander, mc и могу выбирать файлы, перемещаться по панелям файлового менеджера;
  • аппаратный курсор работает;
  • клавиши клавиатуры работают почти все, левый Shift и левый Ctrl. Вот с F клавишами не разобрался. Похоже в стандарте VT100 их просто нет? Но тут могу ошибаться.

Конечно, такой проект, в этом виде, еще очень далек от совершенства, но оно мне в общем и не к чему. Совершенствовать, конечно, можно до бесконечности, там есть что улучшать. Самое главное - нужно совершенствовать ПО терминала VT100 - я использую исходники из https://github.com/JulienPalard/vt100-emulator и пытался их адаптировать к моему проекту.

Многое там мне не очень понятно и кое-что кажется можно сделать лучше. Приятно, что все, что было написано мною на Си и скомпилировано для Amber ARM - работает без проблем в моей системе..

Весь проект можно взять вот здесь:

Терминал VT100 ( 3163346 bytes )

Еще лучше склонировать проект из GitHub и перейти в бранч vt100:


> git clone https://github.com/marsohod4you/Amber-Marsohod2.git
> cd Amber-Marsohod2
> git checkout amber-soc-vt100-term


 Исходники программы терминала в папке sw/vt100. Там же есть и скомпилированный vt100.elf файл.
Исходники SoC в папке hw.

В моей SoC теперь дополнительно еще есть модуль текстового экрана txtscreen, который интегрирует в себя:

  • статическую память экрана;
  • память шрифта VGA;
  • VGA контроллер с разрешением 1440x900 (но отображающий текстовый экран);
  • регистры управления аппаратным курсором;
  • PS/2 контроллер и его регистры.

Весь модуль txtscreen установлен на системную шину Wishbone BUS в системе на кристалле Amber SoC. Доступ к регистрам модуля осуществляется процессором по адресу 0x17000000 и выше.

Теперь, когда я вдоволь наигрался с VT100 подумалось: а не замахнуться ли на Вильяма Шкспира на графический тонкий клиент? Чтоб, клавиатура, мышь была, чтоб браузер или LibreOffice запустить в терминальной сессии? Только не нужно пытаться делать его стандартным для запуска какого нибудь FreeRDP - так точно не получится, слишком мало ресурсов. Можно попытаться подумать сделать какого нибудь USB тонкого клиента.. Может и сделаю...

 


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