El Portal de las Tecnologías para la Innovación

ELD: Presentamos una nueva herramienta de enlace integrado de código abierto para sistemas integrados

En Qualcomm Technologies, Inc., los enlazadores integrados juegan un papel crucial en nuestra pila de software.

Si bien muchos enlazadores funcionan bien en las plataformas tradicionales, a menudo se quedan cortos cuando se trata de sistemas integrados.

Los proyectos integrados tienen requisitos únicos, tales como:

  • Gran dependencia de los scripts de enlace, que generalmente no son una preocupación en el enlace de host.
  • Casos de uso complejos que a menudo requieren extensiones personalizadas para la funcionalidad del enlazador o scripts de enlazador, adaptados para satisfacer las necesidades específicas del cliente.

Para abordar estos desafíos, desarrollamos un enlazador llamado eld, que se deriva de mclinker. Este enlazador está diseñado para trabajar con archivos ELF y está diseñado específicamente para satisfacer las necesidades de la comunidad integrada.

El enlazador eld se incluye en las cadenas de herramientas del compilador Qualcomm y aprovecha los componentes y bibliotecas de LLVM siempre que sea posible. Nuestros clientes confían en eld para crear imágenes que se ejecutan en el hardware de Qualcomm Technologies.

¡Estamos emocionados de abrir el código eld linker! Nuestro objetivo es colaborar con las comunidades de software de enlace y sistema para desarrollar nuevas características y mejorar sus capacidades. Descargar eld de GitHub

Características

El enlazador es totalmente compatible con los estándares GNU, abarcando la lectura de archivos de entrada, resolución de símbolos y la generación de salida compatible con GNU.

El enlazador admite los siguientes objetivos:

  • AArch32 y AArch64
  • Qualcomm Hexagon NPU
  • RISC-V (incluida la extensión Xqiu)

El enlazador incorpora varias características comúnmente disponibles en enlazadores compatibles con GNU, incluyendo:

  • Enlace parcial
  • Enlace dinámico
  • Enlace estático
  • Optimización del Tiempo de Enlace (LTO)
  • Optimizaciones de enlazadores como la fusión de cadenas

Además, el enlazador ofrece soporte maduro para scripts de enlazador con extensiones personalizadas.

Características Extendidas

El enlazador también incluye numerosas características destinadas a mejorar la experiencia del usuario, tales como:

  • Archivos de mapa de enlace fáciles de leer: Nuestro equipo de atención al cliente utiliza ampliamente esta información para diagnosticar y resolver problemas. Estos archivos de mapa también son legibles por máquina, lo que permite a los clientes generar informes personalizados a partir de las imágenes que construyen.
  • Fácil reproducción de problemas de tiempo de enlace: Un método único para que los clientes compartan artefactos utilizados en el momento del enlace cuando se encuentran con problemas de tiempo de enlace.
  • Opciones de diagnóstico completas: Proporciona amplias capacidades de depuración para problemas complejos como la recolección de basura de símbolos, problemas de línea de comandos, advertencias y errores.

Enlazadores Plugins

En respuesta a la creciente demanda de los clientes para inspeccionar y alterar los diseños de imágenes, ampliar la funcionalidad del enlazador para casos de uso imprevistos y generar informes personalizados, hemos desarrollado complementos de enlazador.

Estos complementos permiten a los clientes crear pases personalizados que se ejecutan durante el tiempo de enlace, ofreciendo un control y administración completos del usuario por parte del enlazador, con un enfoque en el diagnóstico.

La infraestructura del plugin también permite a los desarrolladores de toolchain tratar el enlazador como un componente transparente, facilitando la gestión cuidadosa de los supuestos en la imagen, emitiendo errores o advertencias si se violan los supuestos, y codificando información en el código fuente para el consumo del enlazador.

Esta infraestructura también ayuda a los desarrolladores de compiladores con las decisiones de diseño, lo que les permite:

  • Pase información auxiliar del compilador al enlazador
  • Optimice el diseño de imagen para casos de uso específicos

Productos de Qualcomm Technologies que utilizan el enlazador

El enlazador se emplea en varios productos de Qualcomm Technologies’, que incluyen:

  • Infraestructura de software de Qualcomm AI
  • Módems Qualcomm 5G
  • Productos y controladores LAN inalámbricos
  • Controladores de firmware y dispositivos de Qualcomm
  • Controladores de audio Qualcomm
  • ConfianzaZona
  • Numerosas imágenes AArch32/AArch64/RISC-V que utilizan Zephyr RTOS
  • Varias imágenes de microcontrolador basadas en RISC-V

Linker Source Organización

El código fuente del enlazador se clasifica en tres secciones principales:

  • Core Linker (dividido en directorios funcionalmente específicos)
  • Anulaciones específicas de objetivo
  • Pruebas unitarias

El enlazador central abarca las características más críticas, mientras que las anulaciones específicas del objetivo facilitan la personalización de la funcionalidad proporcionada por el enlazador central.

Esta encapsulación permite a los desarrolladores modificar y mejorar la funcionalidad específica del objetivo sin afectar a otros objetivos.

Las pruebas unitarias se dividen en dos categorías:

  • Pruebas unitarias utilizando las pruebas de la Unidad de Google
  • Pruebas lit utilizando el marco de prueba iluminado LLVM

Pruebas

El enlazador incluye un conjunto completo de casos de prueba unitarios que están diseñados para ser fácilmente legibles y modificables. Estas pruebas cubren tanto el enlazador en sí como varios ejemplos de complementos de enlazador, lo que ayuda a los clientes a comprender la sólida infraestructura de complementos de enlazador.

Nuestro equipo también realiza pruebas para aplicaciones internas en plataformas simuladas y en dispositivos.

Documentación eld

El enlazador está acompañado por documentación completa orientada al usuario eso aclara el comportamiento del enlazador, así como un FAQ completo que aborda problemas y soluciones comunes. 

Conéctate con nosotros

El equipo se dedica a evaluar e introducir continuamente características que se centran en la comunidad integrada.

Lo invitamos a unirse a nuestros esfuerzos para mejorar el enlazador y mejorar la solución. No dude en abrir cualquier problema en el que desee trabajar en GitHub o comparta casos de uso que actualmente no admitimos.

Observaciones de Cierre

Esperamos que la solución de enlazador integrado aborde los casos de uso que pretende resolver.

También nos gustaría reconocer el equipo mayor y todo nuestro equipo LLVM por sus continuas contribuciones para mejorar el enlazador.

Si tiene alguna idea para compartir o desea hablar con nosotros, no lo dude para llegar a nuestro equipo en GitHub.

Qualcomm News. S. K. E. Traducido al español

Artículos relacionados

Scroll al inicio