Files
BarotraumaLuaProjects/atlas_os/docs/wiring.md
T
2026-06-14 02:06:00 +03:00

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

Последовательность запуска

  1. Загрузить код MMC.lua в контроллер MMC
  2. Загрузить код CMC.lua в контроллер CMC
  3. Загрузить код IOC.lua в контроллер IOC
  4. Соединить провода по схеме выше
  5. При первом запуске MMC инициализирует пустую ФС и запишет в Memory
  6. Подать сигнал на 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