Вадим Галянт написал драйвер usbser.sys для ReactOS, и теперь (барабанная дробь) появилась возможность программировать платы Arduino в ReactOS. И да, на реальном железе, а не только в Virtual Box.

Ну как... теоретическая возможность на самом деле.

Для программирования скетча Arduino и загрузки прошивки в плату надо было решить три проблемы:

  1. Написать и отладить драйвер usbser.sys, чтобы при подключении платы Arduino в системе появлялся виртуальный comport, через который осуществляется связь платы с ПК.

  2. Подобрать работающий вариант ПО для компиляции скетча и загрузки его в плату Arduino.

  3. Установить ReactOS, драйвера и необходимое ПО на реальное железо.

С установкой ReactOS проблем не было.

Для работы на ноутбук MSI U135DX (Intel Atom N455 1 Гб ОЗУ) была с загрузочной флешки установлена сборка ReactOS 0.4.14 release 0. Сложностей не возникло - в имеющейся инструкции подробно расписаны шаги по установке.

Hidden text
  1. Используйте инструмент Rufus

  2. Выберите в нем свою флешку емкостью не менее 1 гигабайта. Все данные на флешке будут удалены!

  3. Нажмите «Show advanced drive properties»

  4. Выберите тип загрузки: Syslinux 6.x

  5. Схема разделов:MBR, Файловая система:FAT32

  6. Отформатируйте диск, используя указанные выше параметры

  7. Распакуйте в корень флешки содержимое архива по ссылке.

Единственным моментом оказалось то, что этот ноутбук видел только старые флешки размером 2 Gb, а флешку размером 8 Gb не видел и соответственно с нее не грузился.

Спасибо светодиоду на флешке, иначе ступор продолжался бы дольше.

Система установилась без проблем.

Подправленный драйвер usbd.sys был просто переписан, а usbser.sys добавлен в папку c:\reactos\sytem32\drivers

Далее надо было установить драйвера для платы Arduino. Драйвера можно найти в папке drivers Arduino IDE, например C:\arduino-1.8.13\drivers и переписать на флешку.

Для ReactOS надо запускать dpinst-x86.exe.

Иногда установка драйверов через dpinst-x86.exe не срабатывала (все таки React OS еще очень сырая система) и приходилось устанавливать драйвера через Диспетчер устройств React OS.

На плате Arduino Due имеются два порта USB - "Programming port Atmega16U2" и "Native USB Sam3x" и надо было понять под каким именем устройство появляется в диспетчере.

Например Composite USB Device.

Пытаемся установить для него драйвера...

и вуаля...

или не вуаля...

Сырая система, сырая... Но это обычно происходит если вытащить USB кабель и снова воткнуть. USB устройство не отключается корректно.

Как сказал Вадим

"В Реактосе отключение USB глючное
Это косяк в диспетчере PnP ядра
На железе никто не занимается отладкой
Там вообще удаление устройства - целая история
Но в Реактосе всё упрощают максимально
Понять можно - народу мало
Драйвера тоже примитивные зачастую
Да и я вот не все 100% сделал для usbser"

Кроме того сейчас номер порта нужно прописывать в реестре руками.

PortName COM3 например, или любой другой свободный.

Но когда драйвера установились корректно, можно связываться с платой.

Первая проверка была из командной строки. В плату был предварительно прошит скетч, который выводил на TFT дисплей принятую строку.

И правда... на дисплее появилась строка "hello"

Итак, драйвера работают, и можно программировать плату.

Для компиляции и прошивки платы Arduino первоначально предполагалось использовать утилиту командной строки arduino-cli. Но оказалось, что последние версии этой утилиты могут работать только в ОС от Windows 7 и выше.

А ReactOS на данном этапе стремится достичь совместимости с Windows XP (NT5.x). Запускаться под WinXP могут только ранние версии (до arduino-cli 0.05, включительно) и то после некоторого "допиливания" Но, поскольку специалистов в языке GO среди нас не было, добиться успеха с использованием arduino-cli мы не смогли. Хотя это интересная задача и, используя эту утилиту, можно программировать из командной строки или прикрутить arduino-cli к другим редакторам.

Поэтому оставалась другая очевидная возможность - использовать среду Arduino IDE для программирования скетча и заливки прошивки в плату. Последней из версий Arduino IDE, работающей под Windows XP была v. 1.8.9. Она запустилась под ReactOS, но к сожалению в процессе компиляции возникали ошибки и пришлось использовать версию 1.6.9. Не обошлось без небольшого трюка - пришлось создать папку portable и переписать туда содержимое папки arduino15
(C:\Users\MyUser\AppData\Local\arduino15).

Тогда не потребовалась установка среды, достаточно было переписать ее в ReactOS.

И, ура, все получилось - был скомпилирован и загружен в плату Arduino Due скетч blink.

На скрине правда успешная загрузка пустого скетча, но blink тоже загрузился, честное слово!

Но это конечно только демонстрация потенциальных возможностей. Так как драйверов железа под ReactOS не имеется, работать очень некомфортно.

К примеру нет драйвера сетевого адаптера, без которого невозможен выход в интернет, драйвера видеоадаптера.

Компиляция и заливка скетча занимает около 20 мин, 18 мин из которых проводятся какие-то операции, которые в консоли не отображаются. При этом идет непрерывное обращение к винчестеру.

После чего довольно шустро компилируется скетч и заливается прошивка в плату.

Хотя конечно сам факт успешной компиляции говорит о том, что ReactOS достигла определенной ступени зрелости.

Система уже поддерживает работу довольно широкого круга программ и запускается на реальном железе.

А теперь немного айтишного фансервиса!

Hidden text

Winamp устанавливается, запускается, но поскольку драйверов к звуковой карте нет, то выдает ошибку DirectSound output error .

Everest реально работает и выдает информацию о железе. Aida кстати тоже работает.

Та-да-а.. Но играть невозможно, так как экран перерисовывается раз в секунду.

Забавная программа Sequoia View. Наглядно показывает, каким файлами захламлен диск.

Mars Notebook. Классная программа для ведения заметок, Форматированный текст, картинки.

Поделие, написанное на Rapid-Q Basic. Что-то вреде калькулятора, мышкой можно битики переключать.
Вообще все программы на Rapid-Q работают на всех Windows от 95 до 10. Как говорится - "От Ильича до Ильича без инфаркта и паралича".

Delphi7. Живее всех живых. Причем работает довольно шустро.

На этом пока все.

Следующие шаги - это развитие системы на базе сборки ReactOS 0.4.11.2.1 Вадима Галянта (http://vgal.ru.com/reactos-0-4-11-2-1/#more-587 .) с целью возможности использования в ReactOS драйверов железа совместимых с NT 5.2 (W2003\XP). Тогда возможно ReactOS будет немного похожа на рабочую систему.

Комментарии (2)


  1. nagayev
    01.04.2022 00:32

    Компиляция и заливка скетча занимает около 20 мин

    Мда, если ничего не путаю занимать должно столько же, но в секундах...

    Интересно почему так медленно.


    1. diakin Автор
      01.04.2022 10:09

      Сам запуск среды Arduino IDE тоже длится минут 20 на железе... Возможно, проблема с медленной работой диска под ReactOS.