系统架构
Linux 在 ESP32-S31 的两个高性能核上运行,并使用 Sv32 虚拟内存。项目提供的配置从映射的 Flash 执行内核代码,将 16 MiB PSRAM 用于可写数据和应用。
主要组件
组件 |
作用 |
|---|---|
ROM 和 SPL |
启动芯片并初始化内存 |
OpenSBI |
为 Linux 和 U-Boot 提供机器模式服务 |
U-Boot |
携带设备树启动 Linux 镜像 |
Linux |
运行应用,管理处理器、内存和设备 |
Buildroot |
构建根文件系统和命令行工具 |
无线模块与载荷 |
提供 Wi-Fi 和 Bluetooth 运行时 |
LP 固件 |
在低功耗核上执行邮箱和唤醒任务 |
启动依次经过 ROM、SPL、OpenSBI 和 U-Boot,随后 Linux 启动 BusyBox 用户空间。启动流程说明地址交接与启动服务。
内存与文件系统
就地执行(XIP)将内核代码保留在映射的 Flash 中,让 PSRAM 用于可写数据与应用。内部 SRAM 存放固件数据、无线分配区和 DMA 描述符。具体区域与归属见内存映射。
根文件系统使用 SquashFS 镜像及以 JFFS2 为后端的可写覆盖层。重启后保留的内容、软件包管理文件的替换和临时存储见配置。
外设
应用通过 GPIO 字符设备、I2C、SPI、ALSA 和套接字等 Linux 接口访问硬件。s31-overlay 启用可选外设并选择其引脚。统一的完整构建配置保留原生外设驱动,外接器件仍需对应驱动和接线。
无线与低功耗核
Wi-Fi 和 Bluetooth 共享 Linux 无线模块与载荷。使用公共工作线程时,该线程运行在 HP 核 0;仅 Wi-Fi 的 SoftMAC 模式使用原生任务服务。前端接收 NAPI 和 I/O 定向到 HP 核 1,核 1 不在线时回退到 HP 核 0。载荷兼容任务保留其请求的亲和性。中断与 SMP 参考解释这些执行位置及 IRQ 路由边界。Bluetooth 通常通过 /dev/s31-hci 使用 BTstack。
LP 固件由 Linux remoteproc 加载,处理邮箱、定时器和 GPIO 唤醒请求。它们各自的接口见无线参考及 LP 参考。