Microprocesadores. Guía 1 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Laboratorio de Microprocesadores (Aula 3.23). Tema: Introducción a CodeWarrior IDE Objetivos generales Identificar las partes principales de la ventana de CodeWarrior IDE y su simulador utilizando el proyecto de ejemplo. Objetivos específicos Que el estudiante: Haga uso de Codewarrior IDE para crear un proyecto de programación en ensamblador para HCS12X. Analice la plantilla de un programa de ejemplo generado por Codewarrior para familiarizarse con sus partes. Simule la ejecución del programa para observar la representación de los registros y la memoria del microprocesador. Configure la herramienta de visualización para representar los valores de la memoria. Introducción teórica Los microprocesadores en su manera más primitiva se programan modificando los números que se encuentran en su memoria, algunos números le representan al procesador códigos de operación con cierta función, que puede ser, mover, sumar, restar, complementar. Estos números son unos y ceros en conjuntos de 8 bits (bytes) que el fabricante coloca en una tabla llamada “Set de Instrucciones”. Los programadores crean un compilador que traduce de esta tabla las funciones en forma de nemónicos (palabras que ayudan a recordar la función). Los programas compiladores permiten “traducir” un archivo de entrada de texto que contiene todas las instrucciones, en un archivo binario que modificará la memoria del procesador para realizar una tarea. El Codewarrior IDE permite realizar la anterior operación en lenguaje ensamblador, C ó C++, detecta errores de sintaxis en las instrucciones escritas en el archivo de texto y permite Microprocesadores. Guía 1 2 simular el comportamiento del programa para detectar posibles errores de lógica. Otra de sus funciones más importante es comunicarse con el núcleo procesador y descargar el archivo binario compilado hacia la memoria para luego ejecutarlo, ya sea paso a paso o de una sola vez. En esta práctica no se requerirá experiencia de programación en ensamblador, solamente será una manera de tener el primer contacto con la herramienta de compilación y el simulador, que serán utilizados a lo largo del curso. Materiales y equipo • Computadora con Windows XP o superior con el software CodeWarrior IDE Special Edition 5.1. Procedimiento 1. Encienda la computadora, accederá al sistema operativo Ubuntu, siempre deberá utilizar el usuario llamado “usuario0”, la contraseña es “usuario”. 2. Al tener cargado el escritorio de Ubuntu podrá observar en el escritorio un icono que tiene un cubo de color azul claro con nombre “Win 7”, dé doble clic sobre este icono para cargar una máquina virtual de Virtualbox con Windows 7. 3. Al haber cargado por completo todo Windows, escriba en el menú inicio “Codewarrior IDE” para acceder al programa. 4. Podrá observarse la siguiente figura, la ventana principal de Codewarrior con el asistente de creación de proyectos. Microprocesadores. Guía 1 3 Figura 1. Ventana principal de Codewarrior IDE. 5. Dé clic sobre el botón “Create New Project” para comenzar la edición de un programa en ensamblador, aparecerá luego la siguiente figura: Figura 2. Elección del dispositivo y el tipo de conexión 6. De esta ventana habrá que elegir un nombre del núcleo procesador a programar. Seleccione la familia HCS12X y de ésta HCS12XD Family y el MC9S12XDT512. En cuanto a la forma de conexión en el espacio “Connections” seleccione “Full Chip Simulation”. Puede auxiliarse con la siguiente figura: 4 Microprocesadores. Guía 1 Figura 3. Selección de Dispositivo MC9S12XDT512 y Tipo de Conexión Full Chip Simulation. 7. Dé clic en siguiente y en la siguiente ventana se consultará acerca de si es un proyecto para un núcleo o para usar el otro núcleo procesador llamado XGATE, por el momento se utilizará solamente el núcleo HCS12X como se muestra en la Figura 4. Figura 4. Consulta si el proyecto será de uno o dos núcleos. 8. Dé clic en siguiente, la consulta de esta ventana es sobre cuál es el lenguaje de programación que se usará. Por defecto aparece seleccionado C, quite esa selección dando clic sobre la casilla y luego se habilitará la opción “Absolute Assembly” que es lenguaje ensamblador con la definición de las direcciones en forma absoluta, dé clic sobre esta casilla para que el proyecto sea en lenguaje ensamblador. Microprocesadores. Guía 1 5 Figura 5. Parámetros del proyecto: Lenguaje y nombre del proyecto. 9. En esta misma ventana de la Figura 5 se le pueden asignar nombre al proyecto y la ruta dónde será guardado dele el nombre “Simulador.mcp”. Figura 6. Selección de Lenguaje ensamblador, y cambio de nombre al proyecto. 10. Dé clic en siguiente y en esta ventana se nos pide insertar algún archivo de texto en ensamblador al proyecto. Esta opción será útil cuando se tenga ya un programa previo y queramos adjuntarlo al proyecto, en este momento se dará clic en siguiente. 6 Microprocesadores. Guía 1 Figura 7. Añadir un archivo de programa adicional al proyecto. 11. La última ventana del asistente consulta si se desea utilizar las opciones de desarrollo rápido de aplicaciones. No se explorará esta opción deje la opción por defecto “None”. Puede dar clic en finalizar. Figura 8. Desarrollo rápido de aplicaciones. 12. Después de haber finalizado el asistente nos aparecerá la ventana de edición de programa de Codewarrior. Microprocesadores. Guía 1 7 Figura 9. Codewarrior IDE con archivo main.asm creado. 13. Observe en la Figura 9 cómo en la parte izquierda de la ventana se encuentra el árbol del proyecto, donde está la carpeta “Sources” que es donde se guardan los códigos fuente. En este caso se ha creado un programa de ejemplo llamado “main.asm”. Se puede explorar este código dando doble clic sobre el icono de ese archivo. 14. Analice ese código y observe las partes de las que está compuesto. El punto y coma antes algunas línea es un comentario. 15. El programa realiza el cálculo de la Sucesión de Fibonacci. Para saber de qué trata esta sucesión consulte el siguiente sitio web: http://www.disfrutalasmatematicas.com/numeros/fibonacci-sucesion.html 16. Hay dos variables de 16 bits llamadas Counter y FiboRes, Counter almacenará el “n” de la sucesión y FiboRes tendrá el resultado. Se compilará el programa dando clic sobre el ícono Make o presionando la tecla F7. 17. Make nos dirá si hay errores de compilación, para una muestra de esto, cambie la palabra CLI por CLA y vuelva a realizar el paso 16. Deberá aparecer un mensaje como el siguiente y resaltará en el texto con una flecha roja donde se encuentre el error: Figura 10. Errores mostrados por el compilador. 18. Vuelva a cambiar CLA por CLI y compile nuevamente. Con esto se ha generado un archivo binario llamado Project.abs que se descargará a la memoria del microprocesador simulado Microprocesadores. Guía 1 8 mediante el comando Debug o mediante presionar la tecla F5. Al hacerlo aparecerá la ventana de depuración que se muestra en la Figura 11. Figura 11. Ventana del Simulador y depurador. 19. Maximice esta ventana para apreciar mejor sus partes. En la siguiente tabla se da una breve descripción de las más utilizadas en el proceso de depuración. Parte Descripción Barras de Menú y de Herramientas: Contienen los comandos esenciales para la depuración del programa y la personalización de la visualización. Ventana Source: Contiene la misma información del archivo fuente, con la diferencia que se tiene una línea azul que representa el comando que se va a ejecutar. Microprocesadores. Guía 1 9 Ventana Assembly: Contiene dos columnas, la primera representa la dirección de memoria donde se almacenó la instrucción; en la segunda columna se muestra la instrucción y el operando numérico que se interpretan de los números del archivo binario. Es donde se puede visualizar el contenido numérico de las variables cuando se ejecuta el programa. Se puede observar que son los símbolos que están en el código fuente como variables. Ventana Register: Muestra los registros internos del microprocesador y su contenido. D: Registro acumulador 16 bits (A y B). A: Registro acumulador 8 bits (MSByte de D). B: Registro acumulador 8 bits (LSByte de D). IX, IY: Registros Índice X e Y. IP y PC: Registros Puntero de instrucción y Contador de Programa. SP: Puntero de Pila CCR: Registro de Condición de Código (estado de banderas). Ventana Memory: Muestra los contenidos de memoria desde una dirección que el usuario puede solicitar. Tabla 1. Partes más utilizadas en la depuración. 20. Ubíquese en la barra de herramientas, Los comandos de depuración son los que están más a 10 Microprocesadores. Guía 1 la derecha. Comando La siguiente tabla los describe: Descripción Comando Start/Continue (F5): Arranca la ejecución completa del programa desde el inicio o continúa a partir de dónde se le detuvo. Comando Single step (F11): Ejecuta una sola instrucción a partir del Puntero de Instrucción IP. Comando Step over (F10): Ejecuta una sola instrucción a partir del Puntero de Instrucción al igual que Single step. Con la diferencia que los llamados a subrutina (BSR y CALL) los ejecuta rápidamente como una sola instrucción. Comando Step out (shift + F11): Si la ejecución del programa se detuvo en una función continúa la ejecución y para en la instrucción que sigue después del llamado. No tiene efecto si no hay llamados de función presentes Comando Assembly step (Ctrl + F11): Es como Single Step en lenguaje ensamblador. En otros lenguajes ejecuta una sola instrucción de ensamblador. Comando Halt (F6): Detiene la ejecución del programa que se hizo con Start Comando Reset Tarjet (Ctrl+R): Detiene la ejecución del programa y hace que los valores del Puntero de Instrucción y Contador de Programa se reinicien con la dirección de inicio del programa. Tabla 2. Comandos del depurador. 21. Utilice el comando Single Step dando clic sobre este hasta que llegue a la instrucción LDX Counter (La línea azul deberá estar encima de esta instrucción). Observe la ventana DATA y anote los contenidos de las variables Counter y FiboRes Counter: __________ FiboRes: ___________ 22. Observe la ventana Register y anote el contenido de los registros IX y D IX: ______ D: _______ 23. Procedamos a hacer un Breakpoint dé clic derecho sobre la instrucción LDX Counter y del menú contextual que aparecerá seleccione “Set Breakpoint”. Este será un punto donde se detendrá la ejecución del programa. 24. Dé clic sobre el icono del comando Start/Continue de Counter y FiboRes que están en la ventana DATA. una vez, y vuelva a anotar los valores Microprocesadores. Guía 1 11 Counter: __________ FiboRes: ___________ 25. Registre por lo menos 15 valores de FiboRes en la siguiente tabla: Counter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 FiboRes Tabla 3. Registro de valores del resultado en FiboRes 26. Compare los valores obtenidos en la tabla anterior con la calculadora web del siguiente sitio: https://www.easycalculation.com/es/algebra/Fibbo.php 27. En la ventana Data dé clic sobre la variable Counter y observe en la parte superior que aparece una dirección 0x2000. Figura 12. Dirección de memoria de Counter visto desde la ventana Data. 28. En la ventana Memory en la esquina inferior derecha se puede ir a visualizar el contenido de la dirección del numeral anterior. Dé clic derecho sobre la ventana Memory y del menú contextual seleccione “Address” aparecerá un cuadro de diálogo como el siguiente: Figura 13. Cuadro de diálogo “Display Address”. 29. Escriba el número 2000 y luego dé clic en OK, aparecerá un resultado como el siguiente: Figura 14. Ventana Memory mostrando los valores de Counter y FiboRes. 30. Observe que los valores resultantes son mostrados en hexadecimal, las direcciones están en 12 Microprocesadores. Guía 1 la columna de la izquierda y las columnas siguientes son las localidades de memoria y su contenido. La ventana Data tiene que Counter tiene un valor de 15 y el valor mostrado en memoria es 0x000F. 31. Para darle un poco de mejor comprensión a los datos mostrados por Memory puede cambiar el formato de visualización dando clic derecho en la ventana memory y seleccionando la opción “Format” y de ese sub menú la opción “Dec” para que la representación sea decimal. 32. Puede cambiar los valores de las localidades de memoria dando doble clic en la localidad que desea modificar, para el caso la casilla que contiene el 15 cámbiela por 12 y luego presione enter. Vaya a la ventana Data y verifique que también ese cambio será reflejado en la variable Counter. 33. En la ventana Data dé doble clic sobre Counter, el valor aparecerá en otro color y disponible para que se pueda modificar, cámbielo por 15 y presione luego Enter. Este cambio también será reflejado en la ventana Memory. 34. Seleccione del menú “Component” la opción “Open”, aparecerá un cuadro de diálogo, busque en el conjunto de iconos mostrados el de “Visualization Tool” , selecciónelo y presione OK Figura 15. Ventana de la herramienta de Visualización. 35. Dé clic derecho sobre el espacio de trabajo de esta ventana y seleccione del menú la opción “Add New Instrument” y del submenú seleccione “Analog” Microprocesadores. Guía 1 13 Figura 16. Inserción del Instrumento analógico. 36. Dé doble clic sobre el instrumento recién insertado y se mostrarán sus propiedades, Modifique el campo Kind of Port seleccionando “Variable” y el campo Port to display escribiendo Counter. High Display Value colóquele un valor de 100. Figura 17. Modificación del Instrumento Analog. 37. Cierre el diálogo de propiedades y ahora modifique desde la ventana Data el valor de Counter primero a cero, luego a 50, 75 y por último 100, observe la marca roja cómo se desplaza por la 14 Microprocesadores. Guía 1 escala. 38. Dé clic sobre el componente Analog y presione la tecla suprimir o delete y luego “Add new Instrument” y de este el componente Bar. Modifique sus propiedades como en la siguiente figura y compruébelo como en el numeral anterior Figura 18. Modificación de las propiedades de Bar. 39. Compruebe el instrumento Value as Text, ponga dos en el área de trabajo y configúrelos de la siguiente manera: Figura 19. Modificación de las propiedades de Value as Text 40. Como última prueba utilice el instrumento LED y modifique sus propiedades de la siguiente Microprocesadores. Guía 1 15 manera: Figura 20. Cambio de propiedades de LED. 41. Observe que lo que se quiere desplegar en Port to Display es el registro A, pero en el campo “Bitnumber to display” se ha ubicado 0, es decir el bit menos significativo del registro A. Para probar su funcionamiento vaya a la ventana Register y dé doble clic sobre el cuadro del contenido del registro A, coloque el valor de 1 y observe qué sucede con la visualización. Para probar el Led apagado, coloque el valor de 0 en A. Bibliografía • Ayuda de programa CodeWarrior IDE. • http://www.disfrutalasmatematicas.com/numeros/fibonacci-sucesion.html • https://www.easycalculation.com/es/algebra/Fibbo.php 16 Microprocesadores. Guía 1 Hoja de cotejo: 1 Guía 1: Introducción a Codewarrior IDE Alumno: Maquina No: Docente: GL: Fecha: EVALUACION % CONOCIMIE NTO APLICACIÓ N DEL CONOCIMIE NTO 25% 70% 1-4 5-7 8-10 Conocimiento deficiente Conocimiento y Conocimiento completo de los fundamentos explicación incompleta y explicación clara de teóricos de los fundamentos los fundamentos teóricos teóricos No termina el Termina el Termina el procedimiento planteado procedimiento con procedimiento de forma en la guía 10% bastante asistencia 10% independiente 10% No modifica el programa Modifica el programa no Modifica el programa 30% interpreta correctamente interpretando los resultados 30% correctamente sus No responde a preguntas de retroalimentación 30% Sus respuestas son incompletas 30% resultados 30% Sus respuestas son correctas y completas 30% ACTITUD 2.5% Es un observador pasivo. Participa ocasionalmente Participa propositiva e o lo hace integralmente en toda la constantemente pero sin práctica. coordinarse con su compañero. 2.5% Es ordenado; pero no Hace un uso adecuado Hace un manejo hace un uso adecuado de de los recursos, respeta responsable y adecuado los recursos las pautas de seguridad; de los recursos pero es desordenado. conforme a pautas de seguridad e higiene. TOTAL 100% Nota
© Copyright 2024