Herramientas para diseño de sistemas embebidos en C/C++

Información general

Los diseñadores de embebidos por lo general eligen dispositivos con una arquitectura heterogénea para aplicaciones avanzadas y críticas porque combinan dos dispositivos de procesamiento altamente confiables: un procesador que ejecuta un SO en tiempo real (RTOS) y hardware programable. Se requieren herramientas de software eficientes para hacer de esta arquitectura una opción productiva para el diseño de sistemas embebidos.

La plataforma de NI es abierta y flexible para que usted pueda elegir entre una variedad de lenguajes de programación, herramientas y patrones de diseño para implementar su sistema y hacer el mejor uso de su IP y experiencia. El SO embebido pre-validado está basado en Linux y construido con tecnologías OpenEmbedded estándares para que pueda escribir programas usando el software LabVIEW, C/C++, matemáticas textuales o una combinación de estos. Puede fácilmente recompilar código de proyectos anteriores para reducir los nuevos esfuerzos de desarrollo e incluso integrar LabVIEW con bibliotecas y aplicaciones escritas en cualquier lenguaje. El Módulo LabVIEW FPGA ofrece un entorno de programación de alto nivel que usa el compilador Xilinx para desarrollar programas FPGA optimizados. Los desarrolladores a nivel de aplicación pueden luego conectarse a E/S inmediatamente y escribir algoritmos muy poderosos en un lenguaje gráfico sin ninguna experiencia en programación VHDL. El controlador RIO integrado maneja la comunicación entre el procesador y FPGA, lo que le da tiempo para enfocarse en la lógica de la aplicación en lugar del software del controlador de bajo nivel.

Utilice este documento para aprender cómo programar sistemas embebidos de NI y descargar las herramientas de software que necesita.

Contenido

Introducción a una arquitectura heterogénea

Arquitectura heterogénea

Figura 1: Una arquitectura heterogénea combina un procesador, FPGA y E/S con herramientas de programación de alto nivel.

Procesador

El procesador Intel ejecuta NI Linux Real-Time, un sistema operativo en tiempo real basado en un kernel estándar y diseñado específicamente para una operación confiable y determinística en implementaciones a largo plazo. Incluye características estándares de Linux, como soporte nativo para Linux con seguridad mejorada. El controlador NI-DAQmx proporciona una sola interfaz de programación para adquirir formas de onda y programar entradas analógicas, salidas analógicas, E/S digitales, contadores y control.

FPGA

La FPGA programable por el usuario le permite descargar procesos de tiempo crítico para control avanzado, procesamiento de señales, filtrado, temporización avanzada y otra lógica. NI utiliza la última tecnología FPGA de Xilinx, con chips que contienen hasta 326, 060 celdas lógicas y 840 segmentos de DSP.

 

Enfoque de NI para programar sistemas heterogéneos

Si bien las arquitecturas heterogéneas que combinan un procesador y FPGA son extremadamente valiosas para aplicaciones avanzadas y críticas, programar esos sistemas es un desafío. Los desafíos existen en cada etapa e incluyen elegir o construir el sistema operativo, desarrollar controladores para hablar con E/S y comunicarse entre el procesador y FPGA, así como encontrar la experiencia necesaria para escribir programas FPGA y mantener los ciclos de desarrollo de ambos dispositivos en sincronización a lo largo del proyecto.

NI aborda los desafíos del diseño de software heterogéneo entregando una pila de software pre-validada y herramientas de programación de alto nivel sobre las que puede construir, y mantener la apertura y portabilidad a futuras plataformas. La arquitectura proporciona middleware, controladores y un sistema operativo Linux completamente probados para que pueda transferir rápidamente el código de su aplicación a la plataforma de NI. Continúe usando sus herramientas preferidas de desarrollo de aplicaciones y aproveche las fortalezas de LabVIEW para la programación en tiempo real y FPGA. El verdadero valor de la programación de LabVIEW FPGA es que este enfoque abstracto del diseño digital permite a los desarrolladores de C/C++ a nivel de aplicación implementar las partes más críticas de sus aplicaciones en hardware, lo que nunca hubieran podido hacer sin tener expertos en VHDL en su equipo de trabajo.

