Estructura general recomendada del código de unidad de prueba
El entorno de TU especificado en este documento está diseñado para proporcionar portabilidad de código fuente de TUs en varios entornos operativos.
Las TU sólo deben utilizar el dispositivo y las interfaces del sistema especificados en este documento para garantizar la portabilidad. Sin embargo, la experiencia ha demostrado que es una buena práctica de programación aislar y abstraer funciones externas para que cualquier problema en la portabilidad se pueda corregir dentro de un único archivo de código fuente. Por esta razón, se recomienda encarecidamente que los desarrolladores de TU incluyan un archivo fuente especial en su biblioteca de TU con el fin de proporcionar ese aislamiento y abstracción. A continuación se describe una implementación recomendada de ese archivo de origen, que se proporciona para ayudar a promover la coherencia en el desarrollo de TU. La coherencia es muy importante para el mantenimiento a largo plazo del código de la unidad de prueba.
Las bibliotecas de TU deben incluir un archivo de origen C denominado interface.c, que proporciona un conjunto de funciones de dispositivo abstraídas que las funciones de TU reales pueden utilizar. A continuación se muestra una lista de las funciones que se deben implementar en interface.c.
| Función de TU | Descripción |
|---|---|
| dd_abrir | Prepara un dispositivo para probar y obtiene los atributos de dispositivo necesarios. |
| dd_cerrar | Limpia después de las pruebas. |
| dd_lectura | Realiza una operación de lectura. |
| escribir_dd_write | Realiza una operación de grabación. |
| dd_dma | Inicializa, fija y conecta entre memorias el almacenamiento intermedio de usuario para una operación DMA. |
| dd_dma_enable | Habilita/inhabilita una operación DMA. |
| dd_dma_cleanup | Desasigna los recursos asignados anteriormente para una operación DMA. |
| dd_interrupción | Procesa condiciones de interrupción. |
Tal como se ilustra a continuación, estas funciones deben proporcionar correlaciones con uno o varios de los servicios descritos en "Interfaces de programación para TUs y manejadores de interrupciones" .
La figura también ilustra cómo las bibliotecas de TU deben incluir un archivo fuente C que implemente la interfaz exectu() , que proporciona el punto de entrada de programa para la biblioteca de TU, decodifica el número de TU especificado en la función interna correcta y llama a esa función.
