МАРСОХОД

Open Source Hardware Project

Проекты Altera Quartus II для платы Марсоход2

Терминал 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 тонкого клиента.. Может и сделаю...

 

Комментарии  

0 #3 тотчьёимяужезанято 11.12.2015 09:39
Я так и не понял - вы "проект" сами писали, аль взяли чей-то готовы? Просто если сами писали, то значит и с протоколом VT100 разобрались - тогда откуда глупые вопросы про F-клавиши? А если взяли готовый, то что тогда значит "с терминалом наигрался - хочу теперь тонкий клиент"..?!
Я немного далёк от темы марсоходов, поэтому спрошу влоб: USB-то как реализован? Внешней микрухой типа FT232? Или ручками прям в циклоне? если ручками, то чьими? Сами писали, или опять же готовое IP-ядро взяли??
0 #2 alman 15.05.2014 15:33
Цитирую Николай :
Можно попытаться подумать сделать какого нибудь USB тонкого клиента.. Может и сделаю...


Не передумали? На самом деле проект мог бы получиться весьма интересным.
0 #1 alman 26.03.2014 22:25
Насчёт функциональных клавиш повторюсь - отрабатывайте F1 как последовательно сть клавиш Esc и 1, F2 - как Esc и 2, и т.д. - получится дешево и сердито.

Что касается графического клиента, то можно, взять за основу TinyX - http://git.tinycorelinux.net/index.cgi?url=tinyx/tree/ и собрать его для Амбера

А вот отсюда можно утащить разные "драйвера"
http://ftp.xfree86.org/pub/XFree86/2.1/2.1-source/

(если склеить aa и ab, то в архиве можно найти много всякого-разного-интересного)

Скорее всего Вы и сами всё это знаете, т.ч. мой коментарий на всякий случай.. :lol:

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


Защитный код
Обновить


GitHub YouTube Twitter