Programe el procesador embebido con LabVIEW o cualquier herramienta compatible con Linux y use el controlador NI RIO para comunicarse con LabVIEW FPGA

Figura 2: Programe el procesador embebido con LabVIEW o cualquier herramienta compatible con Linux y use el controlador NI RIO para comunicarse con LabVIEW FPGA.

Programación en tiempo real

Los diseñadores de sistemas embebidos que trabajan con hardware de NI pueden elegir entre una variedad de lenguajes de programación y herramientas al diseñar sus sistemas. Los desarrolladores pueden programar el procesador abierto embebido en LabVIEW, C/C++ o matemática textual y pueden reutilizar código fuente existente de proyectos anteriores para ahorrar tiempo de desarrollo. Los programadores pueden reutilizar bibliotecas C/C++ de proyectos anteriores al llamarlos desde una aplicación de LabVIEW Real-Time, lo cual abstrae tareas como programación de hilos en tiempo real. Alternativamente, los desarrolladores pueden desarrollar, depurar e implementar aplicaciones en el procesador embebido escritas completamente en C o C++ utilizando el entorno de desarrollo integrado (IDE) de su preferencia.

Programación de FPGA

Introducir FPGAs en el diseño de sistemas embebidos ha hecho posible crear lógica digital de alto rendimiento sin la necesidad de un diseño ASIC personalizado. Tradicionalmente, los lenguajes de descripción de hardware basados en texto, como VHDL o Verilog escritos por ingenieros de diseño digital, se han utilizado para el desarrollo de FPGA. Desafortunadamente, debido a la desafiante semántica del lenguaje, estos lenguajes de descripción de hardware hacen que sea difícil aprovechar todas las capacidades del diseño de FPGA. Así lo demuestra la búsqueda de las industrias embebidas de abstracciones de más alto nivel para el diseño de FPGA, como herramientas para síntesis de C a compuertas o lenguajes de programación gráfica como G en LabVIEW FPGA.

El entorno de programación gráfica de LabVIEW abstrae la complejidad del hardware FPGA y ofrece construcciones de programación familiares para los ingenieros de software para que los usuarios puedan diseñar más rápido sistemas embebidos de alto rendimiento.

 

Recursos para el desarrollador: Herramientas de desarrollo C/C++ para Linux Real-Time

Dado que el hardware de NI ejecuta un sistema operativo Linux estándar, puede crear su aplicación embebida utilizando cualquier herramienta compatible con Linux. Esto le brinda la flexibilidad de reutilizar su IP, experiencia y herramientas de desarrollo, pero necesita comprender dónde y cómo pueden integrarse con LabVIEW Real-Time y LabVIEW FPGA.

 Elija un patrón de diseño de software en base a la reutilización de IP y la experiencia en programación en tiempo real

Figura 3: Elija un patrón de diseño de software en base a la reutilización de IP y la experiencia en programación en tiempo real.

Debe usar LabVIEW FPGA para programar el Xilinx FPGA, pero puede usar C/C++ o LabVIEW Real-Time para comunicarse con el programa LabVIEW FPGA. Existe una API C y una API de LabVIEW para la capa de comunicación entre la aplicación del procesador y el programa LabVIEW FPGA. Por lo tanto, el primer paso para diseñar su sistema NI Linux Real-Time es elegir un patrón de diseño de software de nivel superior.

Elegir LabVIEW para programar la aplicación en tiempo real tiene muchas ventajas, ya que LabVIEW Real-Time incluye construcciones integradas para multithreading, programación de subprocesos en tiempo real y muchas otras características específicas para construir código robusto y determinístico. Además, LabVIEW puede interactuar con bibliotecas compartidas y aplicaciones escritas en otros lenguajes para que esta valiosa IP pueda ser reutilizada en el patrón de diseño de LabVIEW Real-Time.

