Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Práctica de laboratorio N.

4
SISTEMAS EMBEBIDOS.
Agudelo Jesús, Salamanca Wilmer, Acevedo Yurley
Ingeniería Electrónica - Universidad Pedagógica y Tecnológica de Colombia – Seccional Sogamoso
{jesus.agudelo01, wilmer.salamanca01,yurley.acevedo}@uptc.edu.co

Resumen – El presente informe tiene como fin el desarrollo II. PROCEDIMIENTO


de la Practica 4 de microprocesadores donde se
desarrollan diferentes ejercicios propuestos sobre la Para los siguientes ejercicios se diseñó un código en
programación de alto y bajo nivel para sistemas lenguaje ensamblador con ayuda de los software’s Spyder
embebidos, en este caso se trabaja para un procesador (Python), Dev C++ (C) QEMU y FCEUX (ensamblador),
ARM 53 el cual se encuentra en un Raspberry Pi, para estos códigos se pueden encontrar en la carpeta adjunta al
emular este entorno se utiliza QEMU, donde se realizan las documento “Labores”, el nombre de los archivos
diferentes pruebas de funcionamiento para cada labor corresponden a Labor_X donde X es el número del ejercicio
creada, las cuales van desde programación del más alto descrito a continuación.
nivel como lo es Python hasta trabajar directamente con el
procesador por medio de lenguaje assembler para esta 1) Para la Raspberry Pi diseñe un programa en Python
tarjeta, de igual manera se trabaja con el procesador MOS que genere la tabla de Routh para un polinomio de
6502 y el software de emulación FCEUX para realizar una orden n ingresado por el teclado.
edición al legendario juego “Super Mario Bros”.
 Para la elaboración de este punto se utilizó el Software
Palabras clave – QEMU, ARM, Sistemas Embebidos. de desarrollo Spyder, sobre el cual se programa en
Python, ya que este lenguaje es de alto nivel el usuario
I. INTRODUCCIÓN no requiere trabajar directamente con el procesador y
sus registros ya que los compiladores de este lenguaje
Los sistemas embebidos, también llamados sistemas son los que se encargan de analizar con que
empotrados, son sistemas operativos creados con el fin de microprocesador se cuenta y así internamente asignar
ser controlados por microprocesadores o micro las instrucciones u operaciones para cada sistema de
controladores, de igual manera a los sistemas normales, embebido o de computo.
pero llevados a un fin completamente sistematizado y sin
llevar a tantas tareas sistemas que cumplen con una tarea en Funcionamiento
específico.[1]  El usuario debe ingresar un polinomio de orden “n”
Para esta práctica se trabajan sobre 2 sistemas embebidos, para de esta forma hallar su respectiva tabla de Routh,
ARM 53 (Raspberry Pi) y MOS 6502 (NES), debido a su el programa inicia solicitando el orden (Orden > 0), de
popularidad y a las facilidades que da para el desarrollo de esta manera cuando el usuario ingresa un valor menor a
sistemas embebidos. La Raspberry Pi es un computador del 0, se imprime un mensaje de error y se solicita
tamaño de una tarjeta de crédito que emplea un SoC de nuevamente el orden del polinomio.
arquitectura ARM que contiene una CPU, una GPU y un  Con el orden ingresado, el programa solicita (orden+1)
DSP. [2] Esta trabaja sobre un SO creado a partir del Kernel elementos, los cuales pueden ser flotantes, estos van
de Linux y GNU, tomando como nombre este SO Raspbian siendo ingresados a una lista previamente creada.
basado en el SO Debian.  Con los datos almacenados en memoria se imprimen en
La emulación de estos sistemas embebidos nos permite pantalla formulando el polinomio ingresado en
poder tener una mejor cercanía al modo y manera de pantalla, posterior a esto se separa el polinomio en dos,
funcionamiento de los mismos, comprender por medio de la para de esta manera tener los dos primeros vectores de
práctica su funcionamiento y poder desarrollar para ellos la tabla y así empezar a operar, estos vectores
algún sistema embebido que nos realice cierta tarea previamente creados se imprimen en pantalla para así ir
específica. mostrando la tabla al usuario.
 Con base en el tamaño del Vector 1(Primer polinomio valor debe ser mayor a 1, y hasta un máximo de 100
de la tabla), se crea un ciclo “FOR” el cual recorre los posiciones (se puede ampliar este rango, sin embargo
2 vectores creados previamente y realiza las diferentes se considera una matriz poco probable de estas
operaciones correspondientes para hallar los valores dimensiones) si no está en el rango imprime error y
correspondientes a la tabla de la figura 1 para la solicita nuevamente el orden.
construcción de la tabla de Routh.  Luego el programa solicita ingresar los elementos por
filas de la matriz, estos valores pueden ser flotantes.
 Con los valores ingresados a la matriz, estos se
