Skip to content

Examen: Parcial 1:2024_02_26:Robotica

Juan Gonzalez-Gomez edited this page Feb 27, 2024 · 7 revisions

Examen Parcial 1: 2024-02-26. Robotica

  • Tiempo: 50 minutos
  • Descripción: Examen Parcial 1. Laboratorio. Grado en Ingeniería de Robótica Software
  • Fecha: 2024/Feb/26
  • Temario: Sesiones L1-L4

Contenido

Enunciado

El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un programa

Test (5 ptos)

  • Realizado a través de Aula virtual
  • 10 preguntas tipo test
  • Las respuesats incorrectas restan un 25% del valor de la pregunta
  • Solución disponible en Aula virtual

Programa (5 ptos)

El código de redundancia cíclica (CRC) es un elemento de control para asegurar que el mensaje transmitido no se ha visto afectado en una comunicación. Para calcularlo hay que sumar todas las palabras del mensaje más una constante de control.

Escribe un programa en ensamblador del RISC-V, crc.s, que calcule el Código de Redundancia Cíclica (CRC) de un mensaje que se encuentra almacenado en las cuatro primeras palabras del segmento de datos y que lo guarde en una variable definida en la quinta posición.

El contenido del mensaje es el siguiente:

0xBEBE
0xCAFE 
0x01234567
0x0000FF00

La constante de control es 0x131

NOTA: Envía el fichero crc.s con la solución como una entrega del laboratorio

BONUS

Conseguirás los bonus si el programa funciona correctamente utilizando menos de 16 instrucciones

Solución al programa

Como siempre ocurre al programar, existen infinitas soluciones. Pero en todas ellas se debe respetar la especificación

Este es el contenido del fichero crc.s:

	# -- Constante de control
	.eqv CONTROL 0x131

	.data
	#-- Mensaje almacenado en memoria (ESPECIFICACION)
msg:	.word 0xBEBE, 0xCAFE, 0x01234567, 0x0000FF00
crc:	.word 0  #-- CRC calculado (ESPECIFICACION)

	.text
	
	#-- crc = msg[0] + msg[1] + msg[2] + msg[3] + CONTROL
	#-- x5       x1    x2       x3       x4       
	
	#-- x10: Direccion del mensaje
	la x10, msg
	
	#-- Leer el mensaje
	lw x1,0(x10) #-- Leer Primera palabra
	lw x2,4(x10) #-- Leer segunda palabra
	lw x3,8(x10) #-- Leer tercera palabra
	lw x4,0xC(x10) #-- Leer cuarta palabra
	
	#-- Realizar las sumas
	add x5, x1,x2
	add x5, x5, x3
	add x5, x5, x4
	
	#-- Sumar la constante de control
	addi x5,x5,CONTROL
	
	#-- Almacenar el crc
	sw x5, 0x10(x10)
	
	#-- Terminar
	li a7, 10
	ecall

El valor del crc calculado lo podemos comprobar haciendo estos cálculos, por ejemplo usando python:

$ ipython3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.31.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: crc = 0xBEBE +  0xCAFE + 0x01234567 + 0x0000FF00 + 0x131

In [2]: hex(crc)
Out[2]: '0x125cf54'

El valor calculado es 0x125cf54, que es el mismo que se obtiene con el programa crc.s. Por tanto ¡Nuestro programa funciona!

Además este programa tiene 13 instrucciones. Se cumple el BONUS! (13 < 16)

Evaluación

La evaluación del programa se hace en dos fases:

  • Funcionalidad (2.5 ptos): Se comprueba si el programa funciona, y si cumple con las especificaciones (Nombre del fichero correcto, ensablado sin errores, sin errores en tiempo de ejecución, resultado correcto, variables definidas en sus posiciones de memoria especificadas, etc). Esto se hace mediante un script de test, que automatiza el proceso

  • Código (2.5 ptos): Se inspecciona visualmente cómo está hecho el código: código limpio, claro, con comentarios, instrucciones correctas, fallos de programación, etc...

