![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Мысль у меня бродит.
Ко мне периодически обращаются, спрашивают, как бы приспособить 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 к компьютеру, открываете окошко доступа к консоли (виртуальному или физическому серийному порту) и видите знакомое приглашение:
Система должна получиться более-менее переносимой. На этой платке свет клином не сошёлся, да и на микроконтроллере тоже. Два основных требования к процессору: размер RAM хотя бы в несколько десятков килобайт, и Flash-память, прямо отображаемая на адресное пространство процессора.
Как всё это будет фунциклировать - уточню позже, а пока перечислю основные компоненты:
Ко мне периодически обращаются, спрашивают, как бы приспособить 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 к компьютеру, открываете окошко доступа к консоли (виртуальному или физическому серийному порту) и видите знакомое приглашение:
Диск С: находится в Flash-памяти микроконтроллера. Дальше стандартными командами DIR, CD и прочими бродите по диску и запускаете с него нужные программы. На внешней SD-карточке лежит диск A:. К нему тоже можно обращаться, переписывать файлы туда-сюда, вызывать программы. Активировать и деактивировать загружаемые драйвера. Создавать и запускать BAT-файлы, то есть скрипты. Редактировать и компилировать программы из исходников. Скачивать файлы из интернета, или наоборот, посылать в интернет.c:/> _
Система должна получиться более-менее переносимой. На этой платке свет клином не сошёлся, да и на микроконтроллере тоже. Два основных требования к процессору: размер RAM хотя бы в несколько десятков килобайт, и Flash-память, прямо отображаемая на адресное пространство процессора.
Как всё это будет фунциклировать - уточню позже, а пока перечислю основные компоненты:
- Командная оболочка, аналог /bin/sh в юниксе или cmd.exe в Windows.
- Файловая система exFAT.
- Набор системных вызовов, видимо подобие Posix.
- Динамический загрузчик, для связывания адресов в момент запуска программ.
- Механизм загружаемых драйверов.
no subject
Date: 2023-02-07 08:57 (UTC)Про него в первом посте и писал, в общем-то.
Насчет второго, не знаю, полезная инфа или нет, но было вот такое: https://ru.wikipedia.org/wiki/UMSDOS
Насколько возможно отображать Юникс filesystem на FAT? Это вопрос.
А что касается третьего, наверное, есть и другая крайность, не стандартизированный доступ, порождает не очень хорошую переносимость. Ну к примеру, демосценеров, их собственно можно понять, скорость абсолютно важна, задействование напрямую специфических особенностей железа, это да. Насчет прямого доступа к USART,I2C,... Не знаю. Библиотеки всех спасут! Ну если народу зайдет, то и ладно, на здоровье!
Я когда в немного в истории железа копался, часто натыкался, на непростую генеологическую линию аэсок, много слухов ходит, якобы CP/M это есть как бы упрощенная RT-11, созданная Килдалом, а MSDOS это такоЕ некое творение Франкенштейна, все что смогли заимствовать сначала с CP/M, а потом Xenix, по частям.
А назвать аэску можно Microcontroller Control Program(MCP), по приколу, это во-первых напоминает CP/M, буквы переставлены немного, а во-вторых напоминает главпрограмму из фильма TRON. То же есть кому-то чо вспомнить.