que-es-soc-y-som

Qué es un SoC y un SoM

Sí vamos a adentrarnos en el mundo del ESP32, una de las primeras cosas que tenemos que hablar es qué es un SoC, un SoM, una placa de desarrollo, y las diferencias entre ellos.

Esto es debido a que luego ves aún montón de gente liarse diciendo que si tiene una Wemos ESP32-S2, un ESP32-D0WD-V3, y que si este otro tiene un “no sé qué”.

Además, si tenemos en cuenta que las designaciones de las familias de Espressif tampoco es que ayuden mucho (ESP32-C2, ESP32-S2, ESP32-S3). A más a más, la publicidad de los vendedores, especial de los vendedores chinos, no ayuda en aclarar.

Así que vamos a ir por partes y vamos a dedicarle una entrada primero a ver qué es eso de un CPU, un SoC, SoM, y una placa de desarrollo.

Qué es un SoC y qué es un SoM

Vayamos por el principio. Más o menos todos sabemos lo que es una CPU (Unidad Central de Procesamiento). Es la parte que realiza los cálculos y, por así decirlo, el cerebro de una máquina.

esp32-que-es-soc-som

Ahora un System on Chip (SOC) es un único circuito integrado (un chip) que combina varios componentes esenciales de un sistema electrónico en un único integrado. Esto suele incluir uno o más CPU, y añade otras cosas como (opcionalmente) memoria, almacenamiento, GPU, controladores E/S, entre otros.

Por su parte, un SoM (System on Module) es una placa electrónica (una PCB), que también combina componentes esenciales. Por ejemplo, suele incluir un SoC, y otras cosas (opcionales) como almacenamiento, antenas, dispositivos E/S, entre otros.

Finalmente, tenemos las placas de desarrollo, que es el dispositivo final que te compras tú. Generalmente añaden cosas como los pines, alimentación, antenas… Aquí podemos tener placas que montan un SoC directamente, o placas que montan un SoM.

En general, el orden de agregación es:

  • CPU
  • SoC
  • SoM
  • Placa desarrollo

Veámoslo en el caso del ESP32

A estas alturas me imagino que estarás pensando qué narices me está contando este tío sobre Soc y SoM. Bueno, vamos a verlo con un ejemplo concreto, viendo cómo funciona aplicamos todo esto cuando hablamos de un ESP32 y sus variantes.

El ESP32, tal y como solemos referirnos a él, es un SoC. Os dejo un enlace con la lista de modelos de ESP32 disponibles Chipsets | Espressif Systems. No son tantos, hay 5 modelos, ESP32, el ESP32-S2, el ESP32-S3, ESP32-C, ESP32-H, y ya.

Cada uno de estos SoC tiene una serie de características distinta. Montan un CPU distinto (Risc-V, Dual Core, Single Core…), admiten una cantidad de memoria distinta. Para liarlo un poco más, dentro de cada SoC hay variantes. Aunque no os asustéis demasiado, dentro de cada uno de los 5 SoC las variantes no modifican las características básicas. El tamaño y poca cosa más.

Ahora, estos SoC se montan en módulos qué ofrece el propio fabricante. ¿Cuantos hay? ¡Puf, la tira! Solo el ESP32 “normal” (no el S2, S3) tiene más de 20 módulos disponibles. Aquí tenemos una lista de los módulos disponibles SoM ESP32 Wi-Fi & Bluetooth Modules I Espressif

Tanto SoC como SoM son productos industriales. Están pensados para que los compres industrialmente (a miles) y los integres en tu producto final. Por ejemplo, en un interruptor inteligente.

Finalmente tenemos las placas de desarrollo que montan un SoM. Sirven para prototipado, o para nosotros jugar en casa 😉. Ahí tenéis una lista con las placas de Development Boards | Espressif Systems

Lógicamente hay aún más que SoC. Cada una con los distintos módulos, podemos elegir un factor de forma, ponerle una pantalla, un conector USB, o lo que sea.

Además, a diferencia de los SoC e incluso de los SoM, que los tiene que hacer el fabricante, en el caso de las placas de desarrollo cualquier fabricante puede hacerse la suya propia. Es decir, que os podéis encontrar en Amazon modelos de placas de desarrollo, que se llama como quiera el fabricante.

Veamos un ejemplo

Lo vamos a ver más fácil si hacemos un ejemplo. Imagina que tienes una placa, del fabricante que sea, que monta un módulo (un SoM) ESP32-WROOM-32E. Me voy a mirar los módulos veo que información puedo sacar de este módulo:

  • SoM: ESP32-WROOM-32E me dice que es compatible con memoria 4/8/16MB Flash, y que no tiene PSRAM

espressif-som

Con el SoM puedo obtener algunas de las características, incluido que SoC monta. En este caso sería un ESP32-D0WD-V3, que es una variante de la familia ESP32. Con el nombre del SoC ya tengo el resto de características, incluido el CPU y la memoria.

  • SoC: ESP32-D0WD-V3 me dice que es CPU Xtensa dual-core, con 520KB SRAM, 448KB ROM, 16KB RTC SRAM
  • Cpu: Xtensa single-/dual-core 32-bit LX6 microprocessor @240Mhz

espressif-soc

Con todo esto, ya tendría toda la información y características de mi dispositivo. Es un SoM ESP32-WROOM-32E, que monta un SoC ESP32-D0WD-V3, que es una variante del ESP32 (original, de 2016).

Por otro lado, con la información del SoM también puedo encontrar la placa oficial que monte este SoM. En este caso sería una ESP32-DevKitC espressif-dev-board

  • Board: ESP32-DevKitC en esa placa de desarrollo en concreto, le han puesto 4MB Flash

Pero por supuesto, la placa que tengáis vosotros puede tener otras características técnicas. Por ejemplo, podría tener otro pinout, otra cantidad de memoria Flash, o PSRAM.