Volver al inicio

Proxy MCAL para MCU: portabilidad de código

Proxy MCAL proporciona una API unificada para periféricos de microcontroladores, implementada mediante binding al HAL del proveedor. Asegura la portabilidad del firmware al cambiar MCU. Ejemplos para STM32, NRF, AT32 con enfoque en completitud y testabilidad.

Proxy MCAL: migra el firmware sin reescribirlo
Advertisement 728x90

Proxy MCAL: Capa de abstracción universal para microcontroladores

Proxy MCAL resuelve el problema de vincular la aplicación a un HAL específico de un proveedor. Al migrar el firmware a un nuevo microcontrolador, el HAL estándar requiere reescribir por completo los controladores de GPIO, SPI, UART y otros periféricos. Proxy MCAL proporciona una única API implementada mediante funciones de enlace para cada familia de MCU. Esto preserva la portabilidad del código sin reescribir la lógica de la aplicación.

Los desarrolladores se enfrentan a migraciones por obsolescencia de chips, escasez de suministros, sanciones o nuevos requisitos como Bluetooth 5.3. Proxy MCAL garantiza modularidad conforme a ISO-26262: arquitectura abstracta, configurabilidad, testabilidad.

Requisitos para Proxy MCAL

Proxy MCAL debe cumplir criterios estrictos para desarrolladores de nivel medio o senior:

Google AdInline article slot
  • Completitud: getters/setters para todos los periféricos (CLOCK, GPIO, I2C, SPI, UART, ADC, DMA). Las funciones no utilizadas son weak, por lo que el enlazador las descarta.
  • Aceptación: API común acordada por el equipo.
  • Simplicidad: 45–55 líneas de prototipos, interfaz intuitiva, documentación mediante grep en las pruebas de módulos.
  • Escalabilidad: múltiples instancias de componentes.
  • Versatilidad: soporte para controladores ASIC, protocolos, RTOS.
  • Portabilidad: se compila en PC con stubs weak vacíos.
  • Acceso CLI: verificación de funciones vía UART en tiempo de ejecución.
  • Testabilidad: pruebas de módulos como documentación.
  • Configurabilidad: configs separadas como arreglos de estructuras.

Ejemplos de funciones de enlace

Única API gpio_logic_level_set(Pad_t pad, GpioLogicLevel_t logic_level) implementada de forma diferente:

Para STM32:

bool gpio_logic_level_set(Pad_t pad, GpioLogicLevel_t logic_level) {
    HAL_GPIO_WritePin(Port2PortPtr(pad.port), 1 << pad.pin, (GPIO_PinState)logic_level);
    return true;
}

Para NRF5340:

Google AdInline article slot
bool gpio_logic_level_set(Pad_t Pad, GpioLogicLevel_t logic_level) {
    bool res = false;
    res = gpio_is_valid_pad(Pad);
    if(res) {
        nrf_gpio_pin_write((uint32_t)Pad.byte, (uint32_t)logic_level);
    } 
    return res;
}

Para Artery AT32 (ISR-safe):

bool gpio_logic_level_set(Pad_t Pad, GpioLogicLevel_t logic_level) {
    Pad_t pad = {0};
    (void)pad;
    pad.byte = pad_num;
    gpio_type* GPIOx = Port2PortPtr(Pad.port);
    if(GPIOx) {
        switch((uint8_t)logic_level) {
        case GPIO_LVL_HI: {
            GPIOx->scr = 1 << Pad.pin;
        } break;
        case GPIO_LVL_LOW: {
            GPIOx->clr = 1 << Pad.pin;
        } break;
        }
    }
    return true;
}

Los prototipos son fijos, los cuerpos se adaptan al HAL del proveedor o registros.

Beneficios de la implementación

  • Portabilidad: la aplicación Proxy MCAL se compila para cualquier MCU mediante enlaces.
  • Pruebas: pruebas de módulos unificadas verifican cualquier HAL.
  • Interfaz CLI: gestión centralizada de periféricos.
  • Controladores ASIC: universales para dispositivos SPI/I2C en todas las plataformas.

Desventajas y mitigaciones

Sobrecarga — 10–20 ciclos por llamada. Solución: funciones inline. Riesgo de código spaghetti minimizado por la simplicidad de la API y el acoplamiento flojo.

Google AdInline article slot

Puntos clave

  • Proxy MCAL separa la aplicación del HAL del proveedor, simplificando la migración a nuevos MCU.
  • Única API con enlaces garantiza completitud y portabilidad.
  • Conforme a ISO-26262: modularidad, testabilidad, configurabilidad.
  • Soporta CLI y pruebas de módulos para verificación en tiempo de ejecución.
  • Escala a 16+ familias de MCU sin reescribir la aplicación.

— Editorial Team

Advertisement 728x90

Leer después