imprimen en pantalla con máximo 3 cifras decimales,
mostrando al usuario la matriz que se ingresó.
 Si la matriz ingresada es de orden 2, el determinante se
halla de manera sencilla y convencional, como se
indica en la ecuación 1, de lo contrario si el orden es
mayor a 2 el determinante se halla por teorema de
Laplace presente en la ecuación 2, se halla el
determinante de la matriz ingresada, en donde se
disponen de 3 ciclos FOR y dos punteros extra, a los
Figura 1. Tabla de Routh para un polinomio de orden 4. Fuente punteros de posición del ciclo FOR que recorre la
[3]. matriz y se halla el cofactor para cada una de las
 Luego de esto se analiza el vector resultado, donde se posiciones y disposiciones de la matriz, obtenido este
pueden tener dos consideraciones especiales: cofactor, se vuelve a invocar la función
 Cero en primer columna: Si ocurre esto, este valor Hallar_Determinante ahora con la matriz cofactor y
se reemplaza por 0.0001 (Valor que tiene de a 0 o orden-1, de esta manera, si se tiene una matriz grande,
se acerca). se puede hallar los cofactores de los cofactores y así
 Fila de ceros: Si todos los elementos del vector son obtener el valor del final del determinante.
ceros, se iguala el resultado al vector anterior y
cada posición se multiplica por el exponente de ( ) [ ] ( )
dicha posición.
 Finalmente el vector resultado se imprime en pantalla,
los procedimientos anteriores se realizan (Orden-1) | | ∑ ( ) | | ( )
veces y se imprime un mensaje indicando si hubo algún
caso especial y en que fila para que el usuario tenga en Donde aij son los elementos de la fila i y Aij la que se
cuenta esto a la hora de analizar la ubicación la obtiene al eliminar la fila i y la columna j a la matriz A.[4]
estabilidad del polinomio.  Finalmente el valor del determinante se devuelve y se
imprime en pantalla.
Nota: El diagrama de flujo correspondiente a esta labor se
puede ver al final del presente informe en una carpeta Nota: El diagrama de flujo correspondiente a esta labor se
adjunta a este informe con el nombre Anexo, Anexo A. puede ver al final del presente informe en una carpeta
adjunta a este informe con el nombre Anexo, Anexo B.
2) Para la Raspberry Pi diseñe un programa en C que
reciba en la terminal una matriz de tamaño nxn e 3) Para la Raspberry Pi desarrolle un programa en
imprima su determinante por la terminal. assembler que calcule los n primeros números de la
serie de Fibonacci, n debe ser ingresado desde la
 Para la elaboración del código se utilizó el Software terminal.
Dev C++, esto con el fin de tener una mejor redacción
en el código, compilación y prueba además de las Se utiliza el. extern printf y. extern scanf, para ingresar
características presentes en el lenguaje similares datos por teclado y mostrar datos por pantalla.
descritas para el punto anterior. Se carga a R0 la dirección del mensaje, Ingrese n, que
Funcionamiento permite al usuario definir el límite de la serie y se ingresa
 Al igual que en el punto anterior el programa inicia por teclado.
