Parcial 1: Lenguaje C Embebido y Layered Software. Flashcards
Versión del lenguaje C que se usa en clase.
C99
Son símbolos que nos indican cómo se deben de manipular los operandos.
Operadores.
Tipos de operadores.
- Asignación
- Relacionales
- Lógicos
- Operaciones bit a bit
- Condicionales
Definición de estructuras.
Colecciones de variables relacionadas bajo un mismo nombre, pueden contener variables de muchos tipos diferentes de datos.
Tipo de dato especial que permite almacenar diferentes tipos de datos en una misma ubicación de memoria.
Unión
Este tipo de dato es uno que el usuario define, se utiliza principalmente para asignar nombres a constantes integrales.
Enumeraciones.
Con este modificador, se puede declarar una variable cuyo valor no cambiará. También, al usar este modificador, la variable se guardará en memoria de programa.
const
¿Qué hace hace el modificador typedef?
Palabra reservada que proporciona un mecanismo para la creación de alias para datos previamente definidos.
Con este modificador, las variables conservan su valor aún después de estar fuera de su scope.
static
¿Qué hace el modificador volatile?
El compilador no optimizará lo relativo a las variables con este modificador.
Menciona algunas directivas del compilador.
- # define
- # if
- # ifdef
- # ifndef
- # endif
- # pragma
- # include
¿Qué hace la directiva de compilador #pragma?
Permite al programador entregar un comando al compilador que éste podrá ejecutar para realizar ciertas tareas.
Diferencia entre parámetro y argumento.
Parámetro -> Representa un valor que la función espera que se pase al llamarlo.
Argumento -> Representa el valor que la función recibe cuando es llamada.
Diferencia entre puntero constante y puntero a constante.
El puntero constante es el que no pueden cambiar la dirección a la que apunta.
const int* ptr;
El puntero a constante es el que no puede cambiar el valor al que apunta.
int * const ptr;
¿Que es un apuntador a función?
Es una variable que almacena la dirección de una función que luego se puede llamar a través de ese puntero. Esto permite encapsular el funcionamiento.
void (*foo) (int)
¿En qué consisten los periféricos mapeados a memoria?
Consisten en que tanto el procesador como los puertos I/O comparten la misma localidad de memoria.
Área de memoria donde se guardan las variable locales, argumentos de función, contextos de interrupción, etc.
Stack
Parte de la memoria donde se localiza la memoria dinámica del sistema.
Heap
¿Dónde se guardan las variables globales?
Se guardan en una posición fija y permanente de la RAM.
Explicándolo de la manera más simple, es un apuntador a función que se le pasa a una función como parámetro.
Callback.
¿Qué son los guardas de inclusión?
Son lo que nos permite decirle al compilador que debe incluir el header file.
¿Qué es el start-up file?
Archivo donde se encuentra la configuración básica de un MCU. Es el primer archivo que se ejecuta antes del main.
¿Qué es polling?
Preguntar constantemente por valores.
¿Qué es crossbar?
Es el que permite conectar cualquier cosa con el CPU y maneja la memoria del sistema.
¿Qué es el slew rate?
Es el cambio que puede tener la salida (volts / segundos).
Es el proceso de guardar en el stack el program counter, link register, registros 0 al 3, registro 12 y el processor stack register, esto sucede cuando se da una interrupción.
Stacking process.
Diferencias entre foreground y background.
- Foreground se refieren a las distintas interrupciones asíncronas que, cuando suceden, ejecutan ciertas tareas.
- Background se refiere al loop infinito que habla a los módulos para realizar las operaciones deseadas (ejecución síncrona).
Modelo de programación, cuyo objetivo es proveer de modularidad en el software diseñado.
Layered software
Menciona algunas reglas para el layered software.
- Sólo se puede acceder a los módulos por medio de APIs
- Un módulo no puede comunicarse con una rutina de más alto nivel.
- No se puede modificar un vector de interrupción de otro nivel.
- Un módulo puede comunicarse con rutinas de niveles inferiores.
- Un módulo puede llamar a una función dentro de su misma capa.
Menciona los tipos de capas.
Son 3:
- MAL -> Microcontroller Abstraction Layer, se refiere a los periféricos.
- HAL -> Hardware Abstraction Layer, se refiere a las cosas externas al micro.
- APP -> Application Abstraction Layer, es la aplicación.