LAB1 Introduccion Al CodeWarrior

10
Laboratorio 1: Introducción a CodeWarrior ™ - Simulando el microcontrolador en lenguaje Ensamblador Revisión: agosto 03, 2012 Ing. Elías Mendoza H. Página 1 ESTUDIANTE Yo he enviado mi propio trabajo, y entiendo las penalidades que podrán ser aplicadas si envío un trabajo cuyo crédito no es mío. Nombre en Imprenta Cédula Firma Fecha 20% descontado del puntaje por cada semana tarde Puntos =Puntos concedidos (Pts) x Peso (Wt) Horas de trabajo estimado Escala 1 2 3 4 5 6 7 8 9 10 4: Ejemplar 3: Completo 2: Incompleto 1: Esfuerzo Menor 0: No enviado 1 2 3 4 5 6 7 8 9 10 Ponderación General ASISTENTE DE LAB Puntaje In-Lab # Demostración Wt Pts Tarde Puntaje Firma del Asistente de Lab Fecha 1 Estimulación 1 4 2 Explore 4 4 3 Explore 5 4 4 Ejercicio de habilidad 1 5 Total EVALUACIÓN Sem. Tarde Puntaje Eval. Total Puntaje total es Puntaje In-lab más puntaje eval. Puntaje Total # Adjuntos Wt Pts Puntaje 1 Explore 1 4 2 Explore 2 4 3 Estimulación 2 4 4 Explore 3 4 5 Estimulación 3 4 Información general Una experiencia de laboratorio es vital para nosotros poder empezar a programar el microcontrolador y ser capaces de entender realmente cómo funciona y aplicarlo en el diseño de sistemas embebidos. En este módulo se muestra al alumno cómo introducir un programa en lenguaje ensamblador en el entorno de desarrollo integrado CodeWarrior ® y luego simular su ejecución usando el simulador en tiempo real/depurador.

Transcript of LAB1 Introduccion Al CodeWarrior

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 1

ESTUDIANTE

Yo he enviado mi propio trabajo, y entiendo las penalidades que podrán ser aplicadas si envío un trabajo cuyo crédito no es mío.

Nombre en Imprenta Cédula

Firma Fecha 20% descontado del puntaje por cada semana tarde Puntos =Puntos concedidos (Pts) x Peso (Wt)

Horas de trabajo estimado Escala

1 2 3 4 5 6 7 8 9 10 4: Ejemplar

3: Completo

2: Incompleto

1: Esfuerzo Menor

0: No enviado

1 2 3 4 5 6 7 8 9 10

Ponderación General

ASISTENTE DE LAB Puntaje In-Lab

# Demostración Wt Pts Tarde Puntaje Firma del Asistente de Lab

Fecha

1 Estimulación 1 4

2 Explore 4 4

3 Explore 5 4

4 Ejercicio de habilidad 1 5

Total

EVALUACIÓN Sem.

Tarde Puntaje Eval.

Total Puntaje total es Puntaje In-lab más

puntaje eval.

Puntaje

Total

# Adjuntos Wt Pts Puntaje

1 Explore 1 4

2 Explore 2 4

3 Estimulación 2 4

4 Explore 3 4

5 Estimulación 3 4

Información general Una experiencia de laboratorio es vital para nosotros poder empezar a programar el microcontrolador y ser capaces de entender realmente cómo funciona y aplicarlo en el diseño de sistemas embebidos. En este módulo se muestra al alumno cómo introducir un programa en lenguaje ensamblador en el entorno de desarrollo integrado CodeWarrior ® y luego simular su ejecución usando el simulador en tiempo real/depurador.

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 2

Objetivos de Aprendizaje En este módulo le introducimos en el entorno de programación CodeWarrior ®. Veremos cómo iniciar el sistema e introducir un programa que se ejecuta con el depurador. En el siguiente módulo se le dará un programa y usted comenzará a aprender a usar el conjunto de instrucciones HCS12 mediante su modificación, para cambiar la forma en que opera

