Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica TRABAJO DE DIPLOMA INGENIERIA INVERSA TMS320C6713PYPA DE AL LA COMPONENTE TARJETA T222 PROGRAMABLE DEL PECHORA Autor: Gabriel Marin Gutiérrez Tutor: Ing. Carlos Manuel García Algora Santa Clara -2014“Año 56 de la Revolución” COMPLEJO Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica TRABAJO DE DIPLOMA INGENIERIA INVERSA TMS320C6713PYPA DE AL LA COMPONENTE TARJETA T222 PROGRAMABLE DEL PECHORA Autor: Gabriel Marin Gutiérrez E-mail: [email protected] Tutor: Ing. Carlos Manuel García Algora E-mail: [email protected] Santa Clara -2014“Año 56 de la Revolución” COMPLEJO Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada. Firma del Tutor Firma del Jefe de Departamento donde se defiende el trabajo Firma del Responsable de Información Científico-Técnica i PENSAMIENTO “Todo esfuerzo por difundir la instrucción es vano, cuando no se acomoda la enseñanza a las necesidades, naturaleza y porvenir del que las recibe”. José Martí. ii DEDICATORIA A mis padres… A mis hermanos del alma Marcos y Maibel. A toda mi familia… iii AGRADECIMIENTOS A mis padres, por el gran esfuerzo que han realizado en mi educación y porque siempre encuentro en ellos el amor, la comprensión y la confianza necesaria para enfrentar los retos que me da la vida. A mi abuelita querida Lilí, por estar siempre tan preocupada y pendiente de mí. A mi tía Unices por su dulzura y por esas comidas tan ricas que me prepara. Al cariño de mi tía Mayda, por acogerme siempre con amor en su casa. A mi novia Virginia por su constante preocupación y apoyo en la realización de este trabajo, por tantos momentos lindos que hemos vivido, porque siempre es un motivo y una invitación al amor. A los eternos amigos que aquí conocí: “Guao”, “Norlen”, “Guille”, “Tirado”, “Dani”, “Leandro”, “Ernesto”, consortes de muchas alegrías y de mucho estudio, por todas las experiencias chifladas y divertidas que compartimos durante la universidad y que han dado como resultado etapas inolvidables en mi vida. A mis compañeros de aula y en especial a “Alejandro Castillo” no sólo por "la paciencia", que me tuvo alguna vez en explicarme las tantas cosas que durante mi transcurso por la Universidad me costaron entender, sino también por la incondicionalidad y el respeto que me ha brindado siempre…y por ser más que un compañero: Mi Amigo. A mi tutor Algora, por ayudarme en la realización de este trabajo. A la supervisión del compañero Pierrat en el proyecto. A todos los profesores que de una forma u otra fueron capaces de brindar lo mejor de sí, para contribuir con mi formación profesional, a los que siempre me respetaron y confiaron en mí y en mis capacidades como alumno. A mi familia en sentido general. A todos, ¡Muchas Gracias! iv TAREA TÉCNICA Para confeccionar el presente trabajo y alcanzar los resultados esperados, fue necesario seguir un grupo de tareas técnicas que sirvieran a su vez de guía para la elaboración del informe final. Ellas fueron: Descripción del funcionamiento general del Complejo Pechora, especificando los regímenes de la Estación de Conducción de Cohetes. Identificación de las funciones y componentes de la tarjeta T222, para realizar una caracterización del componente DSP TMS320C6713PYPA perteneciente a dicha tarjeta. Revisión bibliográfica sobre el diseño de aplicaciones con DSPs. Identificación de los procedimientos empleados en el mundo para realizar la ingeniería inversa de sistemas programados en DSP. Descripción y caracterización del software de simulación C++ Code Composer Studio, herramienta empleada en la realización de la ingeniería inversa de software. Análisis del código fuente de la tarjeta T222 a través de la herramienta C++ Code Composer Studio. Documentación de las expresiones matemáticas implementadas en el código principal del DSP TMS320C6713PYPA. Elaboración del informe final del Trabajo de Diploma. Firma del Autor Firma del Tutor v RESUMEN El Complejo “Pechora” es una estación de vigilancia del espacio aéreo que tras la modernización de su cabina de mando logró convertir los sistemas electrónicos analógicos en sistemas digitales mucho más eficientes y ligeros. En el presente trabajo de diploma se realiza el proceso de ingeniería inversa al código fuente presente en el componente programable DSP TMS320C6713PYPA perteneciente a la tarjeta T222. Se describen las funciones que desempeña la tarjeta T222 dentro del Complejo Pechora. También se muestran las principales características de los DSPs y específicamente los pertenecientes a la familia TMS320C6713 de la compañía Texas Instruments, dispositivo empleado por la tarjeta T222. Se explican algunos procedimientos de ingeniería inversa y se presentan las características y ventajas de la herramienta de simulación Code Composer Studio. Gracias a esto se determinó cómo ocurre el procesamiento y la transmisión de señales dentro de la tarjeta así como hacia el resto de los dispositivos que componen la ECC “S125MIA”. . vi TABLA DE CONTENIDOS PENSAMIENTO ...............................................................................................................................i DEDICATORIA.............................................................................................................................. ii AGRADECIMIENTOS ................................................................................................................. iii TAREA TÉCNICA .........................................................................................................................iv RESUMEN ....................................................................................................................................... v INTRODUCCIÓN ........................................................................................................................... 1 CAPÍTULO 1. 1.1 LOS DSP EN EL COMPLEJO PECHORA. ..................................................... 5 El Complejo Pechora en la defensa del país. ..................................................................... 5 1.1.1 Regímenes de la Estación de Conducción de Cohetes. .............................................. 7 1.1.2 Funciones de la tarjeta T222 dentro del Complejo Pechora. ...................................... 9 1.2 Procesador Digital de Señales. ........................................................................................ 11 1.2.1 Características del hardware en un DSP. ................................................................. 11 1.2.2 Clasificación de los DSP. ......................................................................................... 14 1.2.3 Campos de aplicación............................................................................................... 14 1.2.4 Principales fabricantes.............................................................................................. 16 1.3 Procesadores de señales TMS320XX de Texas Instruments........................................... 17 1.3.1 1.4 DSP TMS320C6713PYPA. ..................................................................................... 17 Conclusiones del capítulo. ............................................................................................... 20 CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓN DE LA INGENIERÍA INVERSA. ..................................................................... 21 vii 2.1 Definición de ingeniería inversa. ..................................................................................... 21 2.1.1 Fundamentos de la ingeniería inversa de software................................................... 21 2.1.1.1 Ingeniería inversa para comprender el procesamiento...................................... 23 2.1.1.2 Ingeniería inversa para reestructurar el código. ................................................ 23 2.1.1.3 Ingeniería inversa para redocumentar del código. ............................................ 24 2.2 Caracterización de la Herramienta de Desarrollo de Software Code Composer Studio v5.3. 25 2.2.1 Características de los códigos C/C++. ..................................................................... 27 2.2.2 Características del compilador. ................................................................................ 28 2.3 Análisis del código. ......................................................................................................... 28 2.4 Perfeccionamiento del código C/C++. ............................................................................ 29 3.4.1 Acceso de palabra para datos pequeños. .................................................................. 30 3.4.2 Acceso de palabra en el producto punto a punto. ..................................................... 30 3.4.3 Acceso de palabra en filtro FIR................................................................................ 30 3.4.4 Utilización de funciones especiales.......................................................................... 31 3.4.5 Procesamiento por lote del software. ....................................................................... 32 2.5 Conclusiones del capítulo. ............................................................................................... 33 CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222....... 34 3.1 Declaración de registros en el DSP de la tarjeta T222. ................................................... 34 3.2 Análisis de los códigos. ................................................................................................... 35 3.2.1 Void NMI_ISR(void). .................................................................................................. 36 3.2.1.1 F_222com.BIT.B12==1. .......................................................................................... 37 3.2.1.2 F_222com.BIT.B9==1 ............................................................................................. 40 viii 3.2.1.3 F_222com.BIT.B4==1 ............................................................................................. 43 3.2.1.4 (F_222com.BIT.B4==1 || F_222com.BIT.B9==1) .................................................. 46 3.2.2 Void EInt5_ISR(void) .............................................................................................. 53 3.3 Conclusiones del capítulo. ............................................................................................... 54 CONCLUSIONES ......................................................................................................................... 55 RECOMENDACIONES ................................................................................................................ 56 REFERENCIAS BIBLIOGRÁFICAS ........................................................................................... 57 ANEXOS ........................................................................................................................................ 61 Anexo I Señales de entrada y salida a la T222. ......................................................................... 61 Anexo II Diagrama en bloques simplificado de C67XX. .......................................................... 63 Anexo III Forma de exploración del espacio. ........................................................................... 64 Anexo IV Sistema Entrenador o Imitador UK40. ...................................................................... 64 Anexo V. Modelo electrónico del artículo ................................................................................ 65 INTRODUCCIÓN 1 INTRODUCCIÓN La actividad de Ciencia e Innovación Tecnológica en las Fuerzas Armadas Revolucionarias (FAR) de Cuba tiene sus antecedentes más inmediatos en la etapa de la guerra de liberación, motivado por la necesidad de contar con un armamento capaz de contrarrestar la superioridad técnica del enemigo (Cubadefensa 2012). En la actualidad, las FAR de Cuba se encuentra inmersa en un proceso de modernización de la técnica de combate con el objetivo de alargar la vida operativa de los equipos, en lugar de reemplazarlos. La Defensa Antiaérea y la Fuerza Aérea Revolucionaria (DAAFAR) muestran significativos resultados en la modernización del material de guerra acompañado de eficaces métodos para su empleo combativo. En el programa de desarrollo armamentístico que lleva a cabo la DAAFAR, se encuentra la modernización de una estación de vigilancia del espacio aéreo denominada ECC S125MIA, también conocida como “Pechora”. Este complejo coheteril en sus inicios estaba formado por sistemas completamente analógicos y con la renovación de la técnica se logró convertir los sistemas electrónicos analógicos en sistemas digitales mucho más eficientes y ligeros. Actualmente los Pechora se encuentran funcionando con tarjetas implementadas con electrónica programada pero con el inconveniente de que se desconoce sobre los principios que rigen su funcionamiento, lo que ha imposibilitado la explotación total del complejo coheteril. Dada la dificultad de adaptar el sistema a las necesidades existentes en los disímiles entornos de operación y unido a los altos costos de mantenimiento, se ha estimulado la búsqueda de alternativas para la solución del problema (Pierrat 2013). Una forma de solución común para la problemática planteada es la ejecución de nuevos algoritmos a partir de la experiencia y el conocimiento que se tiene sobre el funcionamiento de la estación dada. Se conoce por la experiencia obtenida de los especialistas extranjeros que implementaron el sistema, que un proceso de este tipo requiere de un personal calificado en la teoría de funcionamiento de dicha estación y que además tenga suficiente preparación en los temas de electrónica digital y programada. Un grupo de este personal se tomaría un tiempo entre INTRODUCCIÓN 2 doce y quince años para evaluar las partes de la estación analógica que se convertirían en procesos digitales, realizar la conversión funcional teórica de integradores, discriminadores, esquemas de análisis, filtros de seguimiento y sistemas a lazo cerrado; diseñar los algoritmos de trabajo de la estación por partes o sistemas independientes, simularlos y compatibilizarlos entre sí; programarlos para diversos componentes, diseñar los esquemas electrónicos y las tarjetas de circuitos impresos; realizar el montaje de las placas, la puesta a punto y las pruebas, la programación de los componentes, el cableado entre placas; y concluir con las pruebas funcionales a la nueva estación que estaría surgiendo a partir de este proceso (Pierrat 2013). La otra alternativa para resolver el problema que se planteó es mediante la vía científica. Teniendo en cuenta que otros especialistas ya pasaron las etapas mencionadas y aprovechando la oportunidad de tener los códigos fuentes que se encuentran en los componentes programables de las tarjetas electrónicas, y conociendo además, algunas de las señales de entrada presentes en sus conectores, es posible, mediante la ingeniería inversa al hardware, obtener la funcionalidad de dichas tarjetas (Pierrat 2013). La ingeniería inversa es el proceso mediante el cual una tecnología o producto es desarmado con el fin de conocer los componentes que lo integran y la forma en que éstos interactúan, para lograr finalmente una comprensión cabal de su modo de funcionamiento, con el objetivo probable de construir una tecnología similar (López 2010). Este trabajo pretende, entre otras cosas, descifrar los algoritmos de funcionamiento interno de la tarjeta T222 para su futura explotación y modificación; lo cual trae como beneficio un ahorro económico al país, de ahí la importancia que tiene la realización de esta tarea. Teniendo en cuenta dichas razones se declara como situación problemática: la existencia de los códigos fuentes que están en los componentes programables de las tarjetas, de los cuales aún no se ha logrado obtener su funcionalidad. A su vez esto lleva a plantear como problema científico: ¿Qué hacer para obtener la funcionalidad de la tarjeta T222 a partir del código fuente que se encuentra en el componente programable DSP del tipo TMS320C6713PYPA para su futura modificación y desarrollo en las FAR? La investigación tiene como objeto de estudio: el código fuente del componente programable DSP del tipo TMS320C6713PYPA de la tarjeta T222. El objetivo general es: obtener mediante INTRODUCCIÓN 3 ingeniería inversa la funcionalidad del código fuente del componente programable TMS320C6713PYPA de la tarjeta T222. Para lograr tales resultados se declaran los siguientes objetivos específicos: 1. Identificar las funciones de la tarjeta T222 dentro de la cabina de mando del complejo Pechora. 2. Especificar el funcionamiento del componente DSP TMS320C6713PYPA dentro de la tarjeta T222. 3. Describir los procedimientos para la realización de ingeniería inversa de software. 4. Describir la herramienta de simulación C++Code Composer Studio para utilizarla en la ingeniería inversa. 5. Documentar las ecuaciones matemáticas implementadas en el DSP TMS320C6713PYPA. 6. Exponer el algoritmo de funcionamiento de la tarjeta T222, a partir del análisis de su código fuente; verificándolo a través de la simulación con la herramienta C++Code Composer Studio. 7. Documentar el código para que pueda ser utilizado por los especialistas del Complejo Pechora. El campo de acción lo constituye el estudio del código fuente del componente programable DSP TMS320C6713PYPA; a través de la ingeniería inversa, con el empleo de la herramienta de simulación C++ Code Composer Studio. De los objetivos específicos surgen las siguientes interrogantes científicas: 1. ¿Qué características posee el componente programable DSP TMS320C6713PYPA dentro de la tarjeta T222 que permiten cumplir con las tareas asignadas para el Sistema de Vigilancia? 2. ¿Qué procedimientos de ingeniería inversa utilizar para obtener la funcionalidad del código fuente del DSP de la tarjeta T222? 3. ¿Cómo se desarrollan aplicaciones para los DSPs utilizando el C++ Code Composer Studio? 4. ¿Qué significado tienen las expresiones matemáticas y las variables que se encuentran modeladas en el código fuente del DSP TMS320C6713PYPA de la tarjeta T222? INTRODUCCIÓN 4 Con los resultados de esta investigación se tendrá al alcance de todos los especialistas e investigadores que trabajan con el sistema de defensa antiaérea “Pechora” una fuente de aplicación práctica y teórica de gran importancia, ya que ofrecerá información relacionada al funcionamiento del Procesador Digital de Señales TMS320C6713PYPA de la tarjeta T222, encargado del cálculo de las coordenadas espaciales de los artículos y los objetos imitados. Todo con el fin de lograr una óptima explotación y mantenimiento de la tarjeta; además de facilitar una base para futuras investigaciones encaminadas a descifrar el funcionamiento de los demás componentes de la tarjeta. Para dar cumplimiento a los objetivos trazados el trabajo se divide en: Introducción, tres capítulos, conclusiones, recomendaciones, referencias bibliográficas y anexos. En el primer capítulo se exponen las funciones de la tarjeta T222 dentro del Complejo Pechora, también se realiza una caracterización general de los DSP atendiendo a su arquitectura, principales fabricantes y aplicaciones más comunes. Se toma como ejemplo representativo a los dispositivos pertenecientes a la familia TMS320Cxxxx de Texas Instruments. El segundo capítulo recoge los procedimientos para la realización de ingeniería inversa de software. Se muestran las características de la herramienta de simulación Code Composer Studio, explicándose las principales particularidades del lenguaje de programación empleado en los códigos pertenecientes al componente programable TMS320C6713PYPA. En el último capítulo se expone el algoritmo de funcionamiento del código principal del componente programable DSP de la tarjeta T222, a partir del análisis realizado con la herramienta Code Composer Studio. Se realiza además una descripción de las expresiones matemáticas que se resuelven en el código del DSP de la tarjeta con el fin de darles un significado dentro de las tareas que realiza la estación Pechora. Como culminación se representan las conclusiones, recomendaciones y anexos. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 5 CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA En el presente capítulo se describen las cualidades combativas y los regímenes de trabajo del complejo de defensa antiaérea Pechora. Se exponen algunas de las funciones de la tarjeta de cálculo T222 dentro de dicho complejo, y se caracterizan los DSP de acuerdo a su arquitectura, clasificación, aplicaciones más comunes y principales fabricantes. Por último se caracterizan los Procesadores de Señal de la familia TMS320CXX pertenecientes a la Compañía de Texas Instruments haciendo particularmente énfasis en las características del DSP TMS320C6713PYPA. 1.1 El Complejo Pechora en la defensa del país El Complejo S125MIA “Pechora” es una estación de vigilancia del espacio aéreo con potentes prestaciones combativas. Se destina para la búsqueda, seguimiento y aniquilamiento de los objetivos aéreos, en los rangos de bajas y medias alturas, tanto de día como de noche y excepcionalmente de los objetivos navales y terrestres, en los regímenes de Radiolocalización o Televisión (Pierrat 2014,a). El complejo posee la capacidad de lanzar hasta cuatro cohetes consecutivos a un mismo blanco con una probabilidad de destrucción del objetivo de 0.92. El cohete realiza el vuelo hacia el blanco y cuando este último entra dentro del radio de acción de la carga combativa que lleva el cohete, se produce la explosión, originándose un flujo de fragmentos precedidos por una onda expansiva que viaja en dirección hacia el blanco. La onda expansiva, la densidad de fragmentos y el efecto rompedor de estos últimos, son los miembros de una integral de probabilidad que generalmente produce la destrucción del blanco (Pierrat 2014,a). El Pechora estuvo conformado en sus inicios por sistemas totalmente analógicos, que se caracterizaban por ser muy pesados y ocupaban gran espacio en el terreno. Con el programa de modernización de armamentos que lleva a cabo las FAR, el complejo no quedó exento de ello y todos estos sistemas analógicos pasaron a ser digitales. Con esta modernización se obtuvieron grandes ventajas ya que se minimizó considerablemente el tamaño del sistema, al convertir una tecnología basada en válvulas al vacío en sistemas digitales con una alta capacidad de CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 6 integración. Esta reducción le ofrece al sistema una movilidad mayor en el terreno, siendo esta una característica imprescindible en el complejo, en vistas a contribuir a la vitalidad tanto del equipo como del personal que lo opera. Es importante destacar que el complejo Pechora realiza constantes exploraciones del espacio para detectar la posición del blanco a derribar, por lo que puede ser localizado y atacado si no es capaz de abandonar el lugar de disparo con rapidez después del tiro. Para garantizar la disponibilidad combativa de la misma, se hace necesario que las labores de mantenimiento y reparación sean realizadas por especialistas cubanos. Así se garantiza que ante cualquier dificultad, el tiempo de reparación sea el mínimo, además de contribuir a minimizar los gastos generados. En el siguiente esquema se muestran los diferentes dispositivos que componen la ECC S125MIA, señalando las tarjetas que realizan las funciones en dichos dispositivos entre ellas la T222. Figura 1.1 Esquema funcional de la ECC S125MIA (Pierrat 2014,a). CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 7 Todas las tarjetas de la estación modernizada están compuestas por circuitos impresos de cuatro capas y cada una cuenta con al menos un dispositivo lógico programable (PLD), en el cual, se encuentran implementadas las funciones digitales de cada una (Pierrat 2013). El PLD puede ser un CPLD (Dispositivo Lógico Programable Complejo) o un FPGA (Arreglo de compuertas Programables en el Campo), perteneciente a la compañía de Altera, la elección entre uno u otro está determinada por la capacidad lógica que requiera el funcionamiento de la tarjeta en cuestión. 1.1.1 Regímenes de la Estación de Conducción de Cohetes La ECC posee dos canales de trabajo: Radiolocalización y Televisión. En el canal de Radiolocalización posee dos regímenes de exploración del espacio aéreo: Localización (LOC) y Acompañamiento (ACOMP), siendo el último el que se emplea para el tiro. En el régimen LOC se transmiten los impulsos de sondeo y se reciben las señales reflejadas por la antena UV10, permitiendo la localización de objetivos aéreos hasta una distancia de 80Km, así como objetivos de superficie (terrestre o marítima) y objetivos portadores del CAR (Cohete Anti Radar). La frecuencia de la exploración de la UV10 está en el orden de los 25Hz a 28Hz. En régimen ACOMP la transmisión de los impulsos de sondeo se realiza por la antena UV10, que detienen el barrido de su diagrama y lo convierte en un cono fijo y la recepción se realiza por las antenas UV10, y UV11. Como se puede observar, la antena UV10 es transmisora y receptora mientras que la antena UV11 cumple solamente función de receptora y su frecuencia de exploración está en el orden de los 16Hz (Pierrat 2014,a). El régimen de Acompañamiento puede ser empleado en las siguientes condiciones: Actuar contra objetivos de pequeña Superficie Efectiva de Reflexión (SER). Actuar contra objetivos de grandes dimensiones. Actuar contra objetivos en grupo. Actuar contra objetivos del tipo Aerostatos Automáticos a la Deriva (ADA). Actuar contra objetivos portadores de interferencias activas y pasivas. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 8 Por otra parte el sector que cubre la antena UV12 se utiliza para enviar al espacio ondas continuas de Alta frecuencia de las dos señales: mandos e impulsos, (anteriormente fueron moduladas y codificadas en el cifrador del Dispositivo Radiotransmisor de los mandos) haciendo que el cohete vaya cambiando paulatinamente su posición espacial en correspondencia con los valores de los mandos de dirección enviados. En caso de que los blancos sean portadores de interferencias e impidan la localización y el seguimiento se emplea el canal tele óptico, siempre y cuando el objetivo se pueda ver por este medio. El canal de televisión posee dos regímenes de exploración: Campo visual ancho (Foco F150) 6° diagonalmente y Campo visual estrecho (Foco F-500) 2° diagonalmente. Este último se utiliza en los casos de localización de objetivos a distancias mayores de 18Km y para el seguimiento del objetivo durante el tiro, mientras que el primero (F-150) se utiliza durante la localización de objetivos a distancias menores de 18Km (Pierrat 2014,a). Figura 1.2 Puesto de Antenas de la Estación S125MIA (Pierrat 2014,a). Después de haber realizado una descripción general de los regímenes de trabajo del complejo S125MIA “Pechora”, se pasa a mostrar las principales características de la tarjeta de cálculo principal T222, perteneciente a la cabina de mando de dicho complejo. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 1.1.2 9 Funciones de la tarjeta T222 dentro del Complejo Pechora La tarjeta T222 es la encargada de formar las señales de video imitadas correspondiente al objetivo, los cohetes y la interferencia, así como el cálculo de la posición espacial de los cohetes imitados, a partir de los mandos que se le envían a un supuesto objetivo real en vuelo, para que la trayectoria del cohete imitado sea la misma que toma el artículo real con dichos mandos (Pierrat 2014,b). A continuación en las figuras 1.2 y 1.3 se muestran la imagen y el esquema funcional de la tarjeta T222 respectivamente. En ella hay 2 componentes programables: un FPGA del tipo CYCLONE I (EP1C12Q240I7N) y un DSP del tipo TMS320C6713PYPA. En cada uno de estos componentes está programado el hardware y los algoritmos que permiten realizar las funciones del sistema. Así mismo hay otros componentes que no están programados que se encargan de la parte analógica y de las entradas/salidas. Entre estos componentes se encuentran los conversores A/D y D/A, Memorias y Amplificadores. Figura 1.3 Imagen frontal de la tarjeta T222 (Pierrat 2014,b). CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 10 Figura 1.4 Esquema Funcional de la tarjeta T222 (Pierrat 2014,b). Los mandos de dirección que llegan a la T222 para su conversión en coordenadas espaciales relativas al sector de exploración de las antenas, son elaborados en la T224 (descifrador). La conversión de los mandos en coordenadas espaciales se realiza en el DSP de la T222 y con dichas coordenadas debe cambiar la posición de los artículos que se forman en el FPGA de la T222. Las señales de los artículos que se forman en la T222 se envían como señales de video a la T311 para el envío posterior a las tarjetas del receptor (T314). A la entrada de la T222 arriban también señales de sincronización y de datos por el bus serie. Como señales de sincronismo llegan los impulsos relacionados con la exploración de las antenas y los relacionados con el período de repetición del sondeo del transmisor. Como señales de datos serie le llegan las señales denominadas SB1, SB6, SB8 y SB14. La salida de esta tarjeta son las señales SB11 y SB16 (Pierrat 2014,d). CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 1.2 11 Procesador Digital de Señales Con el rápido avance de la electrónica se ha dado paso a elementos cada vez más rápidos y poderosos en lo que a procesamiento de información se refiere. Desde los inicios de la era digital hasta la actualidad, se ha progresado mucho, logrando chips, que aunque muy pequeños físicamente, son capaces de procesar grandes cantidades de datos en pocos segundos. Esto posibilita mejorar el tiempo de respuesta de cada función a realizar, entregando de esta forma respuestas de trabajo en tiempo real. Uno de estos diseños creados para mayor rapidez en el procesamiento digital de señales son los llamados: “Procesador Digital de Señales” (DSP, por sus siglas en inglés). Un DSP es un procesador cuyo hardware, software y set de instrucciones están optimizados para aplicaciones numéricas de alta velocidad, algo esencial para la manipulación de datos que representan señales analógicas en tiempo real. 1.2.1 Características del hardware en un DSP Muchas son las características que podemos encontrar en el hardware de un DSP, pero hay algunas que no debemos dejar de destacar por su importancia. Dentro de las características más notables podemos mencionar las siguientes: Arquitecturas del tipo HARVARD con mapas de datos e instrucciones separadas. Dos a más mapas de memoria de datos que permiten leer concurrentemente operandos y coeficientes. Manejo especializado de punteros de direcciones a través de unidades de cálculo dedicadas. Opciones para la digitalización y captura de señales con intervalos regulares (DMA). Recursos internos o dispositivos periféricos especializados para la conversión A/D y D/A de señales, así como el filtrados anti-aliasing y la reconstrucción. Elevada capacidad de procesamiento aritmético de datos en tiempo real, con elevada precisión para evitar problemas de redondeo y truncamiento. Etapas Multiplicadora/Acumuladora (MAC), apta para resolver ecuaciones del tipo A = A + (B x C) en un único ciclo. Una ALU operando en forma independiente a la MAC. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 12 Códigos de operación para controlar a la MAC y la ALU en una única instrucción. La operación MAC es la base en el Tratamiento Digital de la Señal. Cuando se piensa en la implementación de un filtro digital se tiene que las operaciones básicas a realizar son multiplicaciones y sumas. Para lograr este fin, se modificó la clásica arquitectura de Von Neumann. En esta arquitectura existía un único banco de memoria en el que se encontraba tanto la memoria de programa como los datos. En la arquitectura Harvard, se diferencian la memoria de programa de la de datos. Por tanto, una de las características básicas de los DSP es la existencia de varios bancos de memoria. Otro hecho diferencial es que se pretende que en un único ciclo de instrucción se pueda decodificar la instrucción, traer dos datos de memoria, realizar una operación MAC en la ALU y cargar la siguiente posición de memoria de programa. Para conseguir estos resultados se recurre, aparte de aumentar el número de bancos de memoria, a la existencia de varias unidades de proceso trabajando en paralelo(Damián 2006). Figura 1.5 Arquitectura Von Neumann y Harvard(Bertini, Gaffi et al. 2012). CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 13 En la tabla 1.1, se muestran las ventajas que ofrece la tecnología de Procesamiento Digital de Señales atendiendo a parámetros importantes que se deben tener en cuenta para la selección de este tipo de tecnología. Tabla 1.1 Ventajas del Procesamiento Digital de Señales CARACTERÍSTICAS PROCESAMIENTO ANALÓGICO PROCESAMIENTO DIGITAL DE DE SEÑALES SEÑALES Precisión Obtenible 1% al 10% 2-16 ….2-24 Efectos Espurios Temperatura, Humedad, Redondeo o Truncamiento Envejecimiento, Ruido Costo y Tamaño Elevado Bajo/ Medio Confiabilidad Medida Elevada Relación Señal / Ruido 50 a 80 dB 100 o más dB Calibración Manual NO necesaria o Digital Adaptabilidad Compleja Simple Señales 2D y 3D No procesable Procesable Actualización Cambio de Hardware Software Consumo de Potencia Elevado Bajo CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 1.2.2 14 Clasificación de los DSP Los DSP se pueden clasificar atendiendo a diferentes criterios, pero la clasificación más extendida es la que tiene en cuenta la precisión con que se realizan las operaciones. Atendiendo a este criterio tenemos la siguiente clasificación: DSP de punto fijo: los datos se representan en formato de punto fijo. Presentan problemas de limitación del rango dinámico en datos. Esto hace que su precio sea más bajo en comparación con los de punto flotante. El número de bits usados para representar los datos varía entre 16 bits y 24 bits. Los de 16 bits se aplican sobre todo en control de procesos, telecomunicaciones y codificación de voz. Los de 24 bits tienen invadido el mercado del audio profesional. DSP de punto flotante: los datos son representados con formato de punto flotante. Su rango dinámico es mucho mayor que los de punto fijo, aunque su precio es mayor. Hay unanimidad en el mercado en cuanto al número de bits usados para representar datos: 32 bits. Su juego de operaciones soporta también datos en formato de punto fijo. Los nuevos modelos de DSP coinciden en que el juego de instrucciones tiende a parecerse a los lenguajes de alto nivel (lenguaje C fundamentalmente). Esto facilita el empleo de compiladores cruzados, de tal forma que facilita el proceso de programación de los DSP, sin tener un conocimiento de la arquitectura del DSP empleado (Damián 2006). 1.2.3 Campos de aplicación En los últimos años ha habido un crecimiento notable en el uso de DSP, comenzando a ser utilizados en campos que hasta ahora casi no había entrado la electrónica (automatización, multimedia, entretenimiento, etc.). Así mismo, su aparición ha permitido desarrollar proyectos en tiempo real, que hasta entonces sólo se habían realizado a nivel de simulación. Comunicaciones: Compresión de audio y video, Filtrado y cancelación de ruido: ecualización y tratamiento no lineal para mejorar la relación señal a ruido o el uso del ancho de banda (Ejemplo: ADPCM, MPEG2, MP3,FAX) CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 15 Módems: métodos de modulación y demodulación digital de datos sobre un canal de ancho de banda y ruido propio dado. Por ejemplo: ASK, FSK, PSK, DPSK, QAM, TCM. Reconocimiento de palabra: para automatización de interfaz a usuario. Señalización: Envío y detección de información de control sobre un canal de voz o datos. Cancelación de eco: para compensar ecos en sistemas de elevado tiempo de propagación (Ejemplo: Voice Over IP) o con elevado tono local. Encriptación: para comunicaciones seguras. Detección y corrección de errores: agregado de datos a la información transmitida para detectar y corregir eventuales errores de recepción. Empaquetado de mensajes: en aplicaciones como ATM y Frame Relay. Telefonía Celular: manejo dinámico de frecuencias y potencia en estaciones base. Multiplexores T1: para uso combinado de datos y voz. Switchs PBX: para centrales telefónicas digitales. Tratamiento de señales de RF: telefonía celular, modulación y demodulación digital. Instrumentación: Medicina: Tomografía, Ecografía, Escáner, Electrocardiograma, Electroencefalograma y Diagnóstico Asistido. Telemetría: monitoreo satelital de recursos. Sonar y Radar: radares de apertura sintética, arreglos de antenas, detección de blancos móviles, detección doppler, navegación oceanografía. Industria: Control de motores: robótica, sistemas de transporte, sistemas de impresión, control de cabezales en sistemas de almacenamiento masivo de datos (Discos Rígidos, DVD, etc.). Control de procesos. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 16 Análisis de vibraciones: detección preventiva de fallas por análisis del espectro de vibraciones. Sistemas de navegación: GPS, piloto automático, sistemas de guía de misiles. Manejo de Potencia: corrección del factor de potencia, inversores, variadores de frecuencia, fuentes de alimentación. Consumo: Electrodomésticos inteligentes: neveras, lavadoras, heladeras, lavarropas, aires acondicionado. Audio doméstico semi-profesional Equipos de música: sintetizadores. Radio digital y televisión. Sistemas de Seguridad. 1.2.4 Principales fabricantes Las empresas que a continuación se mencionan marchan en la vanguardia del mercado de los DSP: Texas Instruments. Hitachi. Analog Device. Motorola. NEC. SGS-Thomson. Zilog. CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 1.3 17 Procesadores de señales TMS320XX de Texas Instruments La línea de DSP de Texas Instruments (TI), englobada bajo el código TMS320, consiste en múltiples familias de DSPs, de punto fijo o flotante, de procesadores simples o múltiples, que están orientadas a distintas aplicaciones, tanto en el área de las comunicaciones como del control. Desde que en 1982 se introdujo el TMS32010 hasta ahora, han aparecido muchas generaciones, de las cuales algunas están obsoletas en la actualidad y otras siguen vigentes. De punto fijo: C1x, C2x, C24x, C5x, C54x, C55x, C62x y C64x De punto flotante: C3x, C4x, C67x Multiprocesadores: C8x Combinaciones DSP+CPU: OMAP 1.3.1 DSP TMS320C6713PYPA El DSP TMS320C67xx forma parte de la familia de DSPs de punto flotante y está basada en la plataforma de DSP TMS320C6000 que puede operar a 225 MHz otorgando hasta 1800 millones de instrucciones por segundo (MIPs) y 1350 MFLOPS (Instruments 1990). El dispositivo TMS320C6713 (C6713) está orientado a brindar alto desempeño y alta velocidad, con una arquitectura Very Long Instruction Word ( por sus siglas en ingles VLIW) introducida por Texas Instruments, haciendo de este DSP una excelente opción para aplicaciones que requieran alta precisión tales como audio profesional, aplicaciones médicas y métodos de monitoreo y diagnóstico (Papamichalis and Simar 1998). Esta arquitectura usa unidades de ejecución múltiples que operan en paralelo para ejecutar varias instrucciones durante un ciclo de reloj. El paralelismo es la clave para lograr un alto desempeño, dándole a dicho DSP un lugar más allá de las capacidades de rendimiento de los diseños tradicionales(Instruments 2004). Algunas de las características más importantes del C6713 se resumen a continuación (Instruments November 2005): CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 18 Núcleo: 8 Unidades funcionales independientes: 4 ALUS (punto fijo y flotante) 2 ALUS (punto fijo) 2 Multiplicadores (punto fijo y flotante) Arquitectura load-store: 32 registros de propósito general con 32 bits para cada palabra. Trabaja con palabras de datos de 32/64 bits 8 instrucciones por ciclo de 32 bits. Características del Set de Instrucciones: Instrucciones de la IEEE 754 Precisión simple (32 bits) y doble (64 bits) Protección por desbordamiento (8 bits) Direccionamiento de bytes (8-16-32 bits) Arquitectura de la memoria: 4 Kbyte de caché de programa para mapeo directo (L1P) 4 Kbyte de cache para datos (L1D) 256 Kbyte de memoria total L2 La figura 1.6 muestra las características significativas del ´C6713, incluyendo la capacidad de la RAM, los periféricos, los tiempos de ejecución, el tipo de empaquetado y la cantidad de pines(Instruments November 2005). CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 19 CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA 20 Figura 1.6. Características del Procesador ´C6713. 1.4 Conclusiones del capítulo Para el cumplimiento exitoso de las misiones en el campo de batalla del Complejo Pechora se hace necesario e importante el estudio de la tarjeta T222, debido a que, por sus características, esta se encarga: de formar las señales de video imitadas correspondiente al objetivo, a los artículos y a la interferencia, así como, la realización del cálculo de la posición espacial de los artículos imitados. Es por esta razón que en este capítulo se hizo una descripción de las cualidades combativas y los regímenes de trabajo del Complejo de defensa antiaérea Pechora. Se expusieron algunas de las funciones de la tarjeta de cálculo T222 dentro de dicho Complejo, y se caracterizaron los DSP de acuerdo a su arquitectura, clasificación, aplicaciones más comunes y principales fabricantes. Por último se caracterizó los Procesadores de Señales Digitales de la familia TMS320CXX pertenecientes a la compañía de Texas Instruments haciendo particularmente énfasis en el DSP TMS320C6713PYPA. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 21 LA INGENIERÍA INVERSA CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓN DE LA INGENIERÍA INVERSA En este capítulo se explican algunos criterios en los que se apoya la realización de ingeniería inversa al software, tales como la reestructuración y la redocumentación del código. Se enuncian las principales características y ventajas que ofrece la herramienta de simulación Code Composer Studio (CCS), utilizada en la programación de los DSPs y en la realización de ingeniería inversa al software. Por último se mencionan algunos aspectos a tener en cuenta a la hora de trabajar con el código, tales como: la escritura de códigos C/C++, utilización de funciones especiales, y el procesamiento por lote del software, entre otros. 2.1 Definición de ingeniería inversa “Es el proceso de analizar el código, la documentación y el comportamiento de un sistema para identificar sus componentes actuales y sus dependencias para extraer y crear una abstracción del sistema e información de diseño. El sistema en estudio no es alterado, sino que se produce conocimiento adicional acerca del sistema”(Toscano 2013). 2.1.1 Fundamentos de la ingeniería inversa de software La ingeniería inversa tiene la misión de desentrañar los misterios y secretos de los sistemas en uso. Consiste principalmente en recuperar el diseño de una aplicación a partir del código fuente existente. Esto se realiza principalmente mediante herramientas que extraen información de los datos, procedimientos y arquitectura del sistema existente (Toscano 2013). Se aplica a sistemas con las siguientes características (Toscano 2013): Documentación inexistente o totalmente obsoleta. Programación en bloque de códigos muy grandes y/o sin estructurar. Inexistencia de documentación interna en los programas. Esta es incomprensible o está desactualizada. La aplicación cubre gran parte de los requisitos y del rendimiento esperado. La aplicación está sujeta a cambios frecuentes, que pueden afectar a parte del diseño. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 22 LA INGENIERÍA INVERSA Se prevé que la aplicación pueda tener larga vida. A pesar de que esta forma de trabajo es utilizada mucho en la actualidad, los fundamentos de la ingeniería inversa no se enseñan en ningún curso como asignatura oficial. Los que se inician en este mundo chocan de frente con una tarea de la cual no tienen idea de cómo embestir, y a la hora de buscar literatura, se encuentran de que existen muchas formas de hacerlo, ya que no existen reglas definidas en este mundo, cada quien utiliza el método que considera más atractivo. Su aplicación nunca cambia la funcionalidad del software sino que permite obtener productos que indican cómo se ha construido el mismo, permitiendo obtener los siguientes beneficios: Generar diferentes alternativas: desde el punto de partida del proceso, principalmente del código fuente, se generan representaciones gráficas lo que facilita su comprensión. Reducir la complejidad del sistema: al intentar comprender el software se facilita su mantenimiento y la complejidad existente disminuye. Recuperar y/o actualizar la información perdida: en la evolución del sistema se realizan cambios que no se suele actualizar en las representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño. Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede conducirnos a que surjan efectos no deseados, estas anomalías pueden ser detectadas por la ingeniería inversa. Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes de posible reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los costos y los riesgos de mantenimiento. La ingeniería inversa puede extraer información de diseño del código fuente, pero el nivel de abstracción, la completitud de la documentación, el grado con el cual trabajan al mismo tiempo las herramientas y el analista humano, y la direccionalidad del proceso son sumamente variables (Toscano 2013). Si se habla de las herramientas a usar, no existe un software específico llamado “Caja de Herramientas para Ingeniería Inversa”, dichas herramientas dependen en gran medida del trabajo CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 23 LA INGENIERÍA INVERSA que se pretenda realizar, aunque dos herramientas que no pueden faltar son la paciencia y la experiencia. El nivel de abstracción de un proceso de ingeniería inversa y las herramientas que se utilizan para realizarlo aluden a la sofisticación de la información de diseño que se puede extraer del código fuente. El nivel de abstracción ideal deberá ser lo más alto posible(Ameneyro 2012). A medida que crece el nivel de abstracción se proporciona al ingeniero de software información que le permitirá comprender más fácilmente estos programas. Por tanto, la ingeniería inversa del software aparece como un proceso que ayuda al aseguramiento de la calidad y documentación de aplicaciones con deficiencias en los modelos de análisis y diseño(Ameneyro 2012). A continuación se expondrán diferentes acciones con la finalidad de efectuar ingeniería inversa al código fuente presente en DSP de la tarjeta T222. 2.1.1.1 Ingeniería inversa para comprender el procesamiento La primera actividad real de la ingeniería inversa comienza con un intento de comprender y extraer abstracciones de procedimientos representadas por el código fuente. Para comprender las complejidades de procedimientos, se analiza el código en distintos niveles de complejidad: sistema, programa, componente, configuración y sentencia. Por tanto, la información extraída de la lectura de líneas de código son las especificaciones de diseño: modelos de flujo de control, diagramas de diseño, documentos de especificación de diseño (Pressman 2003). La funcionalidad general de todo el sistema de aplicaciones deberá ser algo perfectamente comprendido antes de que tenga lugar un trabajo de ingeniería inversa más detallado. Esto es lo que establece un contexto para un análisis posterior, y se proporciona ideas generales acerca de los problemas de interoperabilidad entre aplicaciones dentro del sistema (Pressman 2003). 2.1.1.2 Ingeniería inversa para reestructurar el código La reestructuración del software modifica el código fuente y/o los datos en un intento de adecuarlo a futuros cambios. En general, la reestructuración no modifica la arquitectura global del programa. Tiende a centrarse en los detalles de diseño de módulos individuales y en estructuras de datos locales definidas dentro de los módulos. Si el esfuerzo de la reestructuración CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 24 LA INGENIERÍA INVERSA se extiende más allá de los límites de los módulos y abarca la arquitectura del software, la reestructuración pasa a ser ingeniería directa (forward engineering) (Pressman 2003). A continuación algunos beneficios que se pueden lograr cuando se reestructura el software (Ameneyro 2012): Reduce el esfuerzo requerido para llevar a cabo las actividades de mantenimiento. Hace que el software sea más sencillo de comprobar y de depurar. Programas de mayor calidad, con mejor documentación y menos complejidad, y ajustados a las prácticas y estándares de la ingeniería del software moderna. Reduce la frustración entre ingenieros del software que deban trabajar con el programa, mejorando por tanto la productividad y haciendo más sencillo el aprendizaje. La reestructuración se produce cuando la arquitectura básica de la aplicación es sólida, aun cuando sus interioridades técnicas necesiten un retoque. Comienza cuando existen partes considerables del software que son útiles todavía, y solamente existe un subconjunto de todos los módulos y datos que requieren una extensa modificación (Pressman 2003). 2.1.1.3 Ingeniería inversa para redocumentar del código La redocumentación es también una forma de ingeniería inversa y es el proceso mediante el cual se produce documentación desde un sistema existente. Si la redocumentación toma la forma de modificación de comentarios en el código fuente, puede ser considerada una forma suave de reestructuración. Sin embargo, puede ser considerada como una sub-área de la ingeniería inversa porque la documentación reconstruida es usada para ayudar al conocimiento del programa (Pressman 2003). En el caso específico de este trabajo se analizará inicialmente la funcionalidad general de todo el sistema, para obtener una visión general de la interoperabilidad entre aplicaciones, luego se mostrará el funcionamiento de algunos bloques funcionales y se propondrán reestructuraciones del código, en vistas a corregir errores de funcionamiento, o aumentar las prestaciones del programa. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 25 LA INGENIERÍA INVERSA 2.2 Caracterización de la Herramienta de Desarrollo de Software Code Composer Studio v5.3 Code Composer Studio es un software con ambiente integrado de desarrollo, construido específicamente para DSPs. A pesar de las ventajas ofrecidas por las versiones modernas, en el presente trabajo se utilizará dicho software en su versión 5.3, debido a las dificultades que se presentan en el acceso a esta herramienta, principalmente económicas. A los efectos, esto no representa ningún obstáculo, dado que el DSP TMS320C6713PYPA, pertenece a la familia de los TMS320C67xx de la compañía de Texas Instruments, y está soportada por esta versión del software. En software, un usuario puede construir, corregir, perfilar y manejar proyectos en una sola aplicación dentro del mismo programa, sin necesidad de realizar varios pasos repartidos en distintos softwares, con la ventaja de ser modificados, si así se desea. Además, permite realizar análisis gráficos de la señal, entrada/salida de los archivos, para lo cual, utiliza las herramientas de Texas Instruments en cada procesamiento de los proyectos que en él se elaboren, es decir, es el administrador de estas herramientas: compilación, ensamblaje y creación del ejecutable (Fierro 2007). El CCS incluye además un editor C/C++ para la generación de códigos ensamblados y un software de tiempo real (DSP/BIOS), el cual tiene en cuenta el tiempo básico de simulación que se necesita para soportar cualquier aplicación de DSP (Papamichalis and Simar 1998). La figura 2.1 muestra una vista general del ambiente de trabajo con el Code Composer Studio. A la izquierda de la imagen se observa una ventana en la que se declaran los proyectos y los diferentes módulos que este posee. Los módulos están formados por el archivo C/C++ o assembler, librerías de funciones, archivos “include” y otros más específicos a la aplicación que se este realizando. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 26 LA INGENIERÍA INVERSA Figura 2.1. Ambiente de trabajo del Code Composer Studio. La ventana principal puede mostrar el editor de texto que se utiliza para escribir el código. Además puede mostrar gráficos de variables utilizadas en el DSP, un mapa de la memoria de programa I/O datos, etc. Así, el objetivo principal de Code Composer es proporcionar las herramientas de desarrollo más avanzadas y más fáciles de utilizar para el manejo del software de DSP, aumentando con esto la productividad y reduciendo al mínimo el tiempo de desarrollo. De ahí que su empleo haya sido de gran utilidad para analizar el código fuente del componente programable DSP TMS320C6713PYPA de la tarjeta T222, tarea que recoge el contenido principal de la investigación. Ahora, cuando se quiere optimizar el desempeño de un código de C/C++ se pueden emplear las opciones que ofrece el compilador o se pueden aplicar transformaciones directamente al código. Para poner en práctica esto se hace necesario conocer varios aspectos, tales como la escritura de un código C/C++ y las características del compilador. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 27 LA INGENIERÍA INVERSA 2.2.1 Características de los códigos C/C++ Para escribir un código en C/C++ es necesario tener en cuenta el tamaño del dato que se va emplear; en el caso del compilador C6000, el tamaño de los datos se define por el tipo de dato. Basado en el tamaño de los datos según su tipo, el programador debe utilizar determinadas instrucciones que le facilitaran el trabajo, y a la hora de rectificar o depurar el código, los errores detectados serán ínfimos. A continuación se muestran algunas de estas instrucciones: Para la multiplicación de puntos fijos, siempre que sea posible se debe usar los datos de tipo short, ya que este tipo de datos provee el uso más eficiente del multiplicador de 16bits del C6000. Para los contadores de bucles, se debe usar los datos de tipo intounsignedint en vez de short o unsigned short, con el objetivo de evitar el uso instrucciones innecesarias. Evite códigos que asuman que los tipos de int y long son del mismo tamaño, porque para el compilador C6000 los datos de tipo long son para operaciones de 40bits. Después de escribir el código aplicando las instrucciones antes mencionadas, se debe hacer un análisis de cada una de sus regiones, su simulación o depuración con las diferentes herramientas que CCS provee. Para realizar este análisis se pueden emplear las siguientes técnicas: Una de las mediciones preliminares del código es el tiempo que este demora en compilarse. Por ello se hace uso de las funciones clock () y printf () de C/C++ para temporizar y mostrar el desarrollo de cada región del código. Usar la compilación del código mediante la opción –mg y la ejecución de load6x con la opción –g. Habilitar el reloj y usar puntos de análisis para correr el programa con el objetivo de obtener los ciclos de reloj consumidos en cada región del código. Las áreas críticas de desarrollo en el código son la de los lazos más grandes. La forma más fácil de optimizar un lazo es mediante la extracción de este y separar los archivos que puedan ser reescritos y recompilados para luego simularlos con load6x. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 28 LA INGENIERÍA INVERSA 2.2.2 Características del compilador El compilador C6000 ofrece soporte de lenguaje de alto nivel transformando su código C/C++ en un código fuente más eficiente. Las operaciones del compilador son controladas por diferentes opciones para eliminar los fallos que pueda tener el código. Para maximizar la eficiencia del código, el compilador esquematiza en paralelo tantas instrucciones como le sea posible. Esto crea una dependencia entre las instrucciones, y como sólo las instrucciones independientes pueden ejecutarse en paralelo, la dependencia impide el paralelismo. En caso de que el compilador no pueda determinar que dos variables son independientes, asume una dependencia y escribe dos instrucciones secuencialmente. En caso de determinar que son independientes, éste las esquematiza en paralelo. 2.3 Análisis del código Cuando se quiere mejorar la forma del código existen varios métodos, entre ellos, la utilización del simulador load6x. Este simulador posee dos formas de aplicación; una de ellas es cuando se está interesado en el perfil de todas las funciones de la aplicación, donde se puede usar las opciones –g y -mg. La opción –g se corre en el simulador independiente. Los archivos originarios deben ser compilados con la opción para perfilar –mg, para trabajar en el simulador independiente. Los resultados del perfil son almacenados en un archivo con extensión .out, pero variando la extensión a .vaa. En caso de usar la opción para perfilar –mg, al compilar y acoplar el archivo example.out, es conveniente el empleo de la opción –g para crear un archivo, en el cual se podrán observar los resultados perfilados. Para obtener información de la cuenta del ciclo para una o dos funciones, o una región determinada del código con el simulador independiente, se recomienda la utilización de la opción clock () en el código C. La incorporación de la opción clock () se puede realizar de la manera que se muestra a continuación: 1. #include<stdio.h> 2. #include<time.h> CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 29 LA INGENIERÍA INVERSA 3. main(intargc,char*argv[]){ 4. constshortcoefs [150]; 5. shortoptr[150]; 6. shortstate[2]; 7. constshorta[150]; 8. constshortb[150]; 9. int c = 0; 10. intdotp[1]={0}; 11. int sum= 0; 12. shorty[150]; 13. shortscalar=3345; 14. constshortx[150]; 15. clock_tstart,stop,overhead; 16. start=clock(); 17. stop=clock(); 18. overhead=stop–start; 19. start=clock(); 20. sum = mac1(a, b, c, dotp); 21. stop=clock(); 22. printf(”mac1cycles:%d\n”,stop–start–overhead); 23. start=clock(); 24. vec_mpy1(y,x,scalar); 25. stop=clock(); 26. printf(”vec_mpy1cycles:%d\n”,stop–start–over27. head); 28. start=clock(); 29. iir1(coefs,x,optr,state); 30. stop=clock(); 31. printf(”iir1cycles:%d\n”,stop–start–overhead); 32. } 2.4 Perfeccionamiento del código C/C++ Para obtener ganancias en el desempeño del código C/C++ se debe realizar un refinamiento o perfeccionamiento del código creado en las siguientes áreas: Usando acceso de palabra para manejar datos de 16-bit almacenados en las partes altas y bajas de un registro de 32 bits. Utilizando funciones especiales para reemplazar los códigos más complicados de C/C++. Programando manualmente a partir de la creación de una secuencia adecuada de las instrucciones de manera que se garantice un mayor paralelismo. Utilizando doble acceso para operar en datos de 32 bits almacenados en un registro de 64 bits (solamente para C64x y C67x)(Instruments 2000). CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 30 LA INGENIERÍA INVERSA 3.4.1 Acceso de palabra para datos pequeños El C6000 tiene instrucciones con funciones especiales correspondientes como lo son add2, mpyhl, mpylh, que operan con datos de 16bits almacenados en la parte baja y alta de un registro de 32 bits. Cuando opera en una cadena de datos pequeños, se puede hacer uso del acceso de palabra int para leer dos valores al mismo tiempo y luego usar el compilador. Conocer el tipo de datos que se le está pasando a cada función puede mejorar el desempeño considerablemente, siendo a la vez útil a la hora de escribir funciones diferentes que manipulan diferentes tipos de datos. Si los datos pequeños siempre operan en arreglos alineados en palabra, incluso enumeradas, entonces el desempeño de la aplicación puede ser mejorado. 3.4.2 Acceso de palabra en el producto punto a punto Otras funciones especiales útiles para la lectura de datos pequeños como palabras son las funciones especiales de multiplicación. En el ejemplo que se muestra a continuación se hace uso de las funciones –mpyh y -mpy. La función -mpyh usa la instrucción MPYH del C6000 la cual multiplica los 16 bits de la parte baja de dos registros dando como resultado 32 bits. En este ejemplo se emplean dos variables de suma (sum1y sum2). Podemos percatarnos que la utilización de una sola variable de suma inhabilita el paralelismo por lo que se crea una dependencia entre lo escrito del primer cálculo y la lectura del segundo. 1. intdotprod(const short *a, const short *b, unsigned int N) 2. { 3. inti, sum1 = 0, sum2 = 0; 4. constint *i_a = (constint *)a; 5. constint *i_b = (constint *)b; 6. for (i = 0; i< (N >> 1); i++) 7. { 8. sum1 = sum1 + _mpy (i_a[i], i_b[i]); 9. sum2 = sum2 + _mpyh(i_a[i], i_b[i]); 10. } 11. return sum1 + sum2; 12. } 3.4.3 Acceso de palabra en filtro FIR Un filtro FIR puede ser optimizado con lectura de palabras de datos pequeños y de funciones de multiplicación. La versión optimizada pasa un arreglo int en lugar de lanzar los arreglos pequeños y, por consiguiente, las ayudas aseguran que los datos pasados a la función sean alineados en CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 31 LA INGENIERÍA INVERSA palabra. Suponiendo que se usa un prototipo, cada llamada a la función asegura que los arreglos sean alineados en palabra obligándole a usar arreglos int que contienen datos pequeños. 3.4.4 Utilización de funciones especiales El compilador C6000 provee funciones especiales que optimizan su código C/C++. El uso de estas funciones facilita las operaciones, reduciendo las instrucciones que no están fácilmente expresadas en el código C/C++. En algunas ocasiones una función especial específica correspondiente a las instrucciones del lenguaje ensamblador no puede ser utilizada por el compilador. En este caso, el significado del programa no varía(Instruments 2001). Tabla 2.1. Ejemplos de funciones especiales del compilador C/C++ para el TMS320C67xx Funciones Especiales del compilador C int_dpint(double) Lenguaje Descripción Ensamblador DPINT Converts 64-bit double to 32-bit signed integer, using the rounding mode set by the CSR register. uint_ftoi(float) Reinterprets the bits in the float as anunsigned integer. (Ex:_ftoi(1.0)==1065353216U) double_rcpdp(double) RCPDP Computes the approximate 64bit double reciprocal. double_rsqrdp(double src); C67x RSQRDP Computes the approximate 64bit double reciprocal square root. CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 32 LA INGENIERÍA INVERSA 3.4.5 Procesamiento por lote del software Esta es una técnica usada para programar instrucciones desde un lazo, a fin de que las múltiples iteraciones del lazo se ejecuten en paralelo. Usando las opciones del compilador –o2 y –o3, se logra procesar por lote el código con información proveniente del programa. En la Figura 2.2 se ilustra un lazo procesado por lote, donde pueden ser ejecutadas al mismo tiempo un máximo de cinco iteraciones. El estado de los lazos son representados por A, B, C, D y E. Figura 2.2. Lazo de procesamiento por lote del Software. Antes de que el lazo termine se itera varias veces. El número de iteraciones es llamado cuenta de recorrido y la variable usada para contar cada iteración es el contador de recorrido. Cuando el contador de recorrido es igual a la cuenta de recorrido, el lazo termina. Las herramientas de C6000 usan la cuenta de recorrido para determinar si un lazo, puede o no, ser procesado por lote. La cuenta mínima de recorrido para un lazo del procesamiento por lote del software es determinada por el número de iteraciones que se ejecuten en paralelo(Instruments 2001). En muchas ocasiones el compilador no puede determinar si el lazo se ha ejecutado más veces que la cuenta de recorrido mínima. Por consiguiente, el compilador generará dos versiones del lazo, uno se ejecutará si la cuenta de recorrido es menor que la cuenta segura mínima de recorrido y el otro se ejecutará si la cuenta de recorrido es igual o mayor que la cuenta segura mínima de recorrido. Conclusión, los lazos redundantes dañarán el tamaño del código y en menor grado, el desempeño. Para indicarle al compilador que no se requiere el uso de las dos versiones de lazos, se hace uso de las opciones –ms0 o –ms1. El compilador generará la segunda versión del lazo solo si este CAPÍTULO 2. ELEMENTOS Y HERRAMIENTAS A TENER EN CUENTA EN LA REALIZACIÓDE 33 LA INGENIERÍA INVERSA puede probar que la cuenta del recorrido mínimo será siempre igual o mayor que la cuenta de recorrido mínima efectiva. En caso contrario se aplicará la otra versión. 2.5 Conclusiones del capítulo El contenido principal de esta investigación se orienta hacia la rama de la electrónica digital programada, específicamente a la obtención mediante ingeniería inversa de la funcionalidad del código fuente del componente programable TMS320C6713PYPA de la tarjeta T222. De ahí la necesidad de aplicar al caso particular de la tarjeta T222 algunos criterios en los que se apoya la realización de ingeniería inversa al software a nivel internacional. Estos criterios asociados a las ventajas que ofrece la herramienta de simulación Code Composer Studio como una plataforma que concede espacio para el estudio, comprensión y simulación de códigos propician a su vez un mejor entendimiento del funcionamiento interno de dicho código. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 34 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 El código fuente de una aplicación refleja su integridad funcional y su comportamiento, sólo si se ha realizado un análisis previo de la tecnología que se describe en la programación. En el desarrollo de este capítulo se realiza un análisis de los diferentes algoritmos matemáticos modelados en el componente programable, mediante el proceso de ingeniería inversa al código, para darles un significado dentro a las operaciones que se realizan en la cabina de dirección. 3.1 Declaración de registros en el DSP de la tarjeta T222 En el código fuente del componente programable de la tarjeta T222 se definen un total de veintitrés registros para la entrada de datos al CPLD, denominadas: Flag_222com_adr data_target_R_adr data_target_V_adr data_target_H_adr data_target_P_adr data_target_beta_adr data_ante_epsil_adr data_ante_beta_adr data_F1val_adr data_F2val_adr data_F3val_adr data_F4val_adr data_F5val_adr data_F6val_adr data_F7val_adr data_F8val_adr data_fai1jun_adr data_fai2jun_adr data_epsiljun_adr data_R1_depsil_adr data_R1_dbeta_adr data_R2_depsil_adr data_R2_dbeta_adr CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 35 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 De igual forma se definen un total de quinces registros para la salida de datos: Target_R1ch_data_adr Target_R2ch_data_adr Target_fai1_data_adr Target_fai2_data_adr Rocket1_R_data_adr Rocket1_fai1_data_adr Rocket1_fai2_data_adr Rocket2_R_data_adr Rocket2_fai1_data_adr Rocket2_fai2_data_adr Analysis_R1K1_data_adr Analysis_R1K2_data_adr Analysis_R2K1_data_adr Analysis_R2K2_data_adr State_data_adr 3.2 Análisis de los códigos Si se quiere lograr una correcta y completa interpretación de cada una de las fórmulas que se encuentran documentadas en el código fuente del componente programable, es importante señalar el sistema geométrico con que se trabaja. En los códigos se hace referencia al sistema de coordenadas esféricas como el sistema geométrico que se utiliza para determinar la posición de un punto en el espacio mediante una distancia y dos ángulos. En el análisis de las ecuaciones se toma como punto de inicio o centro para las mediciones, el punto donde se ubica la Estación de Conducción de Cohetes (ECC). Desde ese punto se miden las coordenadas del blanco y del cohete que quedan caracterizadas por un azimut o coordenada esférica por el plano horizontal, un ángulo de elevación o coordenada esférica por el plano vertical y una distancia o dimensión del espacio, en línea recta, entre la ECC y la posición del blanco o del cohete. En la siguiente figura se muestran los sistemas antes mencionados. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 36 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Figura 3.1 Sistemas de coordenadas rectangulares. Relacionado con el lenguaje de programación utilizado en el código, se hace necesario tener en cuenta aspectos como: la aritmética, las reglas de procedencia de operadores, los operadores de igualdad y relacionales, además de las estructuras de selección If y If/Else. A continuación se realizará el proceso de ingenieria inversa al código con el fin de obtener las ecuaciones y las varaibles que demuestran la formación de las señales para los objetivos y los artículos imitados. 3.2.1 Void NMI_ISR(void) La interrupción void NMI_ISR(void) dentro del programa principal (main) identifica el proceso de exploración de la antena UV11 en régimen de acompañamiento. Dicha antena explora el espacio con una frecuencia de 16 Hz, de ahí que el período de duración de este proceso sea igual a 62.6 ms. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 37 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Por la importancia que demuestra especificar de forma correcta el orden en el cual se deben de ejecutar las acciones, y con vistas a lograr una mejor interpretación de la funcionalidad del codigo fuente, se procede a dividir en subepigrafes el mismo. 3.2.1.1 F_222com.BIT.B12==1 Paso #1: Si se cumple la condición de Bit.B12==1 (activo): De las expresiones anteriores se deriva que las variables ANTENA.beta y ANTENA.epsil representan el ángulo correspondiente al proceso de exploración de las antenas por el plano β (ángulo horizontal) y por el plano ε (ángulo de elevación) en cada instante de tiempo. La variable dx se emplea para leer y guardar el dato que se encuentra en la dirección de registro correspondiente a data_ante_epsil_adr, en primer lugar, y seguidamente a data_ante_beta_adr. El dato que se encuentra guardado en dichos registros corresponde a un número. Paso #2: Si no se cumple que Bit.B12==1: La variable ddx realiza la misma función que dx, analizada en el paso anterior. Se emplea para leer el dato que se encuentra guardado en el registro REG16 (data_ante_epsil_adr). Destacar que inicialmente ddx se encontraba cargada con el valor de cero. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 38 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 El paso que le sigue a continuación tiene la función de rectificar y comprobar los valores obtenidos como resultado de las ecuaciones anteriores. Si ANTENA.epsil>=180.0: Si ANTENA.beta<0.0: Si ANTENA.beta>=360.0: De lo contrario, si ANTENA.beta no cumple con ninguna de estas dos condiciones, para la cual se calculó inicialmente, podemos afirmar que β se encuentra dentro de los rangos específicos de 0º ≤β< 360º, y el nuevo valor de ANTENA.beta será calculado de la siguiente manera: Las ecuaciones que a continuación se describen, corresponden al proceso de obtención de los mandos de dirección K1 y K2 para cada uno de los cohetes a partir de la manipulación por frecuencia. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 39 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Para entender mejor como ocurre este proceso es importante conocer que los mandos que van hacia el descifrador sufren en la T223 el mismo proceso que se realiza en el cifrador (T811); primeramente se convierten en intervalos de tiempo, proceso que es denominado “modulación por la duración del impulso”. Estos intervalos de tiempo o sucesión de impulsos, tanto el de polaridad positiva (T1) como el de polaridad negativa (T2), se modulan con oscilaciones de frecuencias diferentes. Esta explicación se puede entender mejor mediante la ilustración de la figura 3.1 que a continuación se muestra. Figura 3.2 Manipulación por frecuencia. Por lo tanto cada mando K1 y K2 es una sucesión de dos frecuencias, lo que se puede evidenciar mediante las expresiones siguientes: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 40 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Resumiendo, para los mandos R1K1 y R1K2 del primer canal se emplean los pares de valores de frecuencias f1val, f2val y f3val, f4val respectivamente; mientras que para los mandos R2K1 y R2K2 del segundo canal se emplean los valores f5val, f6val y f7val, f8val. De las ecuaciones anteriores podemos asumir que ROCKET1.K1 y ROCKET1.K2 corresponden a los mandos de dirección K1, K2 obtenidos para el cohete1, mientras que ROCKET2.K1 y ROCKET2.K2: son los mandos de dirección K1, K2 para el cohete2. Los mandos K1 y K2, contienen las magnitudes y el sentido en que debe moverse el cohete en el espacio. La variable dx se utiliza para leer y cargar los datos que se encuentran guardados en los registros desde (data_F1val_adr) hasta (data_F8val_adr). 3.2.1.2 F_222com.BIT.B9==1 El grupo de pasos lógicos que a continuación se describen, responden al proceso de posicionamiento del blanco, donde, es necesario la determinación del azimut y el ángulo de inclinación del mismo, además de la distancia inclinada al punto de encuentro, la altura, los mandos de dirección y otros elementos que son de vital importancia para su ubicación. Si se cumple F_222com.BIT.B9==1, la estación se encuentra en Seguimiento Automático (SA) del blanco imitado y se procede a elaborar la posición de los blancos imitados en cada instante de tiempo para indicar el paso correcto de las señales por los canales del receptor. Su función es mostrar el correcto funcionamiento del Dispositivo de elaboración de los mandos (DEM) y del Dispositivo Radiotransmisor de los mandos (DTM). Todo este proceso se le llama “control funcional de la ECC en baja frecuencia”. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 41 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 A continuación se comprueba si F_222com.BIT.B0 está en un nivel bajo de señal (=0) o alto (=1). Si se cumple que F_222com.BIT.B0==0, se asume que el blanco está estático y se procede con los cálculos correspondientes al paso número uno, de lo contrario dicha condición sería falsa (=1) y se saltaría a las ecuaciones del paso número dos. Cuando se dice que el blanco se encuentra estático se quiere expresar que la posición tanto por el plano ε como por azimut (β) no experimenta variación alguna, no siendo así para la posición por distancia. Paso #1 (blanco estático): De las expresiones anteriores se deriva que las variables ANTENA.beta y ANTENA.epsil representan la posición correspondiente al proceso de exploración de las antenas por el plano β (ángulo horizontal) y por el plano ε (ángulo de elevación). De igual forma las variables TARGET.beta0, TARGET.beta corresponden a la posición del blanco en su estado final e inicial respectivamente por el plano horizontal (β), mientras que TARGET.epsil es la posición por el plano ε. Es importante destacar que se está trabajando con la condición de blanco fijo, de ahí que la posición inicial y final para el objetivo sea la misma por el plano horizontal. La distancia inclinada medida desde la estación hasta el punto donde se encuentra el blanco imitado queda determinada por la variable TARGET.R, mientras que la altura que se le introduce al blanco se identifica por la variable TARGET.H. De tipo doublé es la variable cntsim y su empleo en el código fuente significa: la distancia perpendicular desde el curso de vuelo del blanco hasta la ECC, o parámetro del objetivo imitado (P) como también se le conoce. Paso #2: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 42 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Este paso corresponde al posicionamiento del blanco en cada instante de tiempo para el caso en que este se encuentre en movimiento. La variable TARGET.T_Rx significa la distancia horizontal medida desde la estación hasta el punto donde se encuentra la proyección en el plano horizontal del objetivo imitado (R OBJ HOR). Consecutivamente se compara la distancia inclinada medida desde la ECC hasta el punto donde se encuentra el objetivo imitado, donde si TARGET.R>5000.0: En dependencia del paso que se haya ejecutado y del valor obtenido en cada uno para TARGET.beta y TARGET.epsil se procede a calcular de la siguiente forma. Si delta_beta<=-180.0: Si delta_beta> 180.0: De lo contrario: De las ecuaciones anteriores se deduce que las variables delta_beta y delta_epsil significan la diferencia que existe, en la posición angular, entre la antena y el blanco por cada uno de los CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 43 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 planos, con la finalidad de corregir la posición del objetivo y de poder realizar el fuego lo más certero posible. Si f1<=0.0: Si f1>2250.0: Si f2<=0.0: Si (f2>2250.0) Las variables f1 y f2 corresponden a la posición del blanco por los planos Ф1 y Ф2 respectivamente. Sus valores, en coordenadas, se guardan en los registros REG16(Target_fai1_data_adr) y REG16(Target_fai2_data_adr). 3.2.1.3 F_222com.BIT.B4==1 El segmento de código y las ecuaciones que se describen a continuación corresponden al proceso de entrenamiento de la estación S125MIA en tiempo de paz. Dichas ecuaciones deben responder a la formación de las señales para los blancos imitados. Si se cumple que F_222com.BIT.B3==1 se asume que el objetivo está fijo y se procede con las asignaciones del paso uno. De no cumplirse la primera condición el código pasa a comprobar si F_222com.BIT.B11==1. Las ecuaciones ajustadas a esta condición responden al paso dos para simular el fuego contra el blanco. Como una última acción a realizar, en caso de no cumplirse CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 44 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 ninguna de las condiciones anteriores, aparece el paso tres. A continuación se describen las fórmulas contenidas en cada uno de los pasos: Paso 1 (blanco fijo): Si F_222com.BIT.B8==0: De lo contrario: La variable TARGET.epsiljun identifica al dato que se obtiene como resultado de un conteo de los impulsos de reloj de 62.5KHz, el cual comienza con la llegada del Blanck ε (comienzo del paso directo) y termina con la llegada de la marca vertical (MV) por el plano ε. Este número del conteo es la separación entre el comienzo del barrido y la MV. Paso 2: Si se cumple que F_222com.BIT.B11==1: Si delta_beta<=-180.0: Si delta_beta> 180.0: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 De lo contrario: Si se cumple que F_222com.BIT.B8==0, se deshabilitan los puertos de control: De lo contrario se habilitan: Si f1<=0.0: f1=0.0 Si f2>2250.0: f2=2250.0 Si f2<=0.0: f2=0.0 Si f2>2250.0: f2=2250.0 Paso 3: 45 CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 46 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 3.2.1.4 (F_222com.BIT.B4==1 || F_222com.BIT.B9==1) Al comienzo de este segmento de programa se utiliza el operador lógico ║ (OR lógico) de la siguiente forma: If(F_222com.BIT.B4==1 || F_222com.BIT.B9==1). Dicho operador permite comprobar que alguna o ambas de las dos condiciones sean verdaderas, antes de que se seleccione cierto camino de ejecución. Este enunciado también contiene dos condiciones simples. La condición F_222com.BIT.B4==1 se evalúa para determinar si la estación S125MIA está en el modo de entrenamiento, mientras que la condición F_222com.BIT.B9==1 se evalúa para determinar si se está trabajando con el régimen de control funcional de la ECC. Si cualquiera o ambas de las condiciones simples son verdaderas se pasará a trabajar con los parámetros que caracterizan al cohete. Tabla 3.1 Tabla de verdad correspondiente al operador OR lógico (║). Expresión1 Expresión2 Expresión1 ║ Expresión2 0 0 0 0 1 1 1 0 1 1 1 1 Para que el cohete imitado describa la misma trayectoria de vuelo que la del cohete real, se debe realizar el cálculo de la posición espacial de los cohetes imitados, a partir de los mandos que se le envían a un supuesto cohete real con dichos mandos. Los cálculos deben responder también a la aerodinámica de vuelo del cohete, que a su vez tiene que ver con el coeficiente transferencial del CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 47 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 mismo. A continuación se describen cada una de las ecuaciones relacionadas con el cálculo de la posición espacial para cada uno de los cohetes. Trabajo con el Cohete1: Paso 1: Si se cumple que F_222com.BIT.B1==0, entonces: Donde: ROCKET1.t es la variable que se utiliza para determinar la constante aerodinámica del cohete (Tv). De esta manera el programa se asegura que el cohete número uno no ha sido aún activado y por lo tanto se asigna el valor de 0 a dicha variable. De lo contrario F_222com.BIT.B1 se encuentra en un nivel alto (==1), y se procede de la siguiente forma: El operador de asignación (+=) añade el valor de la expresión, a la derecha del operador, al valor de la variable ROCKET1.t que se encuentra a la izquierda, y almacena el resultado en dicha variable. Si ROCKET1.t <5.0 entonces: De lo contrario: Donde: ROCKET1.k es la variable que se utiliza para determinar el coeficiente transferencial para el movimiento del Cohete. De esta forma se puede comprobar que mientras mayor sea la constante aerodinámica del cohete (ROCKET1.t) menor será el coeficiente transferencial (ROCKET1.k) que caracteriza al cohete. Paso 2: Si se cumple que F_222com.BIT.B5==0 se tiene que: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 48 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Donde dx es la variable que se emplea para leer y cargar el dato que se encuentra guardado en la dirección de registro correspondiente a data_R1_depsil_adr y data_R1_dbeta_adr respectivamente. De igual manera ROCKET1.epsil y ROCKET1.beta son las variables que se utilizan para determinar la posición del cohete, correspondiente al proceso de exploración de la antena, sólo que la primera es por el plano ε (ángulo de elevación) y la otra es por el plano β (ángulo horizontal). Si F_222com.BIT.B5==1: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 49 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 La variable cntr1 es de tipo int y se maneja dentro del código para guardar el valor que resulta de aplicar floor. Por su parte, floor es una función concerniente a la biblioteca <math.h> que se utiliza para redondear a la variable ROCKET1.t al entero más grande no mayor que ROCKET1.t (ej. Floor (9.2) es 9). Por otro lado se encuentran las variables denominadas ROCKET1.K1 y ROCKET1.K2 que sirven para identificar los mandos K1 y K2 respectivamente. Dichos mandos contienen las magnitudes y el sentido en que debe moverse el artículo en el espacio para disminuir el error lineal entre su posición calculada y la real. Paso 2.1: De las ecuaciones anteriores se deriva que las variables delta_r1_epsil y delta_r1_beta se identifican como la nueva posición que tiene el cohete por el plano ε (ángulo de elevación) y por el plano β (ángulo horizontal) respectivamente. Si se cumple que delta_r1_beta<=-180.0 se tiene que: Si se cumple que delta_r1_beta> 180.0 se tiene que: De lo contrario: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 50 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Si f1r1<=0.0 entonces: Si f1r1>2250.0 entonces: Si f2r1<=0.0 entonces: Si f2r1>2250.0 entonces: Las variables f1r1 y f2r1 determinan la posición del cohete por los planos Ф1 y Ф2, relativos al barrido de la antena UV11. Trabajo con el Cohete2: Para el trabajo con el Cohete2 se procede de la misma forma que para el Cohete1. Paso 1: Si se cumple que F_222com.BIT.B2==0, entonces: De lo contrario si F_222com.BIT.B2==1, entonces: Ahora si: entonces: CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 De lo contrario: Paso #2: Si se cumple que F_222com.BIT.B6==0 entonces: De lo contrario si F_222com.BIT.B6==1 entonces: 51 CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Paso 2.1: Si se cumple que delta_r2_beta<= -180.0 entonces se ejecutará la siguiente acción: De lo contrario si delta_r2_beta > 180.0 entonces ejecutar: De lo contrario: Si se cumple que f1r2<=0.0 entonces: De lo contrario si f1r2>2250.0: 52 CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 53 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 Si se cumple que f2r2<=0.0 entonces: De lo contrario si f2r2>2250.0: 3.2.2 Void EInt5_ISR(void) Si se cumple F_222com.BIT.B9==1, se procede a elaborar la distancia inclinada (TARGET.R) para el momento en que la estación se encuentra en control funcional. Si F_222com.BIT.B0==0, se asume que el blanco está fijo: Donde la distancia inclinada desde la estación hasta el punto donde se encuentra el blanco imitado queda determinada por la variable TARGET.R y toma valor de 32 km. De lo contrario se asume que el blanco se encuentra en movimiento y con una velocidad de 420m/s. Seguidamente se compara la distancia al punto de encuentro con 5 KM de la siguiente forma: Si TARGET.R>5000.0: Se puede apreciar que si la distancia al punto de encuentro TARGET.R es mayor que 5 Km se determina la nueva posición del blanco restándole la velocidad que trae este último. Entrenamiento de la estación: Si se cumple que F_222com.BIT.B3==1 se asume que el objetivo está fijo y la distancia al punto de encuentro TARGET.R toma valor de 20Km. Esto quiere decir que se colocó un blanco a esa distancia. CAPÍTULO 3. ASIMILACIÓN DE LA FUNCIONALIDAD DEL CÓDIGO FUENTE PRESENTE EN EL 54 COMPONENTE PROGRAMABLE DSP DE LA TARJETA T222 De no cumplirse la primera condición el código pasa a comprobar si F_222com.BIT.B11==1. De ser verdadera se simula el fuego contra el blanco en movimiento y la nueva distancia al punto de encuentro queda determinada por: Como una última acción a realizar en caso de no cumplirse ninguna de las condiciones anteriores, aparece el paso siguiente: 3.3 Conclusiones del capítulo El empleo del DSP TMS320C6713PYPA dentro de tarjeta T222 facilita el desarrollo de algoritmos matemáticos de alta precisión y velocidad que por sus complejidades, no pudieran desarrollarse con otros procesadores. Estos algoritmos están destinados al direccionamiento de la rampa de lanzamiento y de la antena, para el cálculo de velocidad, ángulo horizontal, ángulo de inclinación, parámetro y distancia al punto de encuentro. Otros están relacionados con los mandos y las señales de dirección correspondientes al disparo y a la ubicación del blanco. CONCLUSIONES Y RECOMENDACIONES 55 CONCLUSIONES En el presente trabajo se desarrolló la asimilación del funcionamiento del componente programable DSP TMS320C6713PYPA de la tarjeta T222, a partir del proceso de ingeniería inversa a su código fuente no documentado. Durante su realización fue posible arribar a las siguientes conclusiones: La tarjeta T222 como componente de la cabina de mando modernizada, tiene la importante función de formar las señales de video imitadas correspondientes al objetivo, a los artículos y la interferencia, para el control funcional de la estación y en el caso de los entrenamientos a las dotaciones para simular un tiro real. Se empleo como herramienta de simulación el software Code Composer Studio, ya que permitió el análisis del código fuente, evidenciándose su utilidad en la realización de la ingeniería inversa. La ingeniería inversa al software comienza con la comprensión del código fuente, y mediante la reestructuración del código y la redocumentación se logra preservar las características externas y la generación de información del sistema existente. Se evidenciaron cada uno de los algoritmos matemáticos implementados en dicho procesador, quedando documentada la funcionalidad del componente DSP TMS320C6713 de la tarjeta T222. Se logró la asimilación de los cálculos matemáticos referentes al direccionamiento de la antena, del blanco y del cohete, así como también de los parámetros: ángulo de inclinación, ángulo horizontal, distancia al punto de encuentro, velocidad, mandos y señales de dirección presentes en el código del programa principal. CONCLUSIONES Y RECOMENDACIONES 56 RECOMENDACIONES Con la intención de seguir perfeccionando el estudio que se ha realizado en este trabajo sobre el código fuente del DSP TMS320C6713PYPA de la tarjeta T222, se propone: A partir de la identificación de los algoritmos implementados, proponer un conjunto de pruebas de hardware que permitan validar la correspondencia entre los aspectos teóricos identificados y los resultados prácticos. Continuar profundizando en el funcionamiento de los demás componentes de la tarjeta T222, a través de la ingeniería inversa, para alcanzar un dominio completo del funcionamiento de la misma. REFERENCIAS BIBLIOGRÁFICAS 57 REFERENCIAS BIBLIOGRÁFICAS Ameneyro, A. (2012). Reingeniería para la implementación de un Web Feature Service. Bertini, G., et al. (2012). “Microprocessori per DSP. Modelli recenti e tools di sviluppo: alcune applicazioni nel settore telecom.”. Cubadefensa (2012). "Sitio Web de la defensa de Cuba.". Retrieved 11/01/2014, from http://www.cubadefensa.cu/. Damián, M. (2006). ESTUDIO COMPARATIVO DE LOS DSPs DEL MERCADO. Dpto. Ingeniería de Telecomunicación, Universidad de Jaén. Fierro, M. A. T. (2007). Desarrollo de tutorial multimedial para el diseño de proyectos con Code Composer. Escuela de Electricidad y Electrónica. Valdivia Chile, UNIVERSIDAD AUSTRAL DE CHILE. García, S. E. (Septiembre de 2009). Introducción a microDSP y familia C67xx. Buenos Aires. Instruments, T. (1988) Third Generation TMS320. Instruments, T. (1990). TMS320 Family. DSP Characteristics. REFERENCIAS BIBLIOGRÁFICAS 58 Instruments, T. (1992). "TMS320C6713PYPA FLOATING-POINT DIGITAL SIGNAL PROCESSOR." Retrieved 7/05/2014, from http://www.ti.com Instruments, T. (2000). TMS320C6000 Programmer´s Guide. Instruments, T. (2001). ""TMS320C6000 Optimizing Compiler User´s Guide"." Instruments, T. (2004). "Code Composer Studio v3. 0 Getting Started Guide." Instruments, T. (November 2005). "TMS320C6713PYPA167 Datasheet ". Retrieved 22/05/2014, from http://html.alldatasheet.es/html- pdf/227395/TI/TMS320C6713PYPA167/486/12/TMS320C6713PYPA167.html. López, E. (2010). La ingeniería inversa como metodología para potenciar la enseñanza de la metrología. México Papamichalis, P. and J. R. Simar (1998). “The TMS320C30 floating-point digital signal processor” Micro: 13-29. Pierrat, G. G. (2013). TAREA TÉCNICA PARA LAS TESIS DE LOS CADETES VINCULADOS A LA TAREA TRIUNFO. Pierrat, G. G. (2014,a). "Generalidades de la Estación de Conducción de Artículos ECC S125MIA “Pechora”." Pierrat, G. G. (2014,b). "Ayuda para la confección de la Tesis." REFERENCIAS BIBLIOGRÁFICAS 59 Pierrat, G. G. (2014,c). "Antecedentes de la T222." Pierrat, G. G. (2014,d). "Las señales de entrada y salida a la T222." Pierrat, G. G. (2014,e). "“SISTEMA DE CÁLCULO DE LAS COORDENADAS ESPACIALES DEL ARTÍCULO IMITADO”." Pierrat, G. G. (2014,f). "Información adicional de la T223." Pressman, R. (2003). "Software Engineering: A Practitioner’s Approach with Bonus Chapter on Agile Development." McGraw-Hill Science/Engineering/Math. Retrieved 14/11/14, from http://dl.acm.org/citation.cfm?id=995775 SPECTRUM DIGITAL, I. (November 2003). TMS320C6713 DSK Technical Reference: 52. Torres, R. L. C. (2008). Módulo para el análisis, visualización y caracterización de señales y sistemas apoyado del DSP TMS320VC5402 Texas Instruments y Matlab Facultad de Ingeniería Electrónica. Bolivia, Universidad Pontificia Boivariana. Toscano, F. M. (2013). "Qué es la ingeniería inversa." Retrieved 10/03/14, from http://boards5.melodysoft.com/uteci_sistemas/que-es-la-ingenieria-inversa-extracto39.html Vázquez, J. J. D. (2010) Ingeniería Inversa: Metodología y aplicaciones FORO DE ANÁLISIS DE INVESTIGACIÓN, DESARROLLO Y GESTIÓN TECNOLÓGICA EN ITESCA 6-10 REFERENCIAS BIBLIOGRÁFICAS 60 ZAÑARTU, M. (Noviembre de 2011). INTRODUCCIÓN AL CODE COMPOSER STUDIO Y AL DSK TMS320C6713. Valparaíso, UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA: 19. ANEXOS 61 ANEXOS Anexo I Señales de entrada y salida a la T222. Esta tarjeta tiene dos conectores: el Xp1 recibe los voltajes de la fuente de alimentación (+12v, -12v, +5v y Tierra) y el Xp2 se utiliza para las señales de entrada y salida. Las señales que entran y salen por el conector Xp2, se muestran en la siguiente figura y se describen de la manera siguiente: Videoseñales de salida de la T222 (puntos 24, 12, 25 y 13). Estas son las señales que elabora la T222 cumpliendo su función en el sistema imitador. Estas señales se envían hacia la T311, donde ANEXOS 62 se les introduce la atenuación necesaria para los entrenamientos y donde se “rellenan” con frecuencia intermedia (solo en el caso de las señales de los canales principal y A/F, y la señal de interferencia imitada), para su entrega al sistema receptor de la estación. Señales SB (puntos 18, 6, 19, 7, 20, 8, 21, 9, 22, 10, 23 y 11). Estas son las entradas por bus serie SB1, SB8, SB11, SB14, SB6 y SB16. Impulso MVε (punto 4). Por este punto llega el impulso de la “marca vertical” por el plano ε (que representa la directriz del sector de barrido del diagrama direccional de la antena UV10) si la estación está en régimen de “Localización”. Impulso MV F1 F2 (punto 15). En caso de que la estación se encuentre en el régimen de “Acompañamiento”, por este punto llegan los impulsos de la “marca vertical” por los planos inclinados F1 y F2 (que representan la directriz de los sectores de barrido del diagrama direccional de la antena UV11 por dichos planos inclinados). Blanqueo ε (punto 16). Estos son impulsos que se elaboran en el sincronizador (T221) a partir de los impulsos que vienen desde los emisores que están en los mecanismos de exploración de la antena UV10. El “Blanqueo ε” es el impulso que permanece en “1” durante el tiempo de paso inverso del barrido (exploración del diagrama direccional) de la antenaUV10 (en el régimen de localización). Y por tanto marca el inicio del sector de exploración, por el plano épsilon, de la antena UV10. Blanqueos F1 y F2 (puntos 14 y 2). Estos son impulsos que se elaboran en el sincronizador (T221) a partir de los impulsos que vienen desde los emisores que están en los mecanismos de exploración de la antena UV11. El “blanqueo F1” y el “blanqueo F2”, son los impulsos que permanecen en “1” durante el tiempo de paso inverso de los barridos por los planos F1 y F2 de la antena UV11. Estos se emplean para marcar el inicio de la exploración (inicio del barrido angular de los monitores) por los planos F1 y F2. Ro UK (punto 3). Este es un impulso de distancia; es decir, aparece con período igual al de los impulsos de sondeo de la estación. Este impulso marca la distancia “cero”. ANEXOS Anexo II Diagrama en bloques simplificado de C67XX. Las unidades funcionales L, S y M ejecutan instrucciones de punto flotante. 63 ANEXOS 64 Anexo III Forma de exploración del espacio. Anexo IV Sistema Entrenador o Imitador UK40. En el complejo Pechora sin modernizar (el original ruso) el Sistema entrenador o Imitador se encuentra implementado en un armario; el armario UK40. Este armario recibe señales desde el ANEXOS 65 Dispositivo de Dirección de las antenas y las Rampas de lanzamiento, para obtener la información de la posición que tienen las antenas y elaborar las señales del objetivo y de los artículos relacionadas con el movimiento de las manivelas. También el UK40 recibe los mandos de dirección desde el Descifrador del DTM, con los cuales se elaboran las trayectorias de vuelo de los artículos. La formación de las envolventes de los objetivos y de la interferencia la realiza el bloque UK43; estas envolventes se convierten en señales de video en el bloque UK42, y se convierten en radioimpulsos de FI en el bloque UK41. En el UK44 se forma el programa de movimiento de los objetivos. Por su parte, la señal de los artículos se forma completamente en el bloque UK45. Anexo V. Modelo electrónico del artículo Para que el cohete imitado se comporte aerodinámicamente de la misma manera que el cohete real, debe recibir los mandos de dirección, de la misma forma que los recibe el artículo real, y ANEXOS 66 convertirlos en una posición real en el espacio. Esto se denomina “modelo electrónico” del artículo y se realiza según el siguiente esquema.