solicitando el orden de la matriz (matriz cuadrada), este
Se carga R0 con adr_of_lec, se llama scanf, guardo el dato Se cambió el valor del acumulador y de esta manera se
en adr_n altera el control del tiempo dando a favor con el valor
Se saca el valor de adr_n a R5 y se compara con cero, si es cargado un tiempo ilimitado.
menor, se envía un mensaje al usuario, indicando que no se
puede ingresar un valor negativo. Si n es mayor a 45 se 4) Vidas con menor cantidad de monedas: al obtener una
muestra un mensaje al usuario indicando que supero el vida por cada 20 monedas hay más posibilidades volver a
valor máximo. intentar un nivel sin tener que iniciar por completo el juego.
Se tiene dos números son 0 y 1 (números semilla), se
Se cambia el valor a comparar por uno menor, de esta
imprime un mensaje indicando el valor de la serie y se
forma se obtiene una vida por cada 20 monedas
muestra el 0 y el 1 en loop se carga los tres primeros valores
recolectadas.
de la Fibonacci F var 2 var 1 en los registros, se hace un
corrimiento de los datos para calcular el siguiente número 5) Salto prolongado: puede rebasar obstáculos de forma
de la serie y se hace la suma, en R0 queda el resultado y se fácil de esta manera evitar caer en las cunetas.
calcula el nuevo valor de la sumatoria. Se hace un
incremento para comparar con el valor de n cuando sean Se modificó el valor cargado en el acumulador, para este
iguales se muestra en pantalla el resultado. valor se tuvo en cuenta los posibles valores que servían
(indicados al inicio del proceso mostrado) en las subrutinas
El diagrama de flujo correspondiente a esta labor se puede que lo usan.
ver al final del presente informe en una carpeta adjunta a
este informe con el nombre Anexo, Anexo C. 6) Cambio de color de Mario: con alusión a fin de año se
ponen colores alusivos a papa Noel.
4) Para la NES (Nintendo Entertaiment System), realice
Se alteró la tabla donde contenía los colores para los
las modificaciones que considere para el videojuego de
personajes y de esta forma cambiar el tono del overol, la
Super Mario Bros, de tal forma que le permita
gorra contenidos en la misma variable y el cabello, barba,
completar el videojuego más rápido de lo que sería
camisa contenidos en una misma variable también.
normalmente posible o que le otorgue alguna ventaja
competitiva (más vidas, tiempo ilimitado, otros). El diagrama de flujo correspondiente a esta labor se puede
Para el juego de Mario Bross 1 se realizaron las siguientes ver al final del presente informe en una carpeta adjunta a
modificaciones: este informe con el nombre Anexo D
1) Obtener estrellas en los bloques de las monedas y el de
III. RESULTADOS
los hongos de vida por hongos de tamaño y flores de poder:
de esta manera será inmune a los ataques de los enemigos.
 Para prueba de la labor 1, se propone la función de
Se cambia la subrutina de los bloques de monedas para trasferencia presente en la figura 2, de este se ingresa el
agregar las estrellas y vidas extras por hongos y flores, de polinomio del denominador en el programa creado, y
esta manera cuando se genera el cambio y se llame la se obtiene como resultado la tabla mostrada en la figura
posición de la subrutina toma la modificada. 3, se usa esta función de transferencia ya que al realizar
la tabla de Routh su denominador presenta una fila de
2) Aumentar el tiempo de poder de la estrella: con mayor ceros.
tiempo de poder de inmunidad será más fácil atravesar los ( )
mundos sin ser derrotado.

Se modifica el acumulador y de esta manera el decremento Figura 2. Función de transferencia con polinomio en el
denominador de orden 8. Fuente [3].
de la función tomara más tiempo de esta manera el poder de
la estrella dura 40 segundos aproximadamente.

3) Que el tiempo corra muy lento: no hay un límite de


llegada al final del nivel y será inmortal en cuestiones de
tiempo de esta manera de obtiene una mayor puntuación.
Figura 3. Tabla de Routh obtenida para análisis de estabilidad de Figura 5. Determinante de la matriz propuesta en la figura 4.
la función de transferencia presente en la figura 2. Fuente Fuente [Autores].
[Autores].
En el desarrollo de esta labor se obtuvo un inconveniente,
Para el desarrollo de esta labor no se presentaron
ya que las variables en las que se cargaban los valores de
dificultades en sus resultados, de este modo se cumple
las operaciones realizadas eran FLOAT, estas llegaban a
totalmente con el objetivo solicitado para esta labor.
tomar valores muy grandes, y por redondeo se presenta
 Para comprobar el correcto funcionamiento del punto 2 cierto error en el resultado final, sin embargo, se solucionó