TEST automático

TODO

Autores

Licencia

Enlaces

Página principal


Sesiones de Prácticas

P1: Simulador RARs

L1: Práctica 1-1. RARs
L2: Práctica 1-2. Ensamblador
L3: Práctica 1-3. Variables

P2: E/S mapeada. Llamadas al sistema

L4: Pract 2-1. E/S mapeada
L5: Práctica 2-2: Inst. ecall
L6: Prác 2-3: Cadenas

P3: Bucles y Saltos condicionales

L7: Práct 3-1: Bucles y saltos
L8: Práct 3-2: Cadenas II

P4: Subrutinas

L9: Pract 4-1: Subrut. Nivel-1
L10: Pract 4-2: La pila
L11: Pract 4-3: Recursividad

P5: Memoria Dinámica

L12: Pract 5-1. Heap. Listas

VÍDEO DE DESPEDIDA

Ejercicios de examen

Simulacro examen 1
GISAM. Ordinario. 2019-Dic-11
GISAM. Extra. 2020-Jul-03
GISAM. Ordinario. 2021-Ene-21
GISAM. Ordinario. 2022-Ene-10
GISAM. Extra. 2022-Jun-29
GISAM. Parcial 1. 2022-Oct-26
GISAM. Parcial 2. 2022-Nov-30
GISAM. Parcial 3. 2022-Dic-21
GISAM. Parcial 1. 2023-Oct-09
GISAM. Parcial 2. 2023-Nov-11
GISAM. Parcial 3. 2023-Dic-20
GISAM. Extra. 2024-Jun-17
GISAM. Parcial 1. 2024-Oct-14
GISAM. Parcial 2. 2024-Nov-13
GISAM. Parcial 3. 2024-Dic-16
TELECO. Ordinario. 2019-Dic-13
TELECO. Extra. 2020-Jul-07
TELECO. Ordinario. 2021-Ene-21
TELECO. Extra. 2021-Jul-02
TELECO. Ordinario. 2022-Ene-10
TELECO. Extra. 2022-Jun-29
TELECO. Ordinario. 2023-Ene-10
TELECO. Extra. 2023-Jun-29
TELECO. Parcial 1. 2023-Oct-20
TELECO. Parcial 2. 2023-Nov-17
TELECO. Parcial 3. 2023-Dic-22
TELECO. Extra. 2024-Jun-17
TELECO. Parcial 1. 2024-Oct-10
TELECO. Parcial 2. 2024-Nov-21
TELECO. Parcial 3. 2024-Dic-19
Robótica. Ordinario. 2020-Jun-1
Robótica. Extra. 2020-Jul-13
Robótica. Ordinario. 2021-Mayo-20
Robótica. Extra. 2021-Junio-16
Robótica. Parcial 1. 2022-Feb-25
Robótica. Parcial 2. 2022-Abril-1
Robótica. Parcial 3. 2022-Mayo-6
Robótica. Parcial 1. 2023-Feb-27
Robótica. Parcial 2. 2023-Mar-27
Robótica. Parcial 3. 2023-May-08
Robótica. Parcial 1. 2024-Feb-26
Robótica. Parcial 2. 2024-Mar-20
Robótica. Parcial 3. 2024-May-06
Robótica. Extra. 2024-Junio-24
Datos. Parcial 1. 2023-Oct-09
Datos. Parcial 2. 2023-Nov-15
Datos. Parcial 3. 2023-Dic-20
Datos. Parcial 1. 2024-Oct-09
Datos. Parcial 2. 2024-Nov-13

SOLUCIONES

Práctica 1: Sesiones 1,2 y 3
Práctica 2: Sesiones 4, 5 y 6
Práctica 3: Sesiones 7 y 8
Práctica 4: Sesiones 9, 10 y 11
Práctica 5: Sesión 12

Clone this wiki locally