Espressif Systems выпускает предварительную версию Linux BSP для RISC-V микропроцессора ESP32-S31

Микропроцессор ESP32-S31 получает поддержку Linux от Espressif Systems. двухъядерный RISC-V микропроцессор ESP32-S31 был впервые представлен в марте, две отладочные платы ESP32-S31 появились в мае, а несколько недель назад было объявлено о начале массового производства.

Новый RISC-V чип оснащён MMU (блок управления памятью), что значительно упрощает работу с Linux, а отладочные платы также оснащены 16 МБ PSRAM, поэтому возможен минимальный образ Linux. Переходя от теории к практике, компания Espressif Systems выпустила предварительную версию ESP Linux BSP для разработчиков для ESP32-S31, а также ведётся работа над некоторыми портами Linux от сообщества (подробнее об этом в конце статьи).

ESP32-S31 Linux

Следует рассмотреть официальный ESP Linux BSP. Упомянутый репозиторий содержит только макет образа и инструменты упаковки, используемые в интеграции Buildroot для ESP32-S31, а основная часть проекта находится в esp-buildroot-external репозитории с загрузочным стеком NOR для ESP32-S31 и корневой файловой системой на основе Buildroot 2025.02, а также инструкции по сборке и прошивке образа. Можно также напрямую ознакомиться с исходным кодом форка ядра Linux 6.18 используемого в предварительной версии для разработчиков.

Поскольку платы в наличии нет, можно попробовать собрать образ Linux. Для этого потребуется свежая версия утилиты esptool. Например, esptool 4.7.0 недостаточно: ESP32-S31 требует esptool 5.3.0 или новее, поэтому она была обновлена следующим образом:

sudo apt purge esptool
sudo apt install pipx
pipx ensurepath
pipx install esptool

Проверим версию:

$ esptool version
esptool v5.3.1
5.3.1

Получите код, следуя инструкциям из репозитория Buildroot External Tree:

mkdir ~/edev/sandbox
git clone --branch 2025.02 --depth 1 https://gitlab.com/buildroot.org/buildroot.git esp-buildroot
git clone -b buildroot/v2025.02-esp32s31 https://github.com/espressif/esp-buildroot-external.git esp-buildroot-external

Обратите внимание, что клонировать репозиторий esp-linux-bsp не нужно, так как Buildroot автоматически загрузит его.

Настройте сборку:

make -C esp-buildroot  BR2_EXTERNAL=~/edev/sandbox/esp-buildroot-external  O=~/edev/sandbox/esp32-s31-linux   espressif_esp32s31_function_core_board_nor_defconfig

Убедитесь, что она завершается успешно и файл конфигурации записан:

make: Entering directory '/home/jaufranc/edev/sandbox/esp-buildroot'
  GEN     /home/jaufranc/edev/sandbox/esp32-s31-linux/Makefile
#
# configuration written to /home/jaufranc/edev/sandbox/esp32-s31-linux/.config
#
make: Leaving directory '/home/jaufranc/edev/sandbox/esp-buildroot'

Теперь можно собрать Linux для ESP32-S31:

ESP_ESPTOOL=$(which esptool)
make -C ~/edev/sandbox/esp-buildroot   O=~/edev/sandbox/esp32-s31-linux/   -j$(nproc)

Этот этап занял немало времени, более часа, поскольку система загружает и собирает пакеты. Тем не менее, теперь имеется готовый образ Linux для прошивки на плату.

...
gen_esp_flash_image: wrapping SPL -> spl_app.bin (load 0x2F040000)
esptool v5.3.1
Creating ESP32-S31 image...
Successfully created ESP32-S31 image.
gen_esp_flash_image: merging slots -> s31_full_flash.bin
esptool v5.3.1
SHA digest in image updated.
Wrote 0xd1f000 bytes to file 's31_full_flash.bin', ready to flash to offset 0x0.
gen_esp_flash_image: s31_full_flash.bin (13758464 bytes) ready in /home/jaufranc/edev/sandbox/esp32-s31-linux/images
make: Leaving directory '/home/jaufranc/edev/sandbox/esp-buildroot'

Содержимое каталога:

jaufranc@CNX-LAPTOP-5:~/edev/sandbox$ ls esp32-s31-linux/images/
esp32s31.dtb	fw_jump.elf	rootfs.tar	    u-boot.dtb
fw_dynamic.bin	rootfs.cpio	s31_full_flash.bin  u-boot.itb
fw_dynamic.elf	rootfs.cpio.gz	spl_app.bin	    u-boot-spl-dtb.bin
fw_jump.bin	rootfs.cramfs	u-boot.bin	    xipImage

Если имеется плата ESP32-S31, для прошивки образа ОС можно использовать следующую команду:

esptool --chip esp32s31 --port <serial-port> --baud 1152000 write-flash 0x0 <path-to-output-directory>/images/s31_full_flash.bin

The Linux console should be accessible at 115200 baud.

Обратите внимание: Linux BSP пока предназначен только для экспериментов, не рекомендуется для производства и поддерживает только ESP32-S31. Espressif также упоминает «нерегулярные обновления», возможные «критические изменения», «ограниченную поддержку функций», а ошибки будут исправляться «по мере возможности» в период Developer Preview. Также неясно, что уже реализовано, например, работает ли WiFi?

Помимо официального Linux BSP, как минимум два проекта сообщества занимаются портированием Linux на плату ESP32-S31-Korvo-1:

  • Работа GrieferPig — это порт MMU RV32 Linux 6.12, работающий нативно на микроконтроллере ESP32-S31. Rootfs Buildroot и перезагрузка стабильны, выключение питания не реализовано, а такие функции, как WiFi, двухрежимный Bluetooth и поддержка двухъядерного режима, являются экспериментальными. Полный статус и код можно посмотреть на GitHub .
  • Проект esp32-s31-linux от Marco переносит Linux 7.1 и OpenSBI 1.9 на плату ESP32-S31 Korvo-1. Большинство периферийных устройств, кроме LCD-панели, слота microSD, USB-host и WLAN-модема, пока не включены. Посмотрите проект на GitHub.
ESP32-S31 Linux 6.12
Порт Linux 6.12 для ESP32-S31 от GrieferPig

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments