DÍA 329 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

El Concepto del "Design Freeze" (Congelamiento)

En ingeniería, la perfección es enemiga de la producción. Siempre habrá un sensor más moderno que integrar o un cable que acomodar mejor. El Hardware Freeze es el decreto oficial que establece: "A partir de este segundo, la lista de materiales (BOM), los esquemáticos (Gerbers) y el código físico están prohibidos de modificar". Cualquier idea brillante que tengas a partir de hoy, se guardará para la Versión 2.0 el próximo año. Sin congelamiento, la fábrica no puede comprar las 10,000 piezas (Día 317) porque siempre teme que cambies de opinión.

Del Release Candidate (RC) al General Availability (GA)

El código que probaste en la gasera era un Release Candidate (RC). Tenía activados los mensajes de depuración por el puerto Serie (printf) para que pudieras leer la telemetría con tu laptop. Para la producción comercial General Availability (GA), dejar esos puertos abiertos es un regalo para los piratas informáticos (Reverse Engineering). Debemos compilar el Golden Master: la versión definitiva binaria donde se apagan los printf, se aceleran los relojes al máximo y se asegura el perro guardián (Watchdog).

APPROVED FOR MASS PRODUCTION CICLO DE VIDA DEL PRODUCTO: DE ALPHA A GENERAL AVAILABILITY (GA) v0.1 ALPHA Pruebas en Protoboard v0.5 EVT Primeras PCBs Pruebas de Laboratorio v0.9 BETA (RC) Instalación SAT Debuggers ON 10 Unidades FREEZE v1.0 GA Producción Masiva Golden Master 10,000+ Unidades

⚙️ Procedimiento Práctico: El Hardening del Golden Master

Paso 1: Mudez Criptográfica (Deshabilitar UART Debug).
Durante meses, llenaste tu código de printf("Válvula abierta");. Si dejas esto en producción, un pirata informático puede conectar un cable USB-TTL al pin PA2, leer tus logs en tiempo real y aplicar ingeniería inversa a tu Máquina de Estados. Debemos asfixiar la salida de la consola serial condicionalmente mediante macros del compilador.

Paso 2: Generación del Checksum/SHA-256.
Al compilar la versión final de Producción (Release), el IDE (Ej. STM32CubeIDE) escupe un archivo Mobagas_v1.0.0.bin. Debes correr una herramienta de Hashing (como SHA-256) sobre este archivo. Ese hash hexadecimal gigante se anota en el Documento de Liberación (CoC). Si la fábrica maquiladora en China compila un archivo distinto o altera un solo byte para meter un troyano, el Hash será diferente y rechazarás el lote entero.

💻 Firmware: Control de Versiones mediante Pre-Procesador (C)

No vas a borrar manualmente todos los printf() de tus 50 archivos fuente; eso provocaría errores humanos (Typo). Utilizaremos las directivas del Pre-Procesador de C (#define, #if) para crear una Arquitectura de Configuración. Al cambiar un solo número de `0` a `1`, todo el código fuente muta de un prototipo hablador a un producto industrial blindado y silencioso.


/**
 * @file firmware_release_config.h
 * @brief Gestión centralizada del Estado de Liberación y Hardening de Seguridad
 */

#ifndef FIRMWARE_RELEASE_CONFIG_H
#define FIRMWARE_RELEASE_CONFIG_H

// =========================================================================
// INTERRUPTOR MAESTRO DE PRODUCCIÓN (EL "GOLDEN SWITCH")
// 0 = MODO BETA (Laboratorio/SAT - Logs activados, protecciones flexibles)
// 1 = MODO PRODUCCIÓN (GA - Golden Master, Logs apagados, RDP Bloqueado)
// =========================================================================

#define BUILD_ENV_PRODUCTION  1   // <-- ¡HOY LO CAMBIAMOS A 1!

// =========================================================================
// MUTACIÓN CONDICIONAL DEL FIRMWARE
// =========================================================================

#if (BUILD_ENV_PRODUCTION == 1)
    
    // --- MODO: GENERAL AVAILABILITY (GA) ---
    
    #define SYSTEM_VERSION_STR       "v1.0.0-GA-RELEASE"
    #define SYSTEM_VERSION_HEX       0x010000
    
    // Asfixia Criptográfica: Eliminamos la salida de texto al puerto serie.
    // El compilador ignorará todas las líneas DEBUG_PRINT en los archivos C,
    // ahorrando cientos de kilobytes de Flash y valiosos ciclos de CPU.
    #define DEBUG_PRINT(fmt, ...)    do {} while(0) 
    
    // Hardening: Exigir RDP Nivel 1 o 2 (Bloqueo de Silicio)
    #define ENFORCE_SILICON_LOCK     1
    
    // Watchdog Permanente: No se puede detener ni en modo Sleep
    #define HARDWARE_WATCHDOG_ENABLE 1
    
    // Timeout estricto de seguridad de flujo (Día 303)
    #define FLOW_TIMEOUT_MAX_MS      8000

#else
    
    // --- MODO: BETA / LABORATORIO ---
    
    #define SYSTEM_VERSION_STR       "v0.9.9-BETA-SAT"
    #define SYSTEM_VERSION_HEX       0x009909
    
    // Logs activos. Imprime al UART2.
    #include <stdio.h>
    #define DEBUG_PRINT(fmt, ...)    printf("[BETA] " fmt, ##__VA_ARGS__)
    
    // Permitir depuración SWD (ST-Link conectado)
    #define ENFORCE_SILICON_LOCK     0
    
    // Apagar Watchdog para que no reinicie la máquina mientras pausamos con Breakpoints
    #define HARDWARE_WATCHDOG_ENABLE 0
    
    // Timeout relajado para pruebas manuales (Ej. soplarle a la turbina)
    #define FLOW_TIMEOUT_MAX_MS      60000

#endif // BUILD_ENV_PRODUCTION

#endif // FIRMWARE_RELEASE_CONFIG_H
        

🚀 Cierre Triunfal del Proyecto Tesis: La Fase 5

Objetivo del día: Certificación Final, Hardening de Código y Design Freeze Comercial.

Cuando iniciaste este proyecto, eras un estudiante conectando jumpers a un protoboard, celebrando porque un LED parpadeaba. Hoy, has firmado el documento de liberación (Release Sign-off) de un equipo mecatrónico que opera bajo normas petroquímicas, maneja finanzas de 64 bits en la nube, y bloquea sus propios registros de memoria si un hacker intenta extraer sus secretos.

Al programar el `firmware_release_config.h` y establecer `BUILD_ENV_PRODUCTION` en `1`, has transmutado la naturaleza de tu compilación. Sin cambiar la lógica algorítmica, eliminaste los rastros humanos (textos de debug), aceleraste la ejecución en milisegundos y blindaste los candados de Watchdog. Has creado el **Golden Master**, el archivo binario inmaculado que se grabará en el cerebro de las primeras 1,000 unidades que salgan de la fábrica en Guadalajara. Tu Hardware y tu Firmware Bare-Metal ya no son un proyecto de tesis; son un Producto Industrial.

¡Felicitaciones, Arquitecto! Has conquistado el Mundo Físico.

📝 Resumen del Día