Labora Andres Julian Jimenez y Alejandro Navarrete
Labora Andres Julian Jimenez y Alejandro Navarrete
Labora Andres Julian Jimenez y Alejandro Navarrete
Marco Teórico:
DMA: El DMA (acceso directo a la memoria) permite que el dispositivo de red mueva
los datos del paquete directamente a la memoria del sistema, reduciendo la utilización de
la CPU. Sin embargo, la frecuencia y los intervalos aleatorios en los cuales los paquetes
llegan no permiten que el sistema ingrese un estado de energía más bajo. El coalescentes
DMA permite que el NIC recoja los paquetes antes de que inicie un evento DMA. Esto
puede aumentar la latencia de la red, pero también aumenta las probabilidades de que el
sistema consuma menos energía. Los adaptadores y dispositivos de red basados en el
controlador Ethernet Intel® I350 (y controladores posteriores) Asistencia la fusión de
DMA.
Microcontrolador STM32F411RE:
Un Microcontrolador STM32F411RE es un circuito integrado reconfigurable,
compuesto de interconexiones internas programables, las cuales combinan bloques
lógicos, de procesamiento de señales digitales, etc. Su núcleo de procesamiento tiene
como base un procesador Cortex®-M4, con frecuencia de operación de 84MHz, unidad
de punto flotante, entre otras características. Este integrado es una muy buena opción a la
hora de tratar con sistemas embebidos debido a sus 10 temporizadores programables, de
16 y 32 bits, conversor ADC de 12 bits, 3 puertos USARTs, múltiples canales de uso
general (GPIO), etc. Sus módulos son programables mediante software especializado de
su casa matriz, STM, específicamente STM CubeMX, y STM CubeIDE
Metodología y equipos:
● El sistema va a estar esperando a que el push button se active para iniciar el
proceso de transferencia.
● El sistema cuando este en el proceso de transferencia y se inicia sin errores se
debe prender el LED amarillo.
● El sistema cuando el DMA generé la interrupción de fin se debe realizar lo
siguiente:
a. Apagar el LED amarillo
b. Verificar si el sistema reporta errores: prender el rojo titilando
c. Si la transferencia se da con éxito debe prender el LED verde titilando
Materiales
● Resistencias
● Leds (amarillo, verde, rojo)
● STM32CubeMX, STM32CubeIDE
● Pulsador
● STMA32F411RE
Procedimiento
Lo primero que realizamos es configurar los pines que encenderán los leds:
PC5 siendo el led rojo, PC6 led verde, PC8 led amarillo, PC13 el boton azul de la tarjeta,
se puso en pull down para correcto funcionamiento del código.
Acá nos fijamos bien de que estuviera en byte y luego habilitamos las interrupciones para
ese stream del dma.
Luego se registraron los callbacks:
Los callbacks se registraron dentro del static void MX_DMA_Init y antes del
HAL_NVIC_SetPriority.
Y luego se definieron algunas variables y las funciones de que hará cuando haya error o
transferencia exitosa.
Suponiendo error, el fall sería igual a 1, entonces dentro del while entra al if de fall ==1,
y empezará a titilar el led rojo con un delay de 100 ms entre cada encendido/apagado.
Suponiendo transferencia exitosa, el fall sería igual a 2, entonces dentro del while entra al
if de fall ==2, y empezará a titilar el led verde con un delay de 100 ms entre cada
encendido/apagado.
Como ya no se modifica el valor de fall (en ambos casos), ahí se quedará por siempre o
hasta que se vuelva a presionar el botón.
Resultados:
Antes de disminuir la frecuencia, lo que se veía era que la transferencia terminaba muy
rapido, el led amarillo se encendia y apagaba muy rapido, casi no se alcanzaba a ver.
https://youtu.be/PcTKmHqxneM
https://youtube.com/shorts/sm8U-1iKPrg?feature=share
Para el error, el led amarillo dura menos tiempo y empieza a titilar el led rojo antes que
en el caso de la transferencia completa con el led verde.
https://youtube.com/shorts/nCPajUiPuy4?feature=share
Los leds no se prenden más lento o más rápido, el reloj en este caso no los afecta.
Entre los dos casos, es difícil medir el tiempo de ejecución para 84 Mhz, se utilizó una
fórmula aproximada que nos mostró el profe en clase:
(𝑐𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑑𝑎𝑡𝑜𝑠)/(𝑓𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒𝑙 𝑟𝑒𝑙𝑜𝑗) = 𝑡𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛
Conclusiones: Con una frecuencia de reloj muy alta, los tiempos de ejecución
disminuyen, con una frecuencia de reloj baja los tiempos de ejecución aumentan.
Adicionalmente se halla que existe una relación entre tiempo, frecuencia y tamaño de
datos, el tiempo de ejecución aumenta según aumenta el tamaño de datos, por ejemplo se
duplicó el tamaño de datos, y se observó que a base de esto el tiempo de ejecución
también se duplicó. El tiempo de ejecución tiene una relación inversamente proporcional
con respecto a la frecuencia.
Bibliografía:
[2] Knuth, Donald (1998). «5.2.2: Ordenamiento por intercambio». El arte de programar ordenadores,
Volumen 3 (en inglés) (segunda edición). Addison-Wesley. pp.