RISC-V
| Чип | Класс | Ядро | MMU | Linux | RTOS | Типичное применение |
|---|---|---|---|---|---|---|
| CH32V003 | MCU | RV32EC | Нет | Нет | Да | Простая автоматика |
| CH32V203 | MCU | RV32IMAC | Нет | Нет | Да | Промышленная электроника |
| GD32VF103 | MCU | RV32IMAC | Нет | Нет | Да | Замена STM32F103 |
| Kendryte K210 | SoC | 2× RV64GC | Нет | Нет* | Да | AI Vision, Edge AI |
| Allwinner D1 | SoC | RV64GC | Да | Linux | Да | Linux SBC |
| SpacemiT K1 | SoC | 8× RV64GC | Да | Linux | Да | Мини-ПК |
| StarFive JH7100 | SoC | 2× RV64GC | Да | Linux | Да | Разработка Linux |
| StarFive JH7110 | SoC | 4× RV64GC | Да | Linux | Да | VisionFive 2 |
| T-Head TH1520 | SoC | 4× RV64GC | Да | Linux | Да | Ноутбуки RISC-V |
| ESWIN EIC7700 | SoC | 4× RV64GC | Да | Linux | Да | AI и рабочие станции |
| Sophgo SG2042 | Server CPU | 64× RV64GC | Да | Linux | Да | Серверы |
Если у RISC-V чипа есть MMU и внешняя DDR-память, то обычно можно запускать полноценный Linux.
Если MMU отсутствует, то используются:
- FreeRTOS
- Zephyr
- RT-Thread
- ThreadX
- Собственные прошивки без ОС
Почему Linux обычно требует MMU?
MMU (Memory Management Unit) — это аппаратный блок процессора, который преобразует виртуальные адреса памяти в физические и обеспечивает защиту памяти между процессами.
Именно благодаря MMU в Linux каждый процесс имеет собственное адресное пространство. Если программа зависнет или попытается обратиться к чужой памяти, ядро может её остановить, не затрагивая остальные процессы.
В Linux браузер, SSH-сервер и база данных работают в разных областях памяти. Если браузер аварийно завершится, система продолжит работать.
Что дает MMU?
- Виртуальную память.
- Защиту процессов друг от друга.
- Подкачку памяти (swap).
- Запуск множества независимых приложений.
- Современные механизмы безопасности.
- Поддержку полноценного Linux.
Что происходит без MMU?
Если MMU отсутствует, все программы фактически работают в одном общем адресном пространстве. Любая ошибка может повредить память другой задачи или самого ядра.
Микроконтроллер CH32V203 имеет 64 КБ ОЗУ и не содержит MMU. Если программа случайно запишет данные по неверному адресу, она может полностью вывести устройство из строя до перезагрузки.
Можно ли запустить Linux без MMU?
Да, существует специальная версия Linux под названием uClinux. Она предназначена для процессоров без MMU.
| Возможность | Linux с MMU | uClinux без MMU |
|---|---|---|
| Полноценные процессы | Да | Ограничено |
| Защита памяти | Да | Нет |
| Виртуальная память | Да | Нет |
| Современные дистрибутивы | Да | Нет |
| Docker | Да | Нет |
| Ubuntu/Debian | Да | Нет |
Что используют вместо Linux без MMU?
На большинстве современных микроконтроллеров без MMU применяются операционные системы реального времени (RTOS):
- FreeRTOS
- Zephyr
- RT-Thread
- ThreadX
- Azure RTOS
- Собственные прошивки без ОС
Примеры RISC-V устройств
| Чип | MMU | Linux |
|---|---|---|
| CH32V003 | Нет | Нет |
| CH32V203 | Нет | Нет |
| GD32VF103 | Нет | Нет |
| Kendryte K210 | Нет | Только специальные сборки uClinux |
| Allwinner D1 | Да | Полноценный Linux |
| StarFive JH7110 | Да | Ubuntu, Debian, Fedora |
| Sophgo SG2042 | Да | Полноценный Linux |
✔ Есть MMU → можно запускать полноценный Linux.
✔ Нет MMU → обычно используют RTOS или uClinux.
✔ Большинство микроконтроллеров RISC-V работают без MMU.
✔ Большинство RISC-V компьютеров и серверных процессоров имеют MMU и запускают обычный Linux.
