Embedded Coder

Generación de código C y C++ optimizado para sistemas embebidos

 

Embedded Coder® genera código C y C++ legible, compacto y rápido para procesadores embebidos utilizados en la producción en serie. Amplía MATLAB Coder™ y Simulink Coder™ con optimizaciones avanzadas para un control preciso de las funciones, los archivos y los datos generados. Estas optimizaciones aumentan la eficiencia del código y facilitan la integración con código, tipos de datos y parámetros de calibración heredados. Puede incorporar una herramienta de desarrollo de terceros y crear un ejecutable para el despliegue llave en mano en el sistema embebido o en la placa de prototipado rápido.

Embedded Coder ofrece soporte integrado con los estándares de software AUTOSAR, MISRA C® y ASAP2. También proporciona informes de trazabilidad, documentación de código y verificación automatizada de software para el desarrollo de software DO-178, IEC 61508 e ISO 26262. El código de Embedded Coder es portátil, por lo que se puede compilar y ejecutar en cualquier procesador. Además, Embedded Coder ofrece paquetes de soporte con optimizaciones avanzadas y controladores de dispositivos para hardware específico.

Descubra cómo las empresas generan código de producción con Embedded Coder para aplicaciones de control, procesamiento de señales, procesamiento de imágenes y visión artificial, y machine learning.

Cómo empezar:

Configuración para la generación de código

Para configurar los parámetros de generación de código de Embedded Coder®, utilice la app MATLAB Coder para MATLAB® y utilice la app Embedded Coder Quick Start para Simulink. También puede configurar los ajustes directamente mediante comandos y scripts de MATLAB.

Con la app MATLAB Coder, es posible:

  • Generar código para los archivos y las funciones de MATLAB
  • Seleccionar el procesador y la salida de generación de código
  • Elegir las optimizaciones de Embedded Coder

Con Embedded Coder Quick Start para Simulink, es posible:

  • Generar código para los subsistemas y los modelos de Simulink
  • Seleccionar el procesador y la salida de generación de código
  • Elegir que Embedded Coder optimice el uso de memoria RAM o la velocidad de ejecución

Uso de Embedded Coder Quick Start para acelerar la generación de código de producción desde Simulink.

Selección de destinos

Embedded Coder utiliza objetos de configuración y archivos de destino de sistema para convertir el código de MATLAB y los modelos de Simulink en código fuente y ejecutables con calidad de producción.

En el caso de MATLAB, se especifica uno de los siguientes destinos de salida:

  • Archivo MEX
  • Librería estática C/C++
  • Ejecutable de C/C++

En el caso de Simulink, se especifica una de las configuraciones listas para ejecutar, entre las que se incluyen:

Destino embebido en tiempo real: genera código C ANSI/ISO, C++ y C++ encapsulado con datos en punto flotante y en punto fijo para una ejecución eficiente en tiempo real prácticamente en cualquier procesador de producción.

Destino de AUTOSAR: genera código C e interfaces en tiempo de ejecución que soportan el desarrollo de componentes de software AUTOSAR (requiere AUTOSAR Blockset).

Destino de librería compartida: genera una versión de librería compartida del código para la ejecución en la plataforma host, ya sea como archivo de librería de enlaces dinámicos de Windows® (.dll) o como archivo de objeto compartido de UNIX® (.so).

Además, MathWorks y otras empresas de terceros ofrecen complementos de MATLAB que amplían la capacidad de Embedded Coder para admitir hardware específico, como ARM®, Intel®, NXP™, STMicroelectronics® y Texas Instruments™.

Uso de paquetes de soporte de hardware para desplegar rápidamente el código generado en dispositivos embebidos.

Trabajo con datos personalizados

Embedded Coder permite definir y controlar cómo aparecen los datos del modelo en el código generado para facilitar la integración del software.

En el caso del código de MATLAB, Embedded Coder soporta todas las definiciones de datos de MATLAB Coder, incluidos los objetos en punto fijo y las clases de almacenamiento predefinidas.