Criterios de éxito Al final de este módulo será capaz de ensamblar un programa y ejecutarlo y depurarlo con el CodeWarrior simulador/depurador

Requisitos previos Usted debe saber sobre el conjunto de instrucciones HCS12 y el direccionamiento de memoria en los modos disponibles. Usted no tiene que conocer el conjunto de instrucciones en detalle. Los módulos de laboratorio siguientes le ayudarán a aprender eso.

Utilizando el simulador de CodeWarrior ®

1. Inicie el IDE CodeWarrior. a. Desde el escritorio de Windows, haga clic en Start> Programs> Freescale

CodeWarrior> CodeWarrior Development Studio for S12(X) V5.1> CodeWarrior IDE.

2. Crear un proyecto nuevo. a. Desde la barra de menú IDE principal, seleccione File> New, Nueva

ventana aparece b. Resalte HC(S)12 New Project Wizard. c. Introduzca un nombre de proyecto que tenga sentido para usted (como

lab_x). d. Escriba una ubicación para el proyecto. Esto debería estar en una unidad

o en un directorio en el que desea mantener sus HCS12 proyectos. e. Haga clic en OK.

3. En el Asistente para nuevo proyecto Página 2: Seleccionar MC9S12C128 (o su derivado) como el derivativo que desea utilizar y haga clic en Next.

Página 3: Compruebe la compatibilidad con el idioma que desee (Assembly) y haga clic en Next. Página 4: Seleccione Relocatable Assembly.

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 3

Página 5: Seleccione Full Chipl Simulation y haga clic en Finish.

En la ventana del manejador de proyecto

