Enunciado LCEL 2004-05 - LSI - Universidad Politécnica de Madrid

advertisement
Laboratorio de Sistemas
Electrónicos
Departamento de Ingeniería Electrónica
E.T.S.I. de Telecomunicación
Universidad Politécnica de Madrid
Características de Antares
Plan 94. Curso 2005-2006.
Versión 1.0
Alvaro Araujo Pinto
ÍNDICE GENERAL
1
OBJETIVOS .................................................................................................................................................................. 3
2
INTRODUCCIÓN ...................................................................................¡ERROR! MARCADOR NO DEFINIDO.
3
DESCRIPCIÓN GENERAL DEL SISTEMA ....................................¡ERROR! MARCADOR NO DEFINIDO.
3.1
EQUIPOS TERMINALES ..................................................................................¡ERROR! MARCADOR NO DEFINIDO.
3.1.1
Acceso a zonas protegidas...........................................................................¡Error! Marcador no definido.
3.1.2
Monitorización de dispositivos....................................................................¡Error! Marcador no definido.
3.2
EQUIPOS DE CONTROL...................................................................................¡ERROR! MARCADOR NO DEFINIDO.
4
TECNOLOGÍA A EMPLEAR ..............................................................¡ERROR! MARCADOR NO DEFINIDO.
4.1
EQUIPOS TERMINALES ..................................................................................¡ERROR! MARCADOR NO DEFINIDO.
4.1.1
Elementos de control....................................................................................¡Error! Marcador no definido.
4.1.2
Subsistema de entrada .................................................................................¡Error! Marcador no definido.
4.1.3
Subsistema de salida ....................................................................................¡Error! Marcador no definido.
4.1.4
Subsistema de comunicación.......................................................................¡Error! Marcador no definido.
4.1.5
Subsistema de almacenamiento...................................................................¡Error! Marcador no definido.
4.2
EQUIPOS DE CONTROL...................................................................................¡ERROR! MARCADOR NO DEFINIDO.
5
PLANIFICACIÓN ...................................................................................¡ERROR! MARCADOR NO DEFINIDO.
2
1
Objetivos
El objetivo de este manual es servir de introducción a las características fundamentales de la
plataforma de desarrollo Antares utilizada en el Laboratorio de Sistemas Electrónicos.
2
Características hardware generales
Las características genéricas de Antares son las siguientes:
1. Microprocesador de 32 bits MCF5272 de Motorola.
2. Memoria SDRAM (16 Mbytes).
3. Memoria Flash (4 Mbytes).
4. Interfaz Ethernet para conexión a una red de área local.
5. Dos interfaces serie RS-232.
6. Un interfaz USB esclavo.
7. Un interfaz BDM/JTAG para depuración y programación de la memoria Flash.
8. Ocho salidas digitales de nivel LCMOS1.
9. Ocho entradas/salidas digitales de nivel LCMOS.
10. Cuatro LEDs indicadores de proposito general.
11. Bus de expansión.
12. Alimentación de entrada 8-14 Voltios.
3
3
Microprocesador
El microcontrolador MCF5272 está formado por diferentes bloques funcionales, que son los
siguientes:
•
Procesador Coldfire V2: El controlador tiene como procesador un núcleo de Coldfire
versión 2. Esta es la primera versión de núcleo de Coldfire propiamente dicho, si no
tenemos en cuenta el núcleo del microcontrolador MCF5102, que era un híbrido de
arquitectura Coldfire y 68000. Se trata de un procesador RISC de 32 bits, con una
velocidad de reloj de 66 MHz, y con una unidad de multiplicación/acumulación (MAC),
además de un módulo para la relización de divisiones de enteros. Como ya se ha
comentado, permite además la ejecución de instrucciones de longitud variable de 16, 32 ó
48 bits.
•
1KByte de caché de instrucciones: Esta memoria caché de instrucciones permite
aumentar el rendimiento del controlador, ya que se trata de una memoria muy rápida que
aumenta la velocidad de ejecución de estructuras de código repetitivas como pueden ser
los bucles.
•
4KBytes de memoria interna SRAM: Se trata de memoria que puede ser usada de la
misma manera que la memoria externa, con la diferencia de que es mucho más rápida,
con lo que puede usarse para las tareas más críticas en tiempo (tiempo real, procesado
de audio, etc).
•
Módulo de depuración: El controlador ofrece un módulo que permite la depuración a
través de un interfaz JTAG/BDM, lo que facilita en gran medida la labor de desarrollo
sobre este microcontrolador.
4
4
•
Controlador Ethernet 10/100: El microprocesador incluye un controlador Ethernet 10/100
para permitir la conexión del sistema a redes de área local.
•
Controlador USB 1.1 modo dispositivo: Este bloque permite al controlador comportarse
como un dispositivo dentro de la norma USB 1.1, lo que permite conectarlo a otros
dispositivos de la red, siempre que uno de ellos haga el papel de maestro(“host”).
•
Módulo QSPI: Este módulo permite controlar hasta 16 dispositivos con interfaz SPI,
realizando el papel de maestro. Sin embargo, este módulo no puede comportarse como
esclavo, por lo que no puede ser controlado por otros dispositivos SPI.
•
Controlador SDRAM: Gracias al controlador de SDRAM integrado, podemos dotar a
nuestro sistema de memoria SDRAM.
•
Tres salidas PWM: Para la realización de tareas de control, el controlador posee tres
moduladores por anchura de pulso(PWM), configurables de manera independiente.
•
Cuatro puertos TDM: Los cuatro puertos de multiplexación por división en el tiempo (TDM)
permiten conectar este microcontrolador a interfaces RDSI.
•
Dos UARTs: El MCF5272 ofrece dos interfaces series asíncronos (UART), que permiten
la comunicación con otros dispositivos como pueden ser un Terminal de consola, o un
módem.
•
Un canal DMA: El canal de acceso directo a memoria (DMA) permite planificar
transferencias de datos entre distintas zonas de memoria/dispositivos sin la intervención
del procesador.
•
Ocho “chip-selects”: Este módulo permite conectar al mismo bus que el microcontrolador
hasta ocho dispositivos/memorias, sin necesidad de ninguna lógica adicional.
•
Trés E/S genéricas de 16 bits: Tenemos disponibles un máximo de 48 bits de
entrada/salida. Ocho de ellos son fijos, mientras que el resto están multiplexados con
otras funciones del microcontrolador.
•
Cuatro temporizadores de 16 bits: Gracias a este módulo se pueden realizar tareas de
control periódicas de una manera muy sencilla.
•
Watchdog software: Este módulo es muy importante en los sistemas empotrados, ya que
permite detectar si el sistema no funciona bien, reiniciándolo en ese caso. Esto es de
mucha utilidad en el caso de sistemas de control, ya que permite realizar una parada
segura del sistema en el caso de que se detecte un mal funcionamiento.
Memoria
Aprovechando el controlador SDRAM integrado en el MCF5272, hemos dotado a nuestro sistema
de este tipo de memoria. El controlador integrado utiliza la línea chip-select 7 del microprocesador
para el control del banco de memoria SDRAM. Antares lleva dos módulos de memoria SDRAM
del modelo MT48LC4M16A2, configurados en paralelo formando un bus de 32 bits, lo que da lugar
a un total 16 Mbytes de memoria RAM.
Para el almacenamiento de información de manera no volátil, Antares utiliza memoria de tipo
Flash. La plataforma ha sido diseñada para tener 2 ó 4 Mbytes de memoria Flash. Esto ha sido
así para que las aplicaciones que no requieran de una gran cantidad de espacio de
almacenamiento puedan ser fabricadas con solo 2 Mbytes, abaratando así el precio del sistema.
Para ello se utilizan dos líneas del módulo chip-select, para seleccionar los dos módulos de
5
memoria Flash. Las líneas que se utilizan son CS0 y CS1. De los dos módulos de memoria, solo el
conectado a la línea CS0 es obligatorio, debido a que el MCF5272 activa dicha linea durante la
inicialización, obteniendo de la memoria conectada a ella el puntero de pila, y la dirección de la
primera instrucción a ejecutar. Por tanto, el código que se ejecuta cada vez que se inicializa
Antares es el almacenado en la memoria Flash conectada a la linea CS0.
Ambos módulos de memoria son idénticos, y el modelo de memoria que se ha utilizado es el
MBM29LV160BE de Fujitsu. Estos módulos tienen unos tiempos de acceso de 70ns ó 90ns,
dependiendo del modelo. Los módulos instalados en Antares tienen tiempos de acceso de 90ns.
En nuestro sistema la Flash está configurada para utilizar 16 bits del bus de datos.
5
Interfaces
Por interfaces de la plataforma consideramos todas las partes de la misma que le permiten la
comunicación con su entorno. Antares utiliza estos interfaces para comunicarse tanto con el
usuario como con los dispositivos que debe controlar.
5.1
Interfaz Ethernet
El interfaz Ethernet de Antares consta de diferentes partes. En primer lugar se encuentra el
controlador integrado en el MCF5272, que es el encargado de realizar las funciones de control de
acceso al medio compartido (MAC). En segundo lugar tenemos un circuito integrado que se
conectará al MCF5272, y que ofrece las funciones de nivel físico del interfaz. Por último, el interfaz
se completa con la inclusión de unos transformadores que realizan la conversión de niveles de
tensión, y un conector RJ-45 al que se enchufará un par trenzado de red convencional.
Resumiendo, los bloques del interfaz Ethernet son los siguientes:
1. Conector RJ-45
2. Transformadores
3. Transceptor DP83846A
4. Controlador de acceso al medio (MCF5272)
5.2
Interfaz USB
El protocolo de comunicaciones USB define dos entidades distintas en la comunicación:
concentrador y dispositivo. El concentrador es el responsable de gestionar la comunicación, dando
permiso a los diferentes dispositivos conectados a él. El controlador integrado en MCF5272,
permite al mismo comportarse como dispositivo en un entorno USB, pero no permite realizar las
funciones de concentrador.
A diferencia de lo que ocurría con el controlador Ethernet, el controlador USB del MCF5272 lleva
un transceptor interno que permite la conexión directa a la linea sin más que añadir un conector
USB de tipo dispositivo. No obstante, el microcontrolador está preparado para permitir la conexión
de un transceptor externo si fuera necesario.
5.3
Interfaz serie
Como ya se ha visto anteriormente, el microcontrolador MCF5272 tiene integradas dos UARTs
completas, que permiten la comunicación con otros dispositivos mediante una linea serie. Estos
dispositivos pueden ser otros sistemas empotrados, un terminal de consola, etc. En este sentido
6
las UARTs del microcontrolador trabajan con niveles de tensión LCMOS (0 - +3.3V), por tanto, si
queremos que sean compatibles con los niveles de tensión RS-232 (-12V - +12V) debemos añadir
un módulo que realice la conversión de niveles de tensión. Ésta es la función de los integrados
ICL3232. El último componente de este interfaz son los conectores. Estos conectores son del tipo
DB-9 macho, iguales a los que se pueden encontrar en un PC de sobremesa. . La finalidad es que
pueda conectarse a Antares cualquier dispositivo que pudiera conectarse a un PC, como por
ejemplo un módem.
5.4
Entrada/Salida digitales
La plataforma Antares cuenta con dos puertos digitales de 8 bits cada uno. De estos dos puertos,
uno de ellos es bidireccional, y lo denominaremos Puerto 1. El otro puerto es un puerto de salida
exclusivamente, y lo denominaremos Puerto 0.
En la figura podemos ver la colocación de los puertos en la placa, así como la posición del bit más
significativo de cada uno de los puertos.
El Puerto 0 utiliza una de las lineas de chip-select (CS2) para habilitar un buffer de salida que
almacenará el valor disponible en el bus de datos en ese momento. Este será el valor que podrá
leerse en el puerto. El Puerto 1 utiliza uno de los puertos de entrada/salida de propósito general
que ofrece el MCF5272. Por ello, antes de poder utilizarlo, deberemos configurarlo de manera que
se adapte a nuestras necesidades. Este puerto permite la configuración de la dirección (entrada ó
salida) de cada uno de los pines de manera independiente.
Los niveles de tensión con los que trabajan ambos puertos son LCMOS de 3.3V, con lo que a la
hora de conectar nuestra plataforma con otros dispositivos habrá que tener en cuenta la
compatibilidad entre los niveles de ambos.
5.5
Bus de expansión
El bus de expansión de Antares consta de dos conectores paralelos CN2 y CN3, a los cuales se
han llevado las señales del MCF5272 más relevantes para permitir la extensión de la plataforma
mediante tarjetas que se enchufarán a dichos conectores.
Entre estas señales se encuentran los buses de datos y direcciones, lineas de interrupción, lineas
del banco de SDRAM, etc. En la figura se ve la correspondencia entre las señales del bus de
expansión y los dos conectores de la placa.
7
6
Esquemáticos
8
9
10
11
12
13
14
7
7.1
Interrupciones
Programación de rutinas de interrupción
En este apartado vamos a ver los pasos que debemos seguir para poder utilizar las
interrupciones del MCF5272. Este micro dispone de 7 líneas de interrupción externas, siendo
6 de ellas enmascarables. Además de las líneas de interrupción externas, los módulos
integrados del micro se pueden configurar para que funcionen mediante interrupciones.
Los pasos generales que debemos seguir, independientemente de que trabajemos sobre el
micro desnudo, o sobre el sistema operativo, son los siguientes.
• Configurar el hardware que pedirá interrupción (nivel de interrupción, etc...).
• Programar la rutina de atención a la interrupción.
• Registrar la rutina de atención a la interrupción.
• Habilitar la interrupción correspondiente en el micro.
A continuación veremos como programar y registrar las rutinas de atención a la interrupción
tanto sin sistema operativo como sobre uClinux.
7.2
Interrupciones sobre el micro sin sistema operativo.
En este apartado nos basaremos en las fuentes del CoLiLo. En ellas configuramos uno de los
temporizadores del micro, en concreto el Timer 0 para que pida interrupción cada 1 ms. En la
rutina de atención a la interrupción se incrementa en 1 el valor de una variable inicializada a 0
(rtime_msecs), que contendrá el tiempo en milisegundos desde que se arranco el sistema.
En primer lugar tenemos que definirnos unas macros de ensamblador que nos permitan entre
otras cosas habilitar y deshabilitar las interrupciones, salvar y restaurar el estado del micro
(registros de datos y direcciones), y realizar el retorno de excepción. En nuestro caso, el
fichero donde se definen estas macros es en “system.h”.
A continuación nos creamos la rutina de atención a la interrupción. Dicha rutina de atención a
la interrupción tendrá el siguiente aspecto.
#include ”system.h”
void rutina_int(void)
{
save_state();
/*
* Aquí atenderíamos a la interrupción
*/
restore_state();
rte();
}
Lo siguiente que debemos hacer es registrar dicha rutina en la tabla de vectores de
interrupción para asociarla a la interrupción que corresponda. Para ello añadimos el símbolo
con el nombre de la rutina de atención a la interrupción a la tabla de vectores en la posición
que corresponda. Dicha tabla de vectores está definida en el fichero “boot.S”.
Por último, una vez instalada la rutina de atención a la interrupción debemos configurar el
hardware para que pida interrupción. En nuestro caso debemos programar el Timer 0 para
que pida interrupción cada 1 ms. Esta configuración la hace el CoLiLo en el dichero “main.c”.
Finalmente debemos habilitar en el micro la interrupción correspondiente, y configurar la
mascara de interrupciones.
15
7.3
Interrupciones sobre uClinux.
En este caso la instalación de un manejador para interrupciones es mucho más sencilla que
en el caso anterior. La instalación del manejador la hará el driver que programemos para el
dispositivo en cuestión. Para más información sobre la programación de drivers para Linux se
puede consultar.
El registro de la rutina de atención a la interrupción debe hacerlo el driver en algún momento.
En nuestro caso, como realizamos los drivers como módulos que se enlazan dinámicamente
con el kernel, registraremos la rutina de atención a la interrupción en el momento de cargar el
driver.
En este caso, la rutina de atención a la interrupción tiene el siguiente prototipo.
void rutina_interr(int , void *, struct pt_regs *);
Para instalar y desinstalar la rutina utilizaremos las siguientes funciones, definidas en
<linux/sched.h>.
/* Para instalar el manejador “manejador_int” */
int request_irq(int vector, void (*manejador_int) (int, void *,
struct pt_regs *), unsigned long flags,
const char *device, void *dev_id);
/* Para desinstalar el manejador de la interrupción irq */
void free_irq(unsigned int irq, void *dev_id);
Después de haber instalado el manejador de interrupciones debemos configurar el hardware
de nuestro dispositivo, así como habilitar la interrupción correspondiente en el micro.
Por ejemplo, si quisiéramos registrar una rutina de atención a la interrupción para el Timer 0,
como en el caso anterior tendríamos que declarar la rutina de atención a la interrupción de la
siguiente manera:
void manejador_timer(int id, void *p, struct pt_regs *regs)
{
/*
* Aqui atenderíamos a la interrupción
*/
}
En el driver instalaríamos la rutina de la siguiente manera:
#include <linux/sched.h>
...
/* Registramos la rutina de atención a la interrupción */
request_irq(69, manejador_timer, SA_INTERRUPT, “timer0”,NULL);
/* El valor 69 se debe a que estamos registrando la interrupción 69,
que es la que corresponde al timer 0. Para ver que interrupciones
existen en el MCF5272 consultar Manual del microcontrolador */
Finalmente, a la hora de descargar el driver, éste debería desinstalar las rutinas de
interrupción que hubiera registrado previamente. Para ello utilizaremos la siguiente función.
#include <linux/sched.h>
16
...
/* Desinstalamos el manejador del Timer 0 */
free_irq (69, NULL);
17
Descargar