En el caso de los modelos de Simulink, Embedded Coder soporta las siguientes funcionalidades de especificación y diccionario de datos:

Embedded Coder Dictionary: permite ver y personalizar las definiciones de código, incluidas las interfaces de funciones, las clases de almacenamiento y las secciones de memoria.

Objeto de datos de Simulink: proporciona clases de almacenamiento predefinidas, que incluyen constant, volatile, exported global, imported global, define directive, structure, bit field (incluida la estructura de empaquetado de bits) y los métodos de acceso get y set.

Objeto de datos de empaquetado de módulos: proporciona atributos preconfigurados para objetos de datos avanzados utilizados normalmente en la producción en serie, tales como segmentos de memoria para calibrar o sintonizar tablas de búsqueda.

Tipo de datos de usuario: permite crear tipos abstractos para datos complejos y controlar con precisión cómo aparecen los datos del modelo en el código generado, establecer una interfaz con cualquier dato heredado y aumentar o reemplazar los tipos integrados de Simulink.

Embedded Coder ofrece acceso a archivos de intercambio de datos ASAP2 en Simulink, lo que permite exportar datos de modelo con definiciones de datos complejas utilizando el estándar ASAP2. Es posible modificar las funcionalidades integradas para producir otros mecanismos de intercambio de datos.

Uso de Embedded Coder Dictionary para definir y controlar cómo aparecen los modelos y los datos en el código generado.

Optimización y empaquetado de código

Embedded Coder permite controlar los límites de las funciones, preservar expresiones y aplicar optimizaciones en varios bloques para reducir aún más el tamaño del código. Los datos se intercambian con el código generado a través de variables globales o argumentos de función. Es posible rastrear el código generado hasta los bloques y las señales del modelo.

Las opciones de Embedded Coder para generar código a partir de código de MATLAB y modelos de Simulink permiten:

  • Generar código específico del procesador para funciones y operadores matemáticos
  • Reutilizar código para exportar a entornos heredados o externos
  • Eliminar código innecesario de inicialización, terminación, registro y gestión de errores
  • Eliminar código en punto flotante en aplicaciones que solo usan enteros

Existen opciones adicionales de optimización y configuración de Embedded Coder para los modelos de Simulink que permiten:

  • Generar variantes de código utilizando macros para la compilación del preprocesador
  • Controlar el formato de cada archivo generado
  • Determinar cómo se definen y referencian los datos globales
  • Especificar el contenido y la ubicación de los comentarios

Generación de código SIMD desde un modelo de Simulink.

Comentarios, trazabilidad y documentación de código

Embedded Coder ofrece varias funcionalidades para examinar el código generado en los archivos y las funciones de MATLAB o los modelos y los subsistemas de Simulink. Estas funcionalidades permiten:

  • Generar un informe de código que describe los módulos de código, las interfaces de función y las métricas del código estático
  • Controlar los formatos de los identificadores para las funciones, los tipos de datos y los datos globales generados
  • Incluir el código de MATLAB como comentarios en el código generado, incluido el texto de ayuda de las funciones

Con Simulink, Embedded Coder también ofrece la posibilidad de insertar requisitos de alto nivel como comentarios de código con enlaces al origen de los requisitos (requiere Simulink Requirements™). El informe de código sobre la generación de código de Simulink también incluye una descripción de la interfaz de código, un informe de trazabilidad y la visualización de los archivos fuente y el código generados. Existen enlaces bidireccionales entre el modelo y el código generado, lo que facilita la navegación entre todas las líneas de código y su correspondiente elemento en el modelo de Simulink, incluidos subsistemas, bloques, funciones y código de MATLAB, y gráficas y transiciones de Stateflow®.

Informe de generación de código de Simulink que destaca la trazabilidad bidireccional entre el algoritmo y la implementación.

Ejecución y verificación de código