desarrollado, se propone la matriz de orden 6 mostrada cambiando el tipo de variables por DOUBLE, de esta forma
en la figura 4, obteniendo como resultado el mostrado se tiene un resultado preciso y sin errores para cualquier
en la figura 5. matriz.

Figura 6. Mensaje mostrado en pantalla para n < 0. Fuente


[Autores].
Figura 4. Matriz propuesta para probar punto 2 desarrollado en
la labor 2. Fuente [Autores].

Figura 7. Mensaje mostrado en pantalla para n> 45. Fuente


[Autores].
Figura 8. Verificación funcionamiento Fibonacci para n=9.
Fuente [Autores].
Figura 10 NES modificado

Figura 11. NES con modificación. Fuente [Autores].

Figura 9 Verificación funcionamiento Fibonacci para n=45.


Fuente [Autores].

 En la figura 6 se observa el mensaje a mostrar cuando


el usuario ingresa un valor negativo, en la figura 7 se
observa un mensaje indicando al usuario que el valor Figura 12.NES con modificación. Fuente [Autores].
máximo a calcular es de n = 45 por si este ingresa un
 En la figura 10, en la figura 11 y en la figura 12 se
valor superior, en la figura 8 y figura 9 se puede
observan las modificaciones para el video juego Super
corroborar el funcionamiento para el punto
Mario Bros, por lo que el funcionamiento del código
desarrollado en el literal 3, observando, el resultado de
es correcto, cumpliendo con el enunciado del ejercicio,
la serie de Fibonacci para un valor de n=9 y un valor de
requerido en la guía de laboratorio.
n = 45, por lo que el funcionamiento del código es
correcto, cumpliendo con el enunciado del ejercicio,
IV. CONCLUSIONES
requerido en la guía de laboratorio.
Mediante el manejo de emuladores se puede comprobar el
funcionamiento de sistemas embebidos siendo esto de gran
utilidad para reforzar el aprendizaje teórico que se obtiene
en la academia, sin embargo estos se quedan siempre lejos
de la realidad ya que no presentan la totalidad de las
funciones que se pueden lograr con dispositivos físicos,
como es el caso de la Raspberry Pi y QEMU, donde
podemos desarrollar programas que interactúan
directamente con el procesador, sin embargo queda
complicado aprovechar todos los recursos que en la vida
real esta tarjeta nos puede entregar.

Por otro lado es importante tener en cuenta siempre que


lenguaje se trabaja y como este interactúa con los
procesadores y componentes del sistema, para de esta forma
no tener limitaciones en el entorno o lugar donde se cree,
compile o ejecute los programas creados o desarrollados.

Como futuros ingenieros debemos tener bases


fundamentales sobre el desarrollo de algoritmos en
diferentes plataformas y lenguajes de desarrollo, esto
orientado no solamente al enfoque del curso “Procesadores”
si no también a lenguajes de alto nivel, ya que esto es una
gran ventaja profesional y laboral, además de ser la
algoritmia una de las mejores fuentes de desarrollo de la
mente para aplicación en solución de problemas, de igual
manera analizar las opciones que se tengan cuando se
necesite desarrollar cualquier tipo de solución orientada a
sistemas embebidos con aplicación al control ya que es una
de las mayores áreas donde se implementan estos sistemas o
son más frecuentemente usados por las capacidades que
estos pueden entregar.

V. BIBLIOGRAFÍA

[1] Azul Web. ¿Qué son los sistemas embebidos? de:


https://www.azulweb.net/que-son-los-sistemas-embebidos/

[2] Raspberry PI Foundation, “Raspberry Pi 3,” 2020.

[3] Norman S. Nise. Control Systems Engineering, Sexta Eición. Pomona.


Wiley. 2011. Chapter 6:Stability

[4] Problemas y ecuaciones. Determinantes de matrices. Recuperado de:


https://www.problemasyecuaciones.com/matrices/determinantes-matrices-
reglas-Sarrus-Laplace-ejemplos-matriz.html

También podría gustarte