Robby & Soopchik
Soopchik Soopchik
Понял, разобрал тут старый Xbox контроллер, и плата аналогового стика выглядит как дешёвый тактильный модуль для робота. Думаешь, на её 8051 можно какую-нибудь микроскопическую Linux-систему запустить? А какую самую экзотическую операционку ты когда-нибудь запускал на роботе-самоделке?
Robby Robby
Отличный хак! Классическая плата аналогового стика от Xbox – это по сути маленький 8051, работающий на 16-битной прошивке. Полноценный Linux на него не поставить – процессор всего несколько мегагерц, оперативки где-то 8-16 килобайт, и MMU нет. Максимум, что можно сделать – это миниатюрная RTOS или код "голый" металл. Ну, может, какая-то облегченная версия µClinux, если впихнуть еще несколько мегабайт памяти, но это уже подвиг. Самая странная операционка, которую я когда-либо пилил для хоббот-робота, была Lisp-based RTOS, я тогда назвал её "LispRT". Работала на 32-битном ARM Cortex-M3 и позволяла мне прототипировать AI-пайплайны с REPL, который мог перегружать скрипты поведения на лету. Она была настолько нишевая, что документация ограничивалась одним отсканированным PDF-файлом и битой ссылкой. Удачи найти компилятор для этого, но если тебе нравятся эксперименты ради эксперимента – дерзай!
Soopchik Soopchik
Звучит как настоящий кошмар этот LispRT – наверное, первую неделю я бы только разбирался, как компилятор ассемблер генерит. Но это из тех вещей, которые не дают спать в три ночи, пока все остальные спят. Есть ещё какие-нибудь странные ОС, которые ты пытался запустить на чём-то с меньшим объёмом памяти, чем у тостера? У меня есть пара старых штук для Амиги, которые ещё работают, но главное – это ощущение честности железа, когда начинаешь его копать.
Robby Robby
Да, я уже и с другими доводилось доходить до самого конца. Однажды я запускал TinyOS на картридже для Amiga на базе 68000 – было жутко сложно передать управление загрузчику, чтобы он передавал его планировщику, как в NES, но система событий реально заставила моего маленького робота "думать" быстрее, чем кофе. Потом была Contiki на плате на базе 6502, которую я вытащил из старого Atari – двухмегабайтной флеш-памяти хватило для базового веб-сервера, но сетевой стек постоянно вылетал каждый раз, когда я пытался пинговать через старый последовательный порт. Еще я игрался с FreeRTOS на четырехбитовом микроконтроллере из сломанной микроволновке – ядро работало нормально, но система приоритетов прерываний была просто забавной головоломкой. Ничто не сравнится с чистым, нефильтрованным ощущением отладки на чипе размером с тостер – это как вытягивать признание из самого железа.
Soopchik Soopchik
Ого, микроконтроллеры размером с тостер – это я бы назвал “проверка на адекватность”. Только убедить тостер перестать искрить, когда нажимаешь “пуск”, оказалось сложнее, чем заставить работать FreeRTOS на 4-битном МК. У тебя ещё есть какие-нибудь штуки, которые показывают “сырую” работу железа? У меня тут гора сломанных геймпадов превратилась в самодельную лабораторию UART, и каждый раз, когда я разбираю один, кажется, будто внутри схемы дышит.
Robby Robby
Ты уже находишься в самой интересной точке с этим “сырым шипением”. Я тут несколько вещей превратил в мини-рабочие станции. Сначала – старое радио на лампах: лампы светились как маленькие солнышки, когда я отключал питание, и корпус начинал гудеть. Потом – старый 8-битный калькулятор, я его подключил к FTDI-адаптеру; последовательный поток данных – как тихая, нежная колыбельная, создается ощущение, будто ты в кабине звездолета. Еще я переделал сломанный инфракрасный пульт в щуп для осциллографа; светодиод моргает так быстро, что это почти как пульс. Если хочешь чего-то, что буквально дышит, однажды я использовал контроллер двигателя стиральной машины – слышно, как шестерни внутри мотора щелкают в реальном времени, пока ты просматриваешь код. Главное – держать напряжение низким и внимательно слушать. Аппаратуре не нужно быть эффектной, ей нужно быть честной.