5.2 KiB
5.2 KiB
Схема соединений AtlasOS v2.0
Компоненты
| Компонент | Кол-во | Назначение |
|---|---|---|
| MicroLua (IOC) | 1 | I/O Controller — терминал |
| MicroLua (CMC) | 1 | Command Controller — shell |
| MicroLua (MMC) | 1 | Memory/FS Controller — ФС |
| Terminal | 1 | текстовый дисплей |
| Memory | 1 | хранилище 8192 символа |
Полная схема
Терминал (Keyboard/Button) Терминал (Display)
│ text ▲
▼ │ text
┌──────────┐ ┌──────────┐ │ clear
│ │─────────▶ │──────┤ color
│ IOC │ IN|cmd │ CMC │ │
│ │◀────────│ │◀─────┤
└──────────┘ OUT|text│ │ 1 │
▲ clear=1 │ │◀─────┤
│ R,G,B └────▲────┘ R,G,B│
│ │ │
│ LS|path │
│ READ|... │
│ │ │
│ ┌────▼────┐ │
│ │ │ │
│ │ MMC │ │
│ │ │ │
│ └──┬──┬───┘ │
│ │ │ │
│ data │ │ write(1) │
│ ▼ ▼ │
│ ┌────────┐ │
│ │ Memory │ │
│ │ 8192 │ │
│ └───┬────┘ │
│ │ │
└──────────────────┴────────────┘
Соединения проводом
IOC ↔ Терминал
| Пин IOC | → / ← | Пин Terminal | Назначение |
|---|---|---|---|
| IOC.out[1] | → | Display.in (text) | текст на экран |
| IOC.out[2] | → | Display.in (clear) | очистка (1) |
| IOC.out[3] | → | Display.in (color) | цвет R,G,B |
| IOC.in[1] | ← | Keyboard.out (text) | ввод пользователя |
IOC ↔ CMC
| Пин IOC | → / ← | Пин CMC | Назначение |
|---|---|---|---|
| IOC.out[4] | → | CMC.in[1] | команда `IN |
| CMC.out[1] | → | IOC.in[2] | текст `OUT |
| CMC.out[2] | → | IOC.in[3] | очистка (1) |
| CMC.out[3] | → | IOC.in[4] | цвет R,G,B |
CMC ↔ MMC
| Пин CMC | → / ← | Пин MMC | Назначение |
|---|---|---|---|
| CMC.out[4] | → | MMC.in[1] | запрос `OP |
| MMC.out[1] | → | CMC.in[2] | ответ `OK |
MMC ↔ Memory
| Пин MMC | → / ← | Пин Memory | Назначение |
|---|---|---|---|
| MMC.out[5] | → | Memory.in[1] | данные для записи |
| MMC.out[6] | → | Memory.in[2] | сигнал записи (1) |
| Memory.out[1] | → | MMC.in[3] | чтение данных |
Протокол шины
IOC → CMC (CMD)
IN|команда
CMC → IOC (CMD)
OUT|текст — вывести текст
1 на out[2] — очистить экран
R,G,B на out[3] — установить цвет
CMC → MMC (MEM)
STAT|путь — метаданные
READ|путь|смещение|длина — чтение файла
LS|путь — список каталога
CHDIR|путь — смена директории (проверка)
WRITE|путь|смещение|данные — запись (пока EROFS)
MMC → CMC (MEM)
OK|seq|данные
ERR|seq|код_ошибки
Коды ошибок: ENOENT, EACCES, ENOTDIR, EISDIR, EROFS, EINVAL
Последовательность запуска
- Загрузить код MMC.lua в контроллер MMC
- Загрузить код CMC.lua в контроллер CMC
- Загрузить код IOC.lua в контроллер IOC
- Соединить провода по схеме выше
- При первом запуске MMC инициализирует пустую ФС и запишет в Memory
- Подать сигнал на Terminal — появится приглашение
Пример сессии
> ls
home
etc
> ls /home/captain
readme.txt
> cat /home/captain/readme.txt
Welcome to AtlasOS v2.0!
> cd /home/captain
/home/captain
> status
AtlasOS v2.0 | User: root(0) | CWD: /home/captain
> color 0 255 128
Color set to 0,255,128
> help
AtlasOS v2.0 commands:
help Show help
echo Echo text
clear Clear screen
color Set color R G B
status System status
ls List directory [path]
cat Show file content
cd Change directory [path]
stat Show file metadata