Beruflich Dokumente
Kultur Dokumente
Copyright Imagination Technologies 2016 Module 4 p.1 Copyright Imagination Technologies 2016 Module 4 p.2
Agenda
1. Visin general del reto de planificacin de software
2. Conceptos de tarea
3. Mejorar la capacidad de respuesta mediante el uso de mquinas de estado finito Seccin 1:
4. Conceptos de interrupcin Visin general del reto de
5. Uso de interrupciones planificacin de software
Copyright Imagination Technologies 2016 Module 4 p.3 Copyright Imagination Technologies 2016 Module 4 p.4
1
23/10/2017
Planificacin de Programacin
Cmo compartir el tiempo de la CPU entre varias actividades de software
Un sistema empotrado tpico tiene mltiples actividades que deben ser
gestionadas
Algunas son realizadas por perifricos de hardware, otras realizadas por software en
el CPU
Estas actividades tienen requisitos de tiempo, algunos ms crticos que otros
Seccin 2:
Ejemplo: lectura de botones/interruptores, barrido de LEDs Concepto de Tarea
Queremos que parezca que un ncleo de CPU hace muchas cosas
simultneamente (al mismo tiempo)
Incluso con un procesador multincleo, por lo general tenemos ms actividades de
software que ncleos del procesador
Cmo compartimos el tiempo del CPU entre las actividades de software?
Cmo simulamos la concurrencia entre las actividades de software?
Cmo realizamos la planificacin de tareas?
Copyright Imagination Technologies 2016 Module 4 p.7 Copyright Imagination Technologies 2016 Module 4 p.8
2
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.11 Copyright Imagination Technologies 2016 Module 4 p.12
3
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.13 Copyright Imagination Technologies 2016 Module 4 p.14
Copyright Imagination Technologies 2016 Module 4 p.15 Copyright Imagination Technologies 2016 Module 4 p.16
4
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.17 Copyright Imagination Technologies 2016 Module 4 p.18
5
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.21 Copyright Imagination Technologies 2016 Module 4 p.22
Copyright Imagination Technologies 2016 Module 4 p.23 Copyright Imagination Technologies 2016 Module 4 p.24
6
23/10/2017
Nunca se llama a una funcin ISR desde cdigo Trasferencia de datos completa
Copyright Imagination Technologies 2016 Module 4 p.25 Copyright Imagination Technologies 2016 Module 4 p.26
Copyright Imagination Technologies 2016 Module 4 p.27 Copyright Imagination Technologies 2016 Module 4 p.28
7
23/10/2017
Vector ISR_IC1E
Fuente de interrupcin (Direccin del ISR)
ISR_OC1
External Interrupt 0 0x1234_0014
Timer 1 0x1234_0810 Cada interrupcin tiene
Input Capture 1 Error 0x1234_0100 ISR_IC1 Nombre de Vector XC32, usado por el compilador.
Output Compare 1 0x1234_0170
IRQ# Numero de solicitud de interrupcin, usado para referencia
Input Capture 1 0x1234_0300
Nmero de vector de interrupcin: indica al procesador qu ISR debe ejecutarse para esta fuente
ISR_Timer1
Flag: Se ha solicitado la interrupcin, pero an no se ha servido/gestionado/tratado?
Habilitacin: est habilitada o deshabilitada la interrupcin?
Prioridad: seleccione uno de los siete niveles o deshabilitada
Sub prioridad: seleccione uno de los cuatro niveles
Copyright Imagination Technologies 2016 Module 4 p.29 Copyright Imagination Technologies 2016 Module 4 p.30
Prioridades
Section 5:
Por qu tener prioridades?
Determina el orden en el cual las interrupciones
Subprioridad
Divide un nivel de prioridad en 4 niveles ms (0-3).
Usando Interrupciones
simultaneas son atendidos La mayor es 3.
Primero atiende a la interrupcin de mayor Prioridad Natural
prioridad. Despus que su ISR se completa, atiende Fija (Fixed). Se utiliza para romper los lazos de
al siguiente nivel de interrupcin que est solicitada empates con la misma prioridad y subprioridad.
Prioridad Indicado por la posicin en la tabla y el nmero de
Siete niveles (1-7). 7 es al prioridad ms alta, 1 la IRQ (nmero ms bajo es la prioridad ms alta)
mas baja. 0 deshabilita las Fuentes de interrupcin.
Copyright Imagination Technologies 2016 Module 4 p.31 Copyright Imagination Technologies 2016 Module 4 p.32
8
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.33 Copyright Imagination Technologies 2016 Module 4 p.34
9
23/10/2017
Copyright Imagination Technologies 2016 Module 4 p.37 Copyright Imagination Technologies 2016 Module 4 p.38
Copyright Imagination Technologies 2016 Module 4 p.39 Copyright Imagination Technologies 2016 Module 4 p.40
10
23/10/2017
un recurso compartido
Ejemplo: acceder a un dispositivo externo (tarjeta de memoria SD)
requiere una secuencia de acciones para funcionar correctamente. La
interrupcin que ocurre en el momento incorrecto hara que el
sistema funcionar mal.
Copyright Imagination Technologies 2016 Module 4 p.41 Copyright Imagination Technologies 2016 Module 4 p.42
11
23/10/2017
Advertencia: Los niveles de prioridad de interrupcin deben coincidir Configurando el control de interrupcin
En la funcin InitApp()
Inicializar el controlador de interrupcin para usar
en modo multi-vector
Habilitar interrupciones globales
Habilitar el perifrico que genera interrupcin.
CNCONA es un del registro PORTA.
ISR definition debe usar el mismo IPL que interrupt priority definition
El cdigo NO funcionar si se usa un nivel diferente
Copyright Imagination Technologies 2016 Module 4 p.45 Copyright Imagination Technologies 2016 Module 4 p.46
Copyright Imagination Technologies 2016 Module 4 p.47 Copyright Imagination Technologies 2016 Module 4 p.48
12
23/10/2017
Anexo
Copyright Imagination Technologies 2016 Module 4 p.51 Copyright Imagination Technologies 2016 Module 4 p.52
13
23/10/2017
Proteccin de los datos de una tarea Mtodos para proteger los datos de las tareas
Una buena prctica para proteger los datos internos de la tarea de otras tareas Crear un archivo fuente .c para una tarea, funciones estrechamente relacionadas,
Evita que la mayora de los cdigos corrompan los datos variables
Ahora slo unos pocos fragmentos de cdigo pueden corromper los datos, reduciendo la Declarar las variables de datos de la tarea en ese archivo
lista de culpables Reglas de proteccin
Ejemplo: Mi computadora no est en mi departamento. Que pas? Los datos deben ser compartidos con otras funciones en la tarea?
Caso A: Siempre mantengo la puerta sin seguro. Declarar con mbito de archivo (file scope): en archivo, pero fuera de todas las funciones
Quin podra haber tomado la computadora? Cualquiera que pudiera llegar a mi apartamento y Declare la variable con el modificador esttico (static) para ocultarlo del cdigo en todos los dems
entrar. archivos
Caso B: Siempre mantengo la puerta asegurada cuando no estoy en casa. Slo una funcin necesita usarla?
Quin podra haber tomado la computadora? Slo alguien con la llave, una ganza, o una Declarar con mbito de bloque (block scope): dentro de esa funcin
palanca, o un ariete ...
Es necesario que estos datos persistan de una llamada a la funcin de tarea a la siguiente?
Si la puerta est daada, entonces la persona probablemente no tena una llave o una ganza
Declare esa variable con el modificador static
Copyright Imagination Technologies 2016 Module 4 p.53 Copyright Imagination Technologies 2016 Module 4 p.54
14