vak: (Daemon)
Serge Vakulenko ([personal profile] vak) wrote2023-02-01 12:24 am

RP/M - годится название для операционки?

Мысль у меня бродит.

Ко мне периодически обращаются, спрашивают, как бы приспособить 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.
ufm: (Default)

[personal profile] ufm 2023-02-01 12:39 pm (UTC)(link)
Опубликован первый официальный выпуск операционной системы DiscoBSD, основанной на актуализированных исходных текстах Unix-системы 2.11BSD (RetroBSD) и предназначенной для работы на микроконтроллерах. Первый выпуск включает поддержку микроконтроллеров PIC32MX7 на базе архитектуры MIPS и STM32F4 на базе ARM Cortex-M4. Код проекта распространяется под лицензией BSD.

Из главных целей проекта называется обеспечение высокой переносимости ОС на устройства, имеющие ограничения по размеру памяти и не оснащённые MMU (Memory management unit). DiscoBSD может функционировать на системах со 128 КБ ОЗУ и 128 КБ Flash, при этом ядро загружается на Flash и использует около 32 КБ ОЗУ, остальные 96 КБ отдаются пользовательским приложениям. Корневая ФС размещается на SD-карте.

Для работы предлагается полноценное окружение, знакомое пользователям Unix-систем. Например, в состав входят такие утилиты, как sh, csh, grep, sort, uniq, find, uucp, file, kill, ls, cron, fdisk, mkfs, mount, vi, awk, cc, diff, getty, m4, more, sed, xargs, df, iostat, ps, su, tar и т.п.


Это я к вопросу "как-бы приспособить"
spamsink: (Default)

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