4. Cambie a Full Chip Simulation para depuración, haga clic en la flecha hacia abajo y seleccionar Full Chip Simulation. (Esto no utiliza el hardware para la depuración. Si desea utilizar realmente el hardware HCS12, elija TBDML

5. Crear lista de archivos, abra el panel Simulator Settings haciendo clic en el icono

que aparece arriba. a. Haga clic en + junto a Target en Target Settings. b. Resalte Assembler for HC12 y haga clic en Options.

i. Verifica Generate a listing file. ii. Comprobar Object File Format. Elija formato de archivo

ELF/DWARF 2.0. iii. Haga clic en OK.

c. Haga clic en OK. 6. Abra la carpeta Sources (haga clic en el signo + si no está abierto). 7. Haga doble clic en main.asm e introduzca el siguiente código después del

comentario.

; Your program code goes here.

Configuración de la Simulación

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 4

8. Guárdelo con cualquier nombre que desee: File> Save As. (Asegúrese de que usted le da un nombre de archivo . asm, o simplemente puede utilizar el archivo main.asm si lo desea.)

9. Asegúrese de que la información de depuración se va a generar. a. En la ventana Project Manager Files, verifique que hay un en la

columna de la derecha debajo del icono de error.

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 5

10. Ensamble el archivo para verificar errores. a. Clic en Project > Compile b. Corrija cualquier error.

11. De un vistazo a su archivo .list a. File> Open y posiciónese sobre la carpeta bin en su proyecto y abra el

archivo .lst.

Explore 1

1. ¿Cuántos bytes y datos constantes hay en el programa? 2. No se puede decir de esta lista las posiciones de memoria donde se encuentran

los bytes de la variable VarData. ¿Por qué no? 3. ¿Qué código de operación (en hexadecimal), es generado para la instrucción

nop? 4. ¿Alguna de las etiquetas en el programa genera algún bytes de código?

Estimulación 1

1. ¿Por qué la instrucción LDX ConstData se ensambla en CExx xx? 2. ¿Cuáles son los cuatro bytes (en hexadecimal) ensamblados como bytes de

datos constante por la directiva del ensamblador DC.B? 3. En la ConstData ¿por qué DC.B produce diferentes bytes de datos para $10 y 10?

En los ejercicios de laboratorios en el futuro es posible que desee añadir otros archivos fuentes para su proyecto. Así es como se hace eso.

12. Añadir otros archivos fuentes a los archivos reubicables en el proyecto: a. Haga clic en el icono Add New Text File:

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 6

b. Edite el archivo c. File > Save As (use el .asm como extensión de los archivos Ensamblador d. Adiciónelo al proyecto: Project > Add *.asm al proyecto. En Add Files

seleccione Full Chip Simulation e. Compile: Project > Compile

13. Ver el archivo enlazador de parámetros a. Haga clic en el signo + situado junto a la PRM y haga doble clic en el

archivo Project.prm para abrirlo en el editor

Explore 2

El archivo enlazador de parámetros nos permite localizar las diversas partes del programa en el tipo apropiado de la memoria. Por ejemplo, todos los datos de código y datos constantes deben de estar en la ROM y los datos variables y la pila en la memoria RAM.

1. Mire en la sección SEGMENTS a. ¿Qué posiciones de memoria se utilizan para la memoria RAM? b. Cuantas posiciones de memoria se utilizan para la ROM?

2. Mire en la sección PLACEMENT. Una variedad de opciones de ubicación por defecto están incluidos. Estamos interesados en saber dónde se encuentra el DEFAULT_ROM (la sección de código y de datos constantes en nuestro programa ensamblador) y la DEFAULT_RAM (sección de variables de datos)

a. ¿En qué ubicaciones de la memoria estará el código y? b. ¿En qué posiciones de memoria estarán la data?

Estimulación 2

1. ¿Qué cambios haría usted en el archivo enlazador de parámetros si el hardware

de destino tiene memoria RAM en las posiciones de memoria $1000 - $1FFF (0x1000 - 0x1FFF)?

2. ¿Qué cambios haría usted en el archivo enlazador de parámetros si desea localizar el código y las constantes en la memoria a partir de $4000 (0x4000)?

14. Genere el proyecto

a. Project > Make o haga clic en el icono

b. Corrija cualquier error del enlazador 15. Inspeccione el archivo mapa del enlazador

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 7

a. Haga clic en el signo + sobre Linker Map y abra Project.map.

Explore 3

STARUP SECTION

1. Cuál es la dirección de inicio del programa?

SECTION-ALLOCATION SECTION

2. ¿Qué base numérica se utiliza para determinar el tamaño de las distintas

secciones? 3. ¿Cuántos bytes de ROM son utilizados por este programa? 4. ¿Cuántos bytes de memoria RAM son utilizadas por este programa?

OBJECT-ALLOCATION SECTION

5. ¿Cuál es la dirección de memoria de la etiqueta main_loop? 6. ¿Cuál es la dirección de memoria de la etiqueta loop? 7. ¿En qué ubicaciones de la memoria se encuentra MyData?

16. Ejecute el programa sin la PBMCUSLK con el CodeWarrior true-Time Simulator

a. Asegúrese de que Full_Chip_Simulation se muestra en el Administrador de Proyecto como se muestra en el paso 4.

b. Inicie el True-Time Simulator por Project > Debug, F5, o haciendo clic en el icono

Si aparece una advertencia haga clic en OK.

c. Si el simulador no es el destino de depuración, haga clic en Component >

Set Target y elija Simulator Target Interface y haga clic en OK. d. Si su programa no se ha cargado, o si desea volver a cargarlo, haga clic

en Simulator > Load y cargue bin\simulator.abs. e. Usted puede utilizar todas las características del simulador en el código.

Explore 4

Después de que el simulador se ha puesto en marcha, eche un vistazo a la pantalla: 1. La ventana Source muestra su programa fuente 2. La ventana Assembly muestra el programa como se ve en la memoria. Haga clic

derecho en la ventana Assembly y compruebe el Display Code para hacer que su

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 8

pantalla muestra el código en las posiciones de memoria $ C000 - $ C01A. Haga clic

derecho de nuevo y vea el Display Simbolic para mostrar el simbólico en lugar de

direcciones decimales. 3. La ventana Register muestra el estado actual/contenido de todos los registros. 4. La ventana de Data mostrará el valor actual de los datos constantes y variables en

su programa. Haga clic en el +ConstData para mostrar los cuatro bytes de datos

constantes. Haga clic derecho sobre ConstData y seleccione Format All Hex. Haga

clic en +VarData para mostrar los dos bytes de variables. 5. La ventana Procedure muestra que procedimiento se encuentra actualmente y la

ventana Command le permite entrar comandos en el simulador/depurador. 6. La ventana Memory permite la visualización de los contenidos de la memoria. Haga

clic derecho en la ventana memoria y seleccione Address. . . y en la ventana de

visualización de direcciones entrar $C000. a. Qué se muestra aquí?

7. Trate de cambiar el tamaño de cualquiera de las ventanas.

Corra el Programa en el Simulador Explore 5

1. En la ventana Source posicione el puntero del cursor sobre la instrucción NOP y haga clic derecho y seleccione Set Breakpoint

2. Haga clic en el Green Start/Continue Arrow o haga clic en Run > Start/Continue El programa debe corre a su punto de interrupción y se detiene. (Nota: Un punto de interrupción detiene el programa antes de ejecutar esa declaración.)

3. Ahora, haga paso a paso a través de su programa, una declaración en lenguaje ensamblador a la vez haciendo clic en el botón de single-step o presionando

F11 hasta llegar a la instrucción NOP en el inicio del programa de nuevo. (Vamos

a ver lo que la instrucción LDS se trata más adelante.)

4. En cada paso inspeccione la ventana de Registro para saber que está pasando en el registro. Trate de predecir qué pasará en cada paso ANTES que haga clic en el botón de paso.

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 9

Estimulación 3 1. ¿En qué circunstancias tiene sentido ejecutar y depurar sus programas en el

simulador? 2. cuando se desea ejecutar y depurar sus programas utilizando el depurador de

hardware? Ejercicio de Habilidad 1

1. Haga doble clic en cada una de las cajas de registro en la ventana de Registro e introduzca un valor de cero para cada registro. No será capaz de cambiar el CCR.

2. Pulse el botón Target Reset (o teclee control-R) para devolver el programa al estado de reajuste inicial.

3. Haga paso sencillo a través del programa y complete una tabla que muestra el resultado de cada instrucción. El CCR (Registro de Condición de Código) bits NZVC se muestran en negrita cuando el bit está establecido.

INSTRUCCIÓN D A B X Y PC SP NZVC

Estado Reset 0000 00 00 0000 0000 C000 FFFE 0000

lds #__SEG_END_SSTACK

nop

ldx #ConstData

ldab #$02

ldaa 0,x

staa VarData

ldaa 2,x

staa VarData+1

inx

decb

bne loop

ldaa 0,x

staa VarData

ldaa 2,x

staa VarData+1

inx

decb

bne loop

nop

bra main_loop

Laboratorio 1: Introducción a CodeWarrior ™ -

Simulando el microcontrolador en lenguaje

Ensamblador

Revisión: agosto 03, 2012

Ing. Elías Mendoza H. Página 10

Comunicación

1. A medida que atraviesa su programa explíquele a su instructor de laboratorio lo que ve en la pantalla. En particular, explique lo que está sucediendo a cada registro y al registro de condición de código a medida que atraviesa su programa. ¿Qué preguntas tiene usted?

Reflexión sobre el aprendizaje

1. Para la introducción del programa y revisarlo paso a paso, liste las instrucciones que usted no está seguro de cómo funcionan. Compare su lista con su compañero de laboratorio, y si usted entiende algo que él o ella no entiende, explíqueselo para que entienda. Si todavía hay instrucciones que no están seguros, pregunte a su instructor de laboratorio para que él le explique.