Sin embargo, en los casos en que la aplicación de nivel superior debe escribirse únicamente en C/C++, puede usar LabVIEW solo para programar las E/S en FPGA y evaluar qué tareas críticas deben moverse para ejecutarse en hardware en lugar de en el procesador.

Recursos para comenzar

  1. Empiece por conocer los posibles patrones de diseño de software para su sistema embebido de NI: Elegir una arquitectura de software para programar sistemas NI Linux Real-Time.
  2. Configure un IDE preferido para desarrollar, implementar y depurar una biblioteca compartida C/C++ o una aplicación de nivel superior. Puede encontrar información sobre cómo completar estas tareas en Getting Started with C/C++ Development for NI Linux Real-Time.
  3. Aprenda a llamar bibliotecas compartidas C/C++ desde su aplicación LabVIEW Real-Time siguiendo los pasos de este tutorial: Integrar código C con LabVIEW en dispositivos NI Linux Real-Time
  4. Aprenda más sobre cómo comunicarse con un programa LabVIEW FPGA desde una aplicación C/C++ en tiempo real usando la API C de la interfaz FPGA: Programar con el ejercicio y la nota técnica de la API C de la interfaz FPGA
  5. Visite nuestros foros de desarrolladores activos para obtener respuestas a preguntas avanzadas sobre programación de C/C++ y Linux: Comunidad de NI Linux Real-Time

Herramientas de software requeridas

  1. Para programar su aplicación de NI Linux Real-Time, necesita al menos una de las siguientes herramientas:
    1. Descargue LabVIEW Real-Time Module si planea construir su aplicación de nivel superior en tiempo real usando LabVIEW.

    2. Descargue solo el compilador cruzado GNU/Linux si planea usar sus propias herramientas de desarrollo C/C++ para desarrollar una biblioteca compartida o una aplicación de nivel superior:
  2. Descargue la FPGA Interface C API (versión 13.0 o posterior) si planea desarrollar su aplicación en tiempo real de nivel superior en C/C++. La API C de la interfaz FPGA genera un archivo de encabezado C basado en su archivo de bits LabVIEW FPGA que expone las variables de referencia nombradas de sus registros FPGA, FIFOs de DMA e interrupciones. También incluye una API de funciones utilizadas para leer y escribir en estas variables y manipular el funcionamiento de su código FPGA.

  3. El desarrollo de FPGA requiere todo lo siguiente:
    1. LabVIEW (Completo o superior)
    2. LabVIEW FPGA Module
    3. Controlador NI-RIO (versión 2013 o posterior)

Recursos para el desarrollador: LabVIEW para Desarrollo de FPGA

LabVIEW es adecuado para programación FPGA porque representa claramente el paralelismo y el flujo de datos. Con LabVIEW FPGA, los ingenieros y científicos con experiencia en C, pueden aprovechar los FPGAs en sus diseños sin la necesidad de aprender diseño de hardware. Además, la API C de la interfaz FPGA ofrece una capa de comunicación entre el FPGA y la aplicación en tiempo real para control de E/S y escritura de datos. Con esta API, usted puede usar las herramientas gráficas de LabVIEW para programar el FPGA y elegir ya sea herramientas de LabVIEW o C/C++ para programar el procesador del sistema. 

LabVIEW FPGA le ayuda a crear hardware personalizado de medidas y control sin lenguajes de descripción de hardware de bajo nivel o diseño a nivel de tarjeta. Usted puede usar este hardware personalizado para rutinas únicas de temporización y disparo, control de ultra alta velocidad, conectar con protocolos digitales, procesamiento digital de señales y muchas otras aplicaciones que requieren fiabilidad de hardware de alta velocidad y alto determinismo.