Вадим Галянт написал драйвер usbser.sys для ReactOS, и теперь (барабанная дробь) появилась возможность программировать платы Arduino в ReactOS. И да, на реальном железе, а не только в Virtual Box.
Ну как... теоретическая возможность на самом деле.
Для программирования скетча Arduino и загрузки прошивки в плату надо было решить три проблемы:
Написать и отладить драйвер usbser.sys, чтобы при подключении платы Arduino в системе появлялся виртуальный comport, через который осуществляется связь платы с ПК.
Подобрать работающий вариант ПО для компиляции скетча и загрузки его в плату Arduino.
Установить ReactOS, драйвера и необходимое ПО на реальное железо.
С установкой ReactOS проблем не было.
Для работы на ноутбук MSI U135DX (Intel Atom N455 1 Гб ОЗУ) была с загрузочной флешки установлена сборка ReactOS 0.4.14 release 0. Сложностей не возникло - в имеющейся инструкции подробно расписаны шаги по установке.
Hidden text
Используйте инструмент Rufus
Выберите в нем свою флешку емкостью не менее 1 гигабайта. Все данные на флешке будут удалены!
Нажмите «Show advanced drive properties»
Выберите тип загрузки: Syslinux 6.x
Схема разделов:MBR, Файловая система:FAT32
Отформатируйте диск, используя указанные выше параметры
Распакуйте в корень флешки содержимое архива по ссылке.
Единственным моментом оказалось то, что этот ноутбук видел только старые флешки размером 2 Gb, а флешку размером 8 Gb не видел и соответственно с нее не грузился.
Спасибо светодиоду на флешке, иначе ступор продолжался бы дольше.
![](https://habrastorage.org/getpro/habr/upload_files/08c/042/6cd/08c0426cd8762492993afc2089bee49c.png)
Система установилась без проблем.
![](https://habrastorage.org/getpro/habr/upload_files/cb7/626/51a/cb762651aeceaefe8384402c4d481eeb.png)
Подправленный драйвер usbd.sys был просто переписан, а usbser.sys добавлен в папку c:\reactos\sytem32\drivers
Далее надо было установить драйвера для платы Arduino. Драйвера можно найти в папке drivers Arduino IDE, например C:\arduino-1.8.13\drivers и переписать на флешку.
Для ReactOS надо запускать dpinst-x86.exe.
![](https://habrastorage.org/getpro/habr/upload_files/324/1d4/e37/3241d4e375e9e755cec1fd7603c03ec7.png)
Иногда установка драйверов через dpinst-x86.exe не срабатывала (все таки React OS еще очень сырая система) и приходилось устанавливать драйвера через Диспетчер устройств React OS.
На плате Arduino Due имеются два порта USB - "Programming port Atmega16U2" и "Native USB Sam3x" и надо было понять под каким именем устройство появляется в диспетчере.
Например Composite USB Device.
Пытаемся установить для него драйвера...
![](https://habrastorage.org/getpro/habr/upload_files/13a/baf/3f0/13abaf3f022e55e1054b6b625f380ea1.png)
и вуаля...
![](https://habrastorage.org/getpro/habr/upload_files/bdf/16a/75f/bdf16a75f985a72263abe0c430563160.png)
или не вуаля...
![](https://habrastorage.org/getpro/habr/upload_files/d9c/29f/022/d9c29f022a2b0625e87f55072fbea0da.png)
Сырая система, сырая... Но это обычно происходит если вытащить USB кабель и снова воткнуть. USB устройство не отключается корректно.
Как сказал Вадим
"В Реактосе отключение USB глючное
Это косяк в диспетчере PnP ядра
На железе никто не занимается отладкой
Там вообще удаление устройства - целая история
Но в Реактосе всё упрощают максимально
Понять можно - народу мало
Драйвера тоже примитивные зачастую
Да и я вот не все 100% сделал для usbser"
Кроме того сейчас номер порта нужно прописывать в реестре руками.
PortName COM3 например, или любой другой свободный.
![](https://habrastorage.org/getpro/habr/upload_files/caf/f05/797/caff057978bc5dbb89e514b8cc731065.png)
Но когда драйвера установились корректно, можно связываться с платой.
Первая проверка была из командной строки. В плату был предварительно прошит скетч, который выводил на TFT дисплей принятую строку.
![](https://habrastorage.org/getpro/habr/upload_files/d10/e2b/fca/d10e2bfca39550a7e8bc13e87d58f55d.png)
И правда... на дисплее появилась строка "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.
![](https://habrastorage.org/getpro/habr/upload_files/18a/26b/827/18a26b82786bb117049d9f4a83746b45.png)
На скрине правда успешная загрузка пустого скетча, но blink тоже загрузился, честное слово!
Но это конечно только демонстрация потенциальных возможностей. Так как драйверов железа под ReactOS не имеется, работать очень некомфортно.
К примеру нет драйвера сетевого адаптера, без которого невозможен выход в интернет, драйвера видеоадаптера.
Компиляция и заливка скетча занимает около 20 мин, 18 мин из которых проводятся какие-то операции, которые в консоли не отображаются. При этом идет непрерывное обращение к винчестеру.
После чего довольно шустро компилируется скетч и заливается прошивка в плату.
Хотя конечно сам факт успешной компиляции говорит о том, что ReactOS достигла определенной ступени зрелости.
Система уже поддерживает работу довольно широкого круга программ и запускается на реальном железе.
А теперь немного айтишного фансервиса!
Hidden text
![](https://habrastorage.org/getpro/habr/upload_files/249/48e/023/24948e02331b1c71a9ff364bebef9fe6.png)
Winamp устанавливается, запускается, но поскольку драйверов к звуковой карте нет, то выдает ошибку DirectSound output error .
![](https://habrastorage.org/getpro/habr/upload_files/2ba/3e6/1d7/2ba3e61d7a084d3a4e6bdc9c68622d34.png)
Everest реально работает и выдает информацию о железе. Aida кстати тоже работает.
![](https://habrastorage.org/getpro/habr/upload_files/a01/7cb/584/a017cb58487338c7764051c054efc333.png)
Та-да-а.. Но играть невозможно, так как экран перерисовывается раз в секунду.
![](https://habrastorage.org/getpro/habr/upload_files/220/b9f/e01/220b9fe01b29be123b2f26a09049331e.png)
Забавная программа Sequoia View. Наглядно показывает, каким файлами захламлен диск.
![](https://habrastorage.org/getpro/habr/upload_files/a6d/0c9/831/a6d0c98315db500703838d4c78aabc6b.png)
Mars Notebook. Классная программа для ведения заметок, Форматированный текст, картинки.
![](https://habrastorage.org/getpro/habr/upload_files/b83/b2a/045/b83b2a045a48f38ca5ca933e48886352.png)
Поделие, написанное на Rapid-Q Basic. Что-то вреде калькулятора, мышкой можно битики переключать.
Вообще все программы на Rapid-Q работают на всех Windows от 95 до 10. Как говорится - "От Ильича до Ильича без инфаркта и паралича".
![](https://habrastorage.org/getpro/habr/upload_files/37a/ee5/625/37aee56251bc19314f2b8dff9614843b.png)
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 будет немного похожа на рабочую систему.
nagayev
Мда, если ничего не путаю занимать должно столько же, но в секундах...
Интересно почему так медленно.
diakin Автор
Сам запуск среды Arduino IDE тоже длится минут 20 на железе... Возможно, проблема с медленной работой диска под ReactOS.