Embedded Coder permite incorporar el código generado en el entorno de ejecución de código.

Con MATLAB, el código generado desde Embedded Coder se ejecuta utilizando el mismo marco de ejecución proporcionado por MATLAB Coder.

Con Simulink, Embedded Coder amplía significativamente el marco de ejecución en tiempo real proporcionado por Simulink Coder. De forma predeterminada, el código se puede ejecutar con o sin un sistema operativo en tiempo real (RTOS) y en modo monotarea, multitarea, multinúcleo o asíncrono. También es posible verificar los resultados de ejecución del código mediante Embedded Coder para pruebas software-in-the-loop (SIL) y processor-in-the-loop (PIL). Simulink Test™ y Simulink Coverage ayudan a automatizar la ejecución de pruebas, la comparación de resultados y los análisis de cobertura. También se admite el análisis de perfiles de ejecución de código.

Generación de un programa principal

Embedded Coder genera un programa principal ampliable basado en la información proporcionada para desplegar el código en el entorno en tiempo real. Esta funcionalidad permite generar y crear un ejecutable personalizado completo a partir del modelo.

Ejecución de código multitasa, multitarea y multinúcleo

Embedded Coder genera código monotasa o multitasa utilizando los tiempos de muestreo periódicos especificados en el modelo. Para los modelos multitasa y multitarea, emplea una estrategia llamada agrupación de tasas que genera funciones independientes para la tarea de tasa base y para las tareas de subtasa del modelo. También se puede utilizar el modelado de ejecución simultánea de Simulink y producir código con varios subprocesos para el procesamiento multinúcleo.

Realización de pruebas SIL y PIL

Embedded Coder automatiza la ejecución del código generado en Simulink para pruebas SIL o en la plataforma embebida para pruebas PIL utilizando bloques de función S o modos de simulación de Simulink. Simulink Test™ ayuda a automatizar la ejecución de las pruebas y la comparación de los resultados de las pruebas con los resultados de la simulación del modelo original. El análisis de cobertura de código estructural para medir la integridad de las pruebas se puede realizar con Simulink Coverage o mediante la integración con herramientas de terceros. El análisis de perfiles de código proporciona tiempo de ejecución en los procesadores host o de destino.

Realización de pruebas software-in-the-loop (SIL) y processor-in-the-loop (PIL) del código generado por Embedded Coder.

Funcionalidades más recientes

Soporte para librerías de sustitución de código FFT para Arm

Genere código optimizado para transformadas rápidas de Fourier (FFT) usando las librerías de sustitución de código para los procesadores Arm Cortex-A y Arm Cortex-M.

Reducción de copias de datos

Genere código con menos copias de datos para los bloques Data Store Memory que almacenan grandes estructuras de bus dentro de subsistemas y más allá de los límites de referencia del modelo.

Arrays multidimensionales optimizados

Reduzca la memoria mediante la reutilización de buffers para arrays multidimensionales que conservan las dimensiones.

Operadores a nivel de bits

Reduzca la ROM generando operadores a nivel de bits desde bloques de operadores lógicos.

Funciones de Image Processing Toolbox con varios subprocesos

Aumente la velocidad de ejecución generando código para funciones de Image Processing Toolbox con funcionalidades para varios subprocesos.

Vectorización SIMD para bucles

Use las características intrínsecas de SIMD para vectorizar bucles y arrays en procesadores Intel y Arm.

Calibración y supervisión a través de XCP y herramientas de terceros

Genere código que soporta el ajuste de parámetros y la supervisión de señales a través de un canal de comunicación XCP ASAM MCD-1 y herramientas de calibración de terceros como ETAS INCA y Vector CANape.

Consulte las notas de la versión para obtener detalles sobre estas funcionalidades y las funciones correspondientes.

Coder Summit

Ingenieros de campo y personal de desarrollo presentan funcionalidades nuevas para el diseño de software, la generación de código embebido, etc.