Ingeniería Inversa al Componente programable TMS320C6713PYPA de la Tarjeta T222 del Complejo Pechora
77
0
0
Texto completo
(2) 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.
(3) 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.
(4) 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í..
(5) ii. DEDICATORIA. A mis padres… A mis hermanos del alma Marcos y Maibel. A toda mi familia….
(6) 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!.
(7) 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.
(8) 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”. ..
(9) 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.
(10) 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.
(11) 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.
(12) 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.
(13) 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.
(14) 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?.
(15) 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..
(16) 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.
(17) 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)..
(18) 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..
(19) 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..
(20) 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)..
(21) 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)..
(22) 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..
(23) 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)..
(24) 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.
(25) 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).
(26) 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..
(27) 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..
(28) 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):.
(29) 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)..
(30) CAPÍTULO 1. LOS DSP EN EL COMPLEJO PECHORA. 19.
(31) 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..
(32) 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..
(33) 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.
(34) 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.
(35) 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..
(36) 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..
(37) 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..
(38) 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..
(39) 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>.
(40) 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)..
(41) 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.
(42) 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..
(43) 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.
(44) 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..
(45) 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.
Figure
+7
Documento similar