vak: (Daemon)
[personal profile] vak
Мысль у меня бродит.

Ко мне периодически обращаются, спрашивают, как бы приспособить RetroBSD для нынешних микроконтроллеров. Я сам давно задался вопросом, только маленько ширшее. Ясно, что идея юникса не годится (потом объясню), но вероятно её можно как-то изменить, приладить к реалиям современных чипов. И натолкнул меня на мысль тот самый компьютер Агонь Лайт, точнее его операционка MOS. Глянул я исходники - фактически народ удачно сваял с нуля подобие CP/M. Нашёл я и клон CP/M, перепёртый кем-то на Си для прикола (x86_cpm_22_0_1.zip). Внезапно осознал, что это оно самое и есть. Ну то есть почти. Реализация бог с ней, а основополагающая идея правильная. Однозадачная операционка по типу CP/M или MS-DOS с поддержкой файловой системы. Но без исторических кривостей и странностей. Ровно то, что по сути хотят сторонники RetroBSD. Пусть всего одна задача, зато с файловой системой, динамическим загрузчиком, загружаемыми драйверами, подключением к сети (отдельный интересный вопрос).

Для конкретики покажу платку, которую я подобрал для такой разработки.



Плата называется Sparkfun Thing Plus RP2040. Тот же процессор, что и Raspberry Pico: два ядра Cortex M0+. Пока задействуем одно ядро, а второе позже пригодится для стека TCP/IP. Имеем 256 килобайт оперативной памяти, 128 мегабайт Flash-памяти и гнездо для внешней SD-карточки.

Представьте, что вы подключаете платку через USB к компьютеру, открываете окошко доступа к консоли (виртуальному или физическому серийному порту) и видите знакомое приглашение:
c:/> _
Диск С: находится в Flash-памяти микроконтроллера. Дальше стандартными командами DIR, CD и прочими бродите по диску и запускаете с него нужные программы. На внешней SD-карточке лежит диск A:. К нему тоже можно обращаться, переписывать файлы туда-сюда, вызывать программы. Активировать и деактивировать загружаемые драйвера. Создавать и запускать BAT-файлы, то есть скрипты. Редактировать и компилировать программы из исходников. Скачивать файлы из интернета, или наоборот, посылать в интернет.

Система должна получиться более-менее переносимой. На этой платке свет клином не сошёлся, да и на микроконтроллере тоже. Два основных требования к процессору: размер RAM хотя бы в несколько десятков килобайт, и Flash-память, прямо отображаемая на адресное пространство процессора.

Как всё это будет фунциклировать - уточню позже, а пока перечислю основные компоненты:
  • Командная оболочка, аналог /bin/sh в юниксе или cmd.exe в Windows.
  • Файловая система exFAT.
  • Набор системных вызовов, видимо подобие Posix.
  • Динамический загрузчик, для связывания адресов в момент запуска программ.
  • Механизм загружаемых драйверов.
Самый трудный вопрос: название. Пока лучшее, что пришло в голову - RP/M.

Date: 2023-02-01 18:38 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Крутая тема перед запуском процесса данные шелла (всякую там command line history и прочие красивости) сжимать, чтобы больше места процессу оставалось, а по окончании - разжимать.