Linux 5.0 запустили на процессоре ESP32 с 8 МБ RAM

0elqhbtm0tay4qz44-3k-u3uvgg.jpeg
ESP32 Espressif ESP-WROOM-32 Dev Board

ESP32 — серия бюджетных микроконтроллеров с низким энергопотреблением. Используются в различных устройствах Интернета вещей. Представляют собой SoC с интегрированными контроллерами Wi-Fi и Bluetooth и антеннами.

Процессор ESP32 поддерживает до 8 МБ RAM, что соответствует минимальным требованиям для запуска Linux. В этом мало практической пользы, но почему бы не проверить теорию на практике.
Китайский разработчик Хуэй Линь сумел успешно загрузить Linux 5.0 на процессоре ESP32 с 8 МБ RAM. Подробностями он поделился в треде Reddit и на форуме WhyCan.

Лог загрузчика на скриншоте:

image-loader.svg

В данном случае Linux 5.0.0 загружается на плате с двухъядерным процессором Xtensa (ESP32-D0WD) производства китайской компании Tensilica, с 8 МБ PSRAM и 2 МБ флэш-памяти SPI.

Процесс загрузки немного запутанный. Сначала загрузчик загружает Juice VM (маленькая виртуальная машина RISC-V), которая запускает интерфейс OpenSBI (RISC-V Open Source Supervisor Binary Interface). Через него загружается ядро Linux и небольшая файловая система.

Все файлы опубликованы в репозитории. Общий размер образа около 1,5 МБ, что почти полностью заполняет флэш-память объемом 2 МБ на плате. Интерфейсы SPI и UART поддерживаются, но загрузка в консоль пока не проходит, судя по всему.

Juice VM — это виртуальная машина RISC-V, которая умеет загружать FreeRTOS, RT-Thread и другие операционные системы. В данном случае её портировали на ESP-IDF с поддержкой ESP32, ESP32-S2 и ESP32-C3.

(видео воспроизводится с ускорением 30х)

Нужно отметить, что Linux не первый раз запускают на этих микроконтроллерах. В прошлом году умельцы сумели загрузить старую версию Ubuntu 9.04 на ESP32.

Если вспомнить, то в начале 90-х Linux запускали даже на настольных компьютерах 386DX/40 с 4 МБ RAM, не говоря уже о мощных рабочих станциях 486DX2/66.

А вообще, Linux можно запустить даже на 8-битном микроконтроллере, хотя на нём нужно подождать примерно два часа до появления строки bash, и ещё четыре часа до логина в Ubuntu.

Здесь тактовая частота процессора около 6,5 кГц.

© Habrahabr.ru