Virtual COM Port (VCP) subsystem

Kernel architecture questions
  • Not many applications use the com port right now.
    And the ones that do, access the I/O ports directly. They will need to be rewritten.
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Ah, yes. Really sysfunc 46 only reserves, I thought it whole interface)
  • gtament
    Да, кроме стандартного RS232 у всех чипов имеется свой собственный функционал, доступный через дополнительные порты, MMIO или конфигспейс.

    И люди выбирают конкретный чип не только ради стандартных COM-портов, но и еще и ради этих дополнительных печенек - RS485, GPIO, встроенного счетчика событий и что у них еще там наворочено.

    Предусмотрен ли у тебя доступ к этим печенькам, или легче просто открыть для юзера все порты и MMIO?
  • В данном случае речь идет только о подсистеме виртуальных ком портов, прослойке между драйвером конкретного устройства и пприложением. Для ее работы по-прежнему нужен полноценный драйвер, который и будет реализовывать все то, что ты выше озвучил. И если кому-то эти плюшки понадобятся, то ему придется обращаться к устройству через драййвер и IOCTL. Надеюсь, понятно ответил
  • Кто-нибудь этим занят сейчас? Если нет, то возьму эту таску себе. В планах:
    • Сделать в ядре базовую поддержку последовательных портов: вынести в экспорт функции для добавления/удаления, добавить системный вызов для приложений (перечисление, открытие/закрытие, запись/чтение, настройка параметров, аппаратный контроль потока);
    • Написать отдельный драйвер для стандартных портов;
    • Адаптировать usbftdi (возможно впоследствии написать универсальный usbcdc?);
    • Поправить system/terminal для работы с новым API.
  • какая то библиотечка про UART пробегала
  • Sh@dy , было бы здорово всё это реализовать!
    Как будет что потестирвать — выкладывай.
  • Хочу добавить новое событие для подсистемы последовательных портов. Назначение события пока что два:
    • уведомить все приложения о том, что в системе появился/исчез порт
    • уведомить приложение, открывшее порт, что доступны данные для чтения
    В связи с этим вопрос: EVENT_EXTENDED, судя по всему, сейчас не используется. Можно его заменить?
  • I don't think EVENT_EXTENDED is to be used for that. There are virtual com devices, usb devices, ahci devices, network devices, etc: using a new event for each device type seems to be wasteful and just an improper design. I don't know what design would be a proper one though :D . It often happens in KolibriOS that to solve problem Y you have to solve problem X first. May be this is the case too.
  • Спасибо за ответ. Я согласен с тем, что добавление очередного события, возможно, является не лучшим выходом в этой ситуации. Оставлю пока в стороне реализацию событий от последовательных портов. Данные от них можно будет получить просто по запросу.
  • Небольшой отчет о проделанной работе:
    - написан драйвер serial.sys для работы с последовательными портами (com портами). Пока можно только открыть, закрыть, прочитать и записать данные, изменить baudrate. Помимо пользовательских функций, есть api для добавления/удаления портов другими драйверами.
    - доработан драйвер usbftdi (usbother.sys), который создаёт порты через serial.sys.
    - доработана программа terminal, которая теперь работает через serial.sys. Пока что настройки чётности и количества бит игнорируются. Всегда 8N1.

    Для желающих потестировать прикладываю бинарники.

    На скриншоте linux - agetty - silabs cp210x (ttyUSB0) <=> ftdi ft232rl (1) - terminal - kolibrios
    Attachments
    terminal.png
    terminal.png (54.61 KiB)
    Viewed 9627 times
    Downloaded 118 times
    Last edited by b00bl1k on Fri Dec 30, 2022 10:31 pm, edited 1 time in total.
  • Very nice to see advancements on this subject and your progress so far.
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Who is online

    Users browsing this forum: No registered users and 0 guests