Tema: Introducción a CodeWarrior IDE

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