Módulo 0.1

Del servidor al microcontrolador

¿Por qué programar embedded es diferente?

Santi Scagliusi, PhD

Comenzar arrow_downward
cloud
Servidor
Lo que conoces
memory
Microcontrolador
El nuevo mundo
compare_arrows
Diferencias
Recursos limitados
bolt
Superpoderes
Control total

Lo que ya sabes

Vienes de un mundo donde programar es... cómodo.

code

Python, Java, C++

Lenguajes de alto nivel con abstracciones poderosas

dns

Memoria "infinita"

16 GB de RAM, swap si hace falta

speed

CPU ultrarrápida

GHz de velocidad, múltiples núcleos

developer_board

Sistema operativo

Linux/Windows maneja todo por ti

"

El ordenador te lo da todo hecho

school
Programación clásica
Tu zona de confort

El mundo embedded es diferente

Aquí no hay comodidades. Solo tu código y el hardware.

block

Sin OS

No hay sistema operativo (o solo un RTOS mínimo)

memory

RAM en KB

256 KB, no 16 GB. Cada byte importa.

speed

MHz, no GHz

64 MHz y un solo núcleo. La optimización es clave.

magic_exchange

Sin magia

No hay filesystem, malloc infinito, ni printf mágico

priority_high

"Cada byte cuenta, cada ciclo importa"

En sistemas embedded, la eficiencia es fundamental.

PC vs Microcontrolador

Dos mundos completamente diferentes

computer

PC / Servidor

Lo que conoces
CPU 3.5 GHz
8 núcleos
RAM 16 GB
16,384 MB
Storage 1 TB SSD
1,000,000 MB
Sistema Linux / Windows
check_circle El OS maneja todo
security Tu código corre en un "sandbox"

El OS te protege y te da recursos bajo demanda

memory

Nordic nRF52840

El nuevo mundo
CPU 64 MHz
1 núcleo (ARM Cortex-M4)
RAM 256 KB
65,536x menos que un PC
Flash 1 MB
1,000,000x menos que un SSD
Sistema Ninguno / Zephyr RTOS
warning Tu código ES el sistema
home Tu código ES el sistema

No hay nadie más. Tú controlas todo directamente.

PC
trending_flat
MCU

Comparador de Recursos

Haz clic en cada recurso para explorar las implicaciones reales de la diferencia.

Escala:
(logaritmica para ver ambos valores)
PC Servidor
nRF52840 MCU
3.5 GHz
speed
CPU
64 MHz
3500 MHz vs 64 MHz = 54.7x menos velocidad
Ademas, el PC tiene 8 nucleos mientras el MCU solo tiene 1. Cada instruccion debe ser eficiente. No puedes desperdiciar ciclos en abstracciones innecesarias.
16 GB
memory
RAM
256 KB
16 GB vs 256 KB = 62,500x menos memoria
No puedes cargar librerias pesadas, cada byte cuenta. Un solo objeto JSON de una API REST podria llenar toda la RAM. Aqui usas estructuras estaticas y buffers de tamano fijo.
1 TB SSD
storage
Almacen.
1 MB Flash
1 TB vs 1 MB = 1,000,000x menos almacenamiento
No hay filesystem. Tu programa entero, con todas sus librerias, debe caber en 1 MB. Una foto de movil ya ocupa mas que eso. El binario de Zephyr RTOS + BLE stack + tu app: todo en ese espacio.
150 W
bolt
Consumo
16.5 mW
150 W vs 5 mA x 3.3 V = 16.5 mW -- 9,000x menos consumo
Un MCU puede funcionar anos con una bateria de boton CR2032 (230 mAh). En modo deep sleep, el nRF52840 baja a 1.5 uA. Un PC necesita estar enchufado a la red electrica.
Ethernet / WiFi
wifi
Red
BLE 5.0
1 Gbps Ethernet vs 2 Mbps BLE -- 500x menos ancho de banda
No hay import requests. BLE envia pequenos paquetes (hasta 251 bytes por PDU). Cada transmision consume energia, asi que optimizas que, cuando y cuanto envias. No hay HTTP, no hay TCP/IP completo.
Linux
terminal
S.O.
Zephyr RTOS
Linux kernel: ~35M lineas de codigo vs Zephyr: ~2M
Linux te da filesystem, networking, multitarea completa, drivers para todo. Zephyr es un RTOS minimalista: hilos, semaforos, colas. No hay malloc infinito, no hay printf a terminal. Tu codigo ES el sistema.
~$500
payments
Coste
~$5
$500 vs $5 = 100x menos coste por unidad
A $5 por chip, puedes poner un MCU en cada dispositivo: cada sensor, cada wearable, cada nodo IoT. Si fabricas 10,000 unidades, la diferencia es $4,950,000. Por eso la eficiencia del software importa tanto.

¿Qué significa esto para ti?

Muchas cosas que dabas por sentado... ya no funcionan.

error

No puedes simplemente print("Hello")

¿A dónde va ese texto? No hay terminal, no hay pantalla conectada por defecto. Necesitas configurar UART, RTT, o algún otro mecanismo.

print("Hello")
// ¿A dónde va esto?
error

No hay import requests

El hardware no tiene WiFi "mágico". Si quieres red, tienes que configurar el radio BLE, el stack de protocolo, y manejar cada paquete.

import requests
// ModuleNotFoundError

Más limitaciones importantes

El código que escribes afecta directamente al sistema.

warning

Un bucle infinito no "lagea" - congela TODO

En un PC, el OS puede matar tu proceso. Aquí, tu código ES todo el sistema. Un while(true) mal puesto y el dispositivo se cuelga para siempre.

while(true) {
  // Sistema congelado
}
memory

malloc() puede fallar fácilmente

Con solo 256 KB de RAM total, pedir memoria dinámica es peligroso. En embedded, preferimos memoria estática y saber exactamente cuánto usamos.

char *buf = malloc(1024);
// Con 256KB... cuidado

Pero ganas superpoderes

Con limitaciones vienen habilidades únicas que ningún programador de servidor tiene.

precision_manufacturing

Control total del hardware

Puedes hacer que un LED parpadee en exactamente 1 microsegundo. Ni más, ni menos. Precisión absoluta.

battery_charging_full

Eficiencia energética extrema

Tu dispositivo puede funcionar meses con una pila de botón. mA vs Watts - órdenes de magnitud de diferencia.

sensors

Interacción con el mundo físico

Tu código no procesa datos en la nube - controla motores, lee sensores, enciende luces. Tocas la realidad.

timer

Tiempo real garantizado

Puedes garantizar que una tarea se ejecute cada 10ms exactos. Sin garbage collector, sin scheduler impredecible.

PC vs Microcontrolador

La diferencia de consumo es de varios órdenes de magnitud.

150W
Consumo típico de un PC
Requiere enchufe
compare_arrows
5mA
nRF52840 activo
CR2032
Funciona meses con pila

"Tu código controla directamente el hardware"

¿Por qué elegimos Nordic nRF?

De todos los microcontroladores disponibles, Nordic destaca por varias razones.

auto_awesome

Moderno y potente

ARM Cortex-M4 con FPU, ideal para aprender arquitectura moderna

bluetooth

Bluetooth LE integrado

Radio BLE de bajo consumo listo para usar, perfecto para IoT

devices_wearables

Usado en productos reales

Wearables, IoT, dispositivos médicos - tecnología de industria

build

Excelente tooling

nRF Connect SDK, VS Code extension, documentación completa

work

Estándar de industria

Habilidades directamente transferibles al mercado laboral

Nordic
nRF52840
QIAA
check_circle

Lo que aprendiste hoy

Concepto 1

Embedded es diferente a PC

Menos recursos, más control. No hay OS que te proteja.

Concepto 2

Cada byte cuenta

256 KB de RAM. No puedes desperdiciar. Piensa antes de programar.

Concepto 3

Ganas superpoderes

Control total, tiempo real, bajo consumo, acceso directo al hardware.

Siguiente: Anatomía de un Microcontrolador

Ahora que entiendes las diferencias, vamos a explorar qué hay dentro del nRF52840. CPU, memoria, periféricos, y cómo se comunican entre sí.

Continuar al Módulo 0.2 arrow_forward