Вадим Галянт написал драйвер 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 будет немного похожа на рабочую систему.

upd.

После пары дней танцев удалось запустить рабочую программу под ReactOS.

Танцы были связаны с нежеланием платы Arduino Due полноценно работать через Native USB port под ReactOS. Принимать команду она принимала, а ответ до ПК не доходил. Под Windows10 естественно все работало как надо. Пришлось перекомпилировать прошивку для работы через Programming port, тогда заработало.