Ensamblador

Para mi primer entrega de Lenguaje Ensamblador decidí hacer un programa sencillo pero que cubriera lo básico del lenguaje;

mi programa realiza la funcion la siguiente formula:  nCr

esta formula calcula la cantidad de combinaciones que se pueden generar con n y r  , realmente se le pueden llamar de la forma que se desee n combinacion con m ,n=numero de variables totales, m=numero de variables que se combinaran.

aqui esta el codigo en C… en el cual la maneje como aCb   pero es exactamente lo mismo😛

(lo empecé a hacer en nasm para aprender como se hacia desde 0 pero au no lo termino😐   )asi que estuve investigando y me encontre con lo que la mayoria de mis compañeros estuvo trabajando “traducir” el codigo a  lenguaje ensamblador con las herramientas de gcc, con la instruccion gcc -S archivo.c, con esto se genera un archivo.s el cual ya esta hecho en ensamblador con las caracteristicas de nuestro equipo; cuando estuve batallando con mi programa en nasm :p encontré ciertos documentos en los que puedo resaltar esta información.

El compilador gcc se puede ejecutar con varias opciones.

-o    indica el nombre del archivo de salida, cuando no se usa, el compilador genera un archivo llamado a.out por defecto.
-S   ensambla, la salida es un archivo en lenguaje ensamblador con el sufijo
-c    enlaza, la salida será un archivo en código objeto con el sufijo .o su contenido se encuentra en binario. Se puede utilizar la  herramienta objdump para desensamblar este archivo y visualizar su contenido.
-O opción de optimización, se acompaña con un número que indica el nivel de optimización deseado.
Se puede escoger entre O0, O1, O2 u O3.
-g produce información para la depuración del programa.

Usando el programa el comando:

gcc C.c -O3 -S

tambien se genera un archivo .s

Existe otra opción de (-v, verbose), la cual nos permite observar la manera en la
que gcc invoca a cada una de las herramientas mencionadas (el compilador, el
ensamblador y el enlazador) para generar el archivo ejecutable. Por ejemplo, si
repetimos la compilación del archivo ejemplo.s utilizando esta opción, podemos
distinguir cada uno de los pasos descritos anteriormente:

gcc C.s -o C.s -v

En este caso, se pueden observar las siguientes líneas dentro de la salida
producida por gcc:

Usando especificaciones internas.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Objetivo: i686-linux-gnu
Configurado con: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Modelo de hilos: posix
gcc versión 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
COLLECT_GCC_OPTIONS='-o' 'C.s' '-v' '-mtune=generic' '-march=i686'
 as --32 -o /tmp/ccWrfl7s.o C.s
COMPILER_PATH=/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-o' 'C.s' '-v' '-mtune=generic' '-march=i686'
 /usr/lib/gcc/i686-linux-gnu/4.6.1/collect2 --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -z relro -o C.s /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/4.6.1/crtbegin.o -L/usr/lib/gcc/i686-linux-gnu/4.6.1 -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../.. /tmp/ccWrfl7s.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-linux-gnu/4.6.1/crtend.o /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crtn.o
karenalduncin@lilalduncin:~$

Se observa que el gcc llevó a cabo tres pasos:

as --32 -o /tmp/ C.s

Llamó al compilador (cc1) pasando el archivo “C.c” como entrada, y
generando el archivo “ccWrfl7s.o” como salida. Llamó al ensamblador (as), pasando la salida del compilador como entrada, y generando el archivo objeto relocalizable “cc4ziThv.o” como salida.
Llamó al enlazador (collect2) pasando como entrada la salida del ensamblador y un conjunto de bibliotecas estándar, y generando como salida el archivo objeto ejecutable “comb” Luego de observar este resultado, es importante aclarar algunos puntos:
El archivo fuente original puede utilizarse directamente como entrada al compilador. En caso de que la entrada haya sido pre procesada previamente, debe utilizarse la opción –fpreprocessed para indicarle este hecho al cc1. El enlazador real es ld pero gcc hace la llamada a ollect2 debido al funcionamiento interno de esta herramienta.
Cada una de las herramientas llamadas por gcc cuenta con su propio conjunto de opciones que permiten un mayor control sobre todo el proceso de traducción en caso de ser necesario.
Finalmente, es posible realizar todos los pasos del proceso de traducción de manera manual, llamando a cada una de las herramientas con las opciones más adecuadas de acuerdo a lo que se quiere lograr. Por ejemplo, para generar el archivo ejecutable “Combb” podemos realizar  los siguientes pasos:

cpp C.c -o C.i
as C.s -o C.o

aqui se crea el fichero que contiene la dirección del archivo  lo podemos abrir con nuestro editor de texto que utilizemos.

En la vida real se dan situaciones en que se nos proporciona una biblioteca previamente compilada (.o, .a, .so) sin ningún tipo de  documentación, y debemos averiguar la forma correcta de utilizarla dentificarlas de alguna manera, bien sea obteniendo una lista de los símbolos globales que identifican a dichas funciones (entry points) o bien sea desensamblando el código binario y analizando el mismo.

Es posible llevar a cabo estas tareas utilizando un grupo de herramientas provistas por GNU para el manejo de archivos binarios, conocidas como binutils, entre las cuales se encuentran:

ld                         El enlazador GNU
as                         El ensamblador GNU
addr2line           Permite convertir direcciones a nombres de archivo y números de línea
ar                         Herramienta para el manejo de bibliotecas estáticas
nm                      Lista los símbolos contenidos en un archivo objeto
objcopy              Permite convertir entre formatos de archivo objeto
objdump           Muestra la información contenida en un archivo objeto
readelf               Extrae la información contenida en un archivo objeto en formato ELF
size                     Muestra el tamaño de los segmentos de un archivo objeto o una biblioteca estática
strings               Lista todas las cadenas imprimibles de un archivo
strip                   Elimina símbolos y secciones de un archivo objeto

De esta forma, podemos utilizar la herramienta objdump para desensamblar el segmento de código del archivo binario ejemplo.o y analizar su contenido:

karenalduncin@lilalduncin:~$ gcc C.c -O2 -c -o Com.o
C.c: En la función ‘main’:
C.c:14:8: aviso: se descarta el valor de devolución de ‘scanf’, se declaró con el atributo warn_unused_result [-Wunused-result]
C.c:16:8: aviso: se descarta el valor de devolución de ‘scanf’, se declaró con el atributo warn_unused_result [-Wunused-result]
karenalduncin@lilalduncin:~$ objdump C.o -d
//debajo les aparecera el desensamblado :B

En la cual se identifica claramente el procedimiento main y las instrucciones que conforman el cuerpo del mismo.
La herramienta objdump tiene varias opciones entre las que vale la pena destacar:
-d desensambla el código del segmento de texto.
-D desensambla todo el programa incluyendo los datos (el programa trata de traducir toda la información como instrucciones así que en la parte de datos la traducción no se corresponde con la información almacenada).
-G muestra la información de depuración de programas.
-l muestra los números de línea.
-r muestra las entradas de relocalización.
-R muestra las entradas de relocalización dinámica.
-t muestra la tabla de símbolos.
Si se incluye información de depuración del archivo binario (utilizando la opción –g), es posible relacionar cada dirección del programa desensamblado con las líneas originales del programa en lenguaje de alto nivel, mediante la utilización de addr2line:

gcc C.c -o C-o -c -g -O2
karenalduncin@lilalduncin:~$ addr2line -e C.o -s

Algunas opciones importantes de esta herramienta son:
-e permite especificar el archivo de entrada a analizar.
-s evita que se imprima la ruta completa del archivo en lenguaje de alto nivel al consultar una dirección.
-f Imprime el nombre de la función a la cual corresponde la línea del programa.Para archivos binarios que utilicen el formato ELF, podemos utilizar la herramienta readelf. La misma permite analizar toda la información adicional almacenada en el archivo, como por ejemplo la tabla de símbolos o la información de relocalización:

readelf C.o –r

Siguiente Imagen.

Esta herramienta también permite examinar el contenido de cualquier sección o encabezado del programa. Por ejemplo, podemos visualizar las características de todas las secciones, y observar el contenido de la sección de datos de solo lectura:

readelf C.o –S

Siguiente Imagen.

Clave para Opciones:

W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)
I (info), L (orden enlazado), G (grupo), x (desconocido)
O (se requiere procesamiento extra del SO) o (específico del SO)
p (específico del procesador)

readelf C.o –x 5

Las principales opciones de readelf son las siguientes:
-a muestra toda la información contenida en el archivo
-h muestra la información de encabezado del archivo ELF
-S muestra la información de los encabezados de sección
-s muestra la tabla de símbolos
-r muestra la información de relocalización
-x vacía el contenido de la sección especificada

:c
Referencias
http://assembly-marcelinha.googlecode.com/files/EnsAmelia.pdf
http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html
http://www.itch.edu.mx/academic/industrial/sabaticorita/_private/07Combinaciones.htm

este ya es el codigo en ensamblador

http://pastebin.com/9zgZXtJb

y este fue el de nasm que aun no eh terminado D:

http://pastebin.com/uGmYzPYd


	

Alarma de Ladrones

Para elaborar una alarma, es necesario un diseño previo; en este caso usado con permiso de Robert Delp Electronics, éste incluye muchas de las características populares de las unidades comerciales. Estas características incluyen un retardo de entrada y salida, un corte automático del timbre y de control de relés para manipular cualquier dispositivo de señalización; además de componentes diversos, y materiales que requieren de un determinado manejo como por ejemplo el circuito integrado (CMOS 4001)el cual es muy sensible a la estática del cuerpo humano, por consiguiente, es necesario utilizar pinzas especiales (pueden ser de acrílico o pinzas de metal previamente desmagnetizadas)para no dañar dicho componente.

 Los detalles operativos de la alarma de ladrones caseros son los siguientes:

1. Fuente de Alimentación.- Se necesita una corriente de 1 microamperio (A), para controlar la mayoría de los dispositivos de señal.

2. Retardo de salida.-Retardo de 30 segundos (Nota: Incrementar el tamaño del capacitor, incrementa el retardo)

3. Retardo de entrada.-Retardo de 30 segundos para regresar a su estado de listo.

4. Corte Automático del timbre.-La señal audible se corta después de 6 minutos.

5. Reset automático.-Después del corte automático de la campana, la alarma volverá al estado de “listo”, hasta que se active de nuevo.

Especificaciones del sistema

Componentes:

B1 Batería de Linterna de 12V (sustituibles por -eliminador de voltaje de 12V -dos pilas de 6V)

C1, C2 Capacitor electrolítico de 47µF, 16V

C3 Capacitor de disco de 0,01 µF

C4 Capacitor electrolítico de 470µF, 16V

D1,D2 Diodo 1N4148 (o 1N914)

D3 Diodo de silicio 1N4001, 1 A , 50 PIV

IC1 IC cuad. (cuatro salidas)NOR CMOS 4001

Q1 Transistor de NPN, 2N2222

R1,R3,R7,R8,R11,R12 (6) Resistencias de 10 kΩ, ½ W

R2 Resistencia de 22 MΩ, ½ W

R4,R5,R10 Resistencia de 680 kΩ, ½ W

R6 Resistencia de 100 kΩ, ½ W

R9 Resistencia de 220 Ω, ½ W

RL1 Relé, bobina 12V RS-1210

S1 Conmutador SPDT (sustituido por switch 2 polos un tiro)

Adicionalmente:

L LED Ultra (Azul)

R Resistencia de 380 Ω, ½ W

Circuito

Batería 12 V                                  Capacitor 47µF, 16V

                            

Alimentará la energía necesaria en el circuito.        Efectuará el retardo, ya sea el de salida, o de entrada

                                                                                                             (cambiando dicho capacitor, podremos aumentar el retardo).

Capacitor de Disco 0.001(103)                        Capacitor 470 µF, 16V

                       

Sirve para limitar cualquier cambio de voltaje.                                      Efectuará el retardo, ya sea el de salida o de entrada (cambiando dicho capacitor podremos aumentar el retardo).

 Relé RAS -1210 (5pines)                           CMOS 4001


Hará el cambio de estado de acuerdo al funcionamiento.           Es el Circuito integrado para poder realizar los flip-flops, por medio de compuertas NOR.

Diodo 4148                      Diodo 1N4001

Un diodo es un dispositivo que permite el paso de la corriente eléctrica en una única dirección. De forma simplificada, la curva característica de un diodo consta de dos regiones, por debajo de cierta diferencia de potencial, se comporta como un circuito abierto (no conduce), y por encima de ella como un circuito cerrado con muy pequeña resistencia eléctrica.

Mini Push button                      Interruptor Dip Switch de 2 vías

                   

Actuará como la compuerta normalmente abierta (NO)         Actuará como la compuerta normalmente cerrada (NC)

Buzzer 5 volts                  LED ultra              Resistencias

                            

Emite el sonido de la alarma              Enciende al momento de que se activa la alarma.                Sirven para regular el paso de la corriente.

Transistor de NPN 2N2222 

Funciona como un interruptor que modula y controla la corriente que se le está aplicando desde la batería.

Para realizar nuestra alarma debemos de seguir exactamente el circuito y utilizar los componentes correctos antes mencionados para su elaboración.

Al seguir las indicaciones de dicho circuito nos podremos dar cuenta de que las resistencias utilizadas tienen la especificación en su potencia y ésta viene mencionada a ½ Watt; lo antes citado tiene que respetarse, de esta forma concluiremos que este material conjuntamente con el capacitor de disco son los únicos materiales que utilizaremos con la peculiaridad de no tener polaridad.

Después de haber concluido de colocar los componentes del circuito en un protoboard; tenemos que seguir los siguientes pasos:

1. Verificar que todo el circuito tenga continuidad (esto se realizara mediante el apoyo de un multímetro.

2. Comprobar si hemos colocado correctamente los componentes (de acuerdo con las imágenes anexadas anteriormente).

3. Asegurarse de que la batería emita los 12Volts y también de que sus conexiones se encuentren en buen estado.

Al momento de comprobar esto usted puede permitir el paso de corriente por medio del switch (dos polos un tiro), realizado esto su alarma se encuentra en estado de “listo”, a continuación puede activar la alarma a través de las compuertas normalmente abierta y normalmente cerradas (push button y dip switch respectivamente), un ejemplo de cómo emplear estas compuertas en una residencia podría ser:

-Normalmente abierto (NO).- debajo de un tapete en la entrada de una puerta (si se desea colocar en varias puertas es necesario colocarlo en paralelo).

-Normalmente Cerrado (NC).- colocar en las ventanas de la casa (estas se tienen que colocar en serie para asegurar su funcionamiento).

Asi queda el protoboard😀

Costos de los componentes

Componentes

Unidad

Costo Unitario

Costo Total

Batería de linterna a 12V

1

$200.00

$200.00

Capacitor Electrolítico de 47 µF a 16V

2

$3.00

$6.00

Capacitor de disco cerámico de 0.01 µF

1

$1.50

$1.50

Capacitor Electrolítico de 470 µF a 16V

1

$8.00

$8.00

Diodo 1N4148 o (1N914)

2

$1.00

$2.00

Diodo de Silicio 1N4001,1A,50 PIV

1

$2.00

$2.00

IC quad(Cuatro Salidas) NOR CMOS 4001

1

$10.50

$10.50

Transistor NPN 2N2222

1

$3.00

$3.00

Resistencia de 10 KΩ, 1/2 Watt

6

$6.00

$36.00

Resistencia de 22 MΩ, 1/2 Watt

1

$2.00

$2.00

Resistencia de 680 KΩ, 1/2 Watt

3

$3.00

$9.00

Resistencia de 100 KΩ, 1/2 Watt

1

$1.00

$1.00

Resistencia de 220 Ω, 1/2 Watt

1

$1.00

$1.00

Relevador (Relé) bobina a 12V RS-1210

1

$15.00

$15.00

Conmutador SPDT (Switch 2 polos un tiro)

1

$8.00

$8.00

LED Ultra(Azul)

1

$10.00

$10.00

Resistencia de 380 Ω,1/2 Watt

1

$1.00

$1.00

Subtotal

$316.00

Total

$366.56

 Complicaciones al formar el circuito

Algunas piezas fueron difíciles de conseguir, a continuación pondremos la lista de dichas piezas:

Resistencia de 22 MΩ, ½ W: en ninguna tienda de electrónica la manejaban así que la encargamos sobre pedido.

-CMOS:  también se incluyo en el pedido.

-Capacitores: no tenían disponibles de 47µF a 16V.

Otras de las complicaciones que tuvimos al realizar el circuito fue que el momento de la duración de la alarma accionada, debería ser de 6 minutos, y se desactivaba a los 4 minutos con 40 segundos, lo que realizamos para solucionar esto, actualizamos a un nuevo CMOS, y la alarma funcionó adecuadamente; se agregó un capacitor de disco de 0.01 µF para que el retardo de entrada se aumentara, ya que se activaba antes de los 30 segundos.

Recomendaciones

Se podría trabajar con componentes menos sensibles como el Flip-Flop JK, o con un GalV816 programado para realizar la función del CMOS(las compuertas NOR). 

************************************************************************************************

Y ya soldado🙂

**le falta el TTL :B pero esta en una de las bases / en la siguiente base se encuentran las compuertas NO/NC.

Tambien trabajaré este mismo prototipo implementado en un PIC16 con programacion en BASIC

🙂

Bibliografía

http://www.alldatasheet.com/

Lenguajes Alto y Bajo Nivel

Lenguaje de Máquina Lenguaje mas básico, propio de cada computadora, ya que está relacionado con el diseño del hardware de la misma (dependiente de la máquina)

PC->Lenguaje maquina -> Lenguaje Ensamblador ->Lenguaje de Alto nivel->Usuario

Lenguaje Ensamblador Consiste en abreviaturas similares al inglés, llamadas instrucciones nemotécnicas, que permiten representar las operaciones elementales de la computadora (dependiente de la máquina)

Lenguaje Ensamblador Lenguaje de bajo nivel o ensamblador : La computadora no entiende    directamente lenguaje ensamblador por lo que un programa escrito en este lenguaje tiene que ser  traducido a lenguaje de máquina por un programa llamado un ensamblador para que pueda ser  ejecutado por la computadora. Los lenguajes ensambladores todavía requieren que el programador tenga un buen conocimiento de la arquitectura de la computadora. Como los lenguajes ensambladores son dependientes de la máquina, todo programa escrito en un lenguaje ensamblador particular tendrá que ser reescrito si se va a ejecutar en otro tipo de computadora.

Los lenguajes de alto nivel, son aquellos cuya característica principal, consiste en una estructura sintáctica y semántica legible, acorde a las capacidades cognitivas humanas. A diferencia de los lenguajes de bajo nivel, son independientes de la arquitectura del hardware, motivo por el cual, asumen mayor portabilidad.

Son ejemplo de lenguajes de alto nivel: Python, Perl, PHP, Ruby, Lisp, Java, Fortran, C++, C#, entre otros.

 Podemos “traducir” /”ensamblar” códigos en lenguajes de alto nivel hacia los lenguajes ensambladores como por ejemplo:

Comando para ensamblar un codigo en C y utilizarlo en assembler :

codigo.c gcc -S

Tambien podemos utilizar el código de algún lenguaje de alto nivel a lenguaje ensamblador y de ahi a lenguaje maquina para realizar funciones con dispositivos programables.

para poder entender mejor el lenguaje ensamblador esto puede ser de gran ayuda.

Referencias

 

Cuando se utilizan Ciclos esto tambien es importante …

 

 

 

Referencias-

http://www.debianhackers.net/entendiendo-los-lenguajes-de-programacion

http://forum.codecall.net/assembly-tutorials/40086-intro-win32-assembly-using-nasm-part-2-a.html

Usabilidad

“la usabilidad es estar realmente seguro de que algo funciona bien: que una persona con habilidades promedio pueda utilizar una cosa para su intención sin terminar frustrado.”

La usabilidad es hoy en día reconocida como uno de los atributos de calidad dentro del desarrollo de software.

Los resultados de una buena usabilidad en un proyecto implican:

  • Beneficios para el usuario: permite al usuario acceder, de manera eficiente y satisfactoria, a un producto fácil de usar e intuitivo.
  • Beneficios para el cliente: Return on Investment (ROI); es decir, una reducción del tiempo y los costos de desarrollo, el mantenimiento, soporte y uso.

Mejora en la calidad del producto, haciéndolo más competitivo en un mercado que demanda mayor facilidad en el uso.

Hacer usabilidad es hacer que el usuario se enfoque en su tarea y no en la tecnología ni los controles que le permiten realizarla.

:3

Referencias-

http://www.fluxit.com.ar/servicios/usabilidad

http://www.intuitivamente.com/2011/11/10/usabilidad/

Sistemas Integrados

Un sistema integrado  (embedded system) es un sistema diseñado por lo general dedicado a la realización de funciones limitadas de computación fiable, segura y con costes de mantenimiento mínimos para hacer uno o varios dedicadas o especificas Funciones. Es incorporado como parte de un dispositivo completo que incluye hardware y partes mecánicas. Por el contrario, una computadora de propósito general, tales como unordenador personal  (PC), está diseñado para ser flexible y para cumplir con una amplia gama de necesidades del usuario final.Los sistemas empotrados controlar muchos dispositivos en uso común hoy en día. Los sistemas empotrados son controlados por uno o más núcleos de procesamiento principales, que son  micro controladores o procesador digital de señales (DSP). La característica clave, sin embargo, se ha dedicado a manejar una tarea particular. Dado que el sistema integrado está dedicado a tareas específicas, los ingenieros de diseño puede optimizar para reducir el tamaño y coste del producto y aumentar la fiabilidad y el rendimiento. Físicamente, sistemas integrados van desde los dispositivos portátiles, como los relojes digitales y reproductores de MP3 , a las grandes instalaciones fijas como semáforos, los controladores de fábrica , o los sistemas de control de las centrales nucleares . La complejidad varía de baja, con un solo microcontrolador  chip, a muy alto con varias unidades, periféricos y redes. En general, un “sistema integrado” no es un término estrictamente definido, como la mayoría de los sistemas tienen algún elemento de extensibilidad o de programación. Por ejemplo, los ordenadores portátiles comparten algunos elementos con los sistemas embebidos, tales como los sistemas operativos y microprocesadores que les de poder, pero que permiten diferentes aplicaciones que se cargan y periféricos que se conectan.

Los sistemas integrados abarcan todos los aspectos de la vida moderna y hay muchos ejemplos de su uso. Los sistemas de telecomunicaciones emplean a numerosos sistemas integrados de centrales telefónicas de la red de telefonía móvil. Las redes de computadoras utiliza dedicada enrutadores y los puentes de la red para la ruta de datos. Electrónica de consumo  incluyen asistentes personales digitales (PDA s), reproductores MP3, teléfonos móviles, consolas de videojuegos, cámaras digitales, DVD s, GPS  receptores, y la impresora.Muchos aparatos del hogar, como hornos de microondas, lavadora y el lavavajillas, están incluidos los sistemas integrados para proporcionar flexibilidad, eficiencia y características; sistemas de uso en red del termostato de control de temperatura más preciso y eficiente que puede cambiar la hora del día y de temporada . Domótica  utiliza con cable e inalámbricas de redes que pueden se utiliza para controlar las luces, el clima, seguridad, audio / visual, vigilancia, etc, todos los que utilizan los dispositivos integrados para la detección y el control. Los sistemas de transporte en el vuelo a los automóviles utilizan cada vez más sistemas embebidos. Los aviones nuevos contienen avanzados de aviónica como de guía inercial y los sistemas de GPS  receptores que también tienen considerables necesidades de seguridad. Varios motores eléctricos – motores DC sin escobillas, motor de inducción de, y motor de corriente continua, está utilizando eléctrico / electrónico de control del motor. Automóviles, vehículo eléctrico, y el vehículo híbrido s está utilizando cada vez más sistemas integrados para maximizar la eficiencia y reducir la contaminación.

En segundo lugar, los procesadores integrados se puede dividir en dos grandes categorías: los microprocesadores comunes (microprocesador) y microcontroladores (μC), que tienen muchos más periféricos en el chip, reduciendo el coste y tamaño.En contraste a la computadora personal y los mercados de servidores, un número bastante grande de arquitecturas de CPU que se han utilizado, hay Von Neumann  , así como diversos grados de la arquitectura de Harvard s, RISC, así como la no-RISC y VLIW; longitudes de palabra varían de 4 – bits a 64 bits y más allá (sobre todo en DSP  procesadores), aunque siguen siendo los más típicos 8/16-bit. La mayoría de las arquitecturas vienen en un gran número de diferentes variantes y formas, muchas de las cuales también son fabricados por varias compañías. Una larga lista, pero todavía no exhaustiva de las arquitecturas más comunes son: 65816, 65C02, 68HC08, 68HC11, 68k , 78K0R/78K0, 8051 , ARM , AVR , AVR32 , Blackfin ,C167 , Coldfire, la COP8 , Cortus APS3, EZ8 , eZ80, FR-V , H8, HT48 , M16C, M32C, MIPS , MSP430, PIC , PowerPC , R8C , RL78, SHARC , SPARC , ST6 , SuperH , TLCS-47, TLCS-870, TLCS-900, TriCore , V850 , 86 , XE8000 , Z80, AsAP , etc

Características que se pueden tomar en cuenta para un sistema integrado.

  1. Eficiencia Energética (llamar la potencia mínima para el propósito)
  2. Personalizados de tensión / potencia requisitos (VDC: 12, 14, 24, 72 ..)
  3. Seguridad (a prueba de hackers)
  4. Fiabilidad (trabajo sin fallo desde hace años)
  5. Medio Ambiente (amplio rango de temperatura, sellado de los productos químicos, la radiación)
  6. La interacción eficaz con el usuario (menos botones, el tacto)
  7. Se integre con el diseño

    Ejemplo un video de un proyecto que representa un sistema integrado🙂

Al igual que con otro software, diseñadores de sistemas integrados utilizan  el compiladores, ensambladores, y depuradores para desarrollar software de sistemas embebidos. Sin embargo, también pueden utilizar algunas herramientas más específicas:

  • En los depuradores de circuito o emuladores (ver próxima sección).
  • Utilidades para agregar una suma de comprobación o CRC  de un programa, por lo que el sistema embebido puede comprobar si el programa es válido.
  • Para los sistemas que utilizan el procesamiento de señales digitales , los desarrolladores pueden utilizar un banco de trabajo de matemáticas, como Scilab  / Scicos , MATLAB  / Simulink , EICASLAB , MathCad , Mathematica , o DSP piedra variable para simular las matemáticas. También pueden utilizar las bibliotecas, tanto para el anfitrión y el objetivo que elimina el desarrollo de rutinas de DSP como se hace en RTOS DSPnano  y el sistema operativo Unison.
  • Compiladores y enlazadores de encargo puede ser utilizado para mejorar la optimización para el hardware en particular.
  • Un sistema embebido puede tener su propio lenguaje o herramienta de diseño, o añadir mejoras a un lenguaje ya existente, como adelante o básico .
  • Otra alternativa es agregar un sistema operativo en tiempo real  o el sistema operativo integrado, que pueden tener capacidades DSP como RTOS DSPnano .
  • El modelado y generación de código de herramientas  basa a menudo en las máquinas de estado

Las herramientas de software puede venir de varias fuentes:

  • Las compañías de software que se especializan en el mercado integrado
  • Portadas de los GNU  herramientas de desarrollo de software
  • A veces, las herramientas de desarrollo para un ordenador personal se puede utilizar si el procesador integrado es un pariente cercano a un procesador de PC común

A medida que la complejidad de los sistemas embebidos crezca, mayores herramientas a nivel de sistemas operativos y están migrando en una máquina donde tiene sentido. Por ejemplo, los teléfonos celulares, Personal Digital Assistant s y otras computadoras de los consumidores a menudo necesitan software que sea importante que se compra o proporcionados por una persona que no sea el fabricante de la electrónica. En estos sistemas, un ambiente de programación de código abierto como Linux , NetBSD , OSGi  o Java Embedded  es necesario para que el proveedor de software de terceros puede vender a un mercado grande.

Embedded depuración  puede realizarse en diferentes niveles, dependiendo de las instalaciones disponibles. Más simple al más sofisticado que puede ser más o menos agrupados en las siguientes áreas:

  • Depuración residente interactivo, utilizando el shell simple que ofrece el sistema operativo embebido (por ejemplo, Forth y Basic)
  • Depuración externo mediante la tala o la salida de puerto serie para rastrear la operación utilizando un monitor en flash o utilizando un servidor de depuración como el depurador remedio  que incluso trabaja para heterogéneos sistemas multi-núcleo.
  • Un depurador en circuito (ICD), un dispositivo de hardware que se conecta con el microprocesador a través de unJTAG  o interfaz de Nexus. Esto permite el funcionamiento del microprocesador para ser controlado externamente, pero normalmente se limita a las capacidades de depuración específicos en el procesador.
  • Un emulador in-circuit  (ICE) reemplaza el microprocesador con un equivalente simulada, proporcionando un control total sobre todos los aspectos del microprocesador.
  • Un completo emulador  ofrece una simulación de todos los aspectos del hardware, permitiendo a todos a ser controlada y modificada, y que permite la depuración en un PC normal.

Los sistemas empotrados suelen residir en las máquinas que se espera que funcione continuamente durante años, sin errores, y en algunos casos se recuperan por sí mismos si ocurre un error. Por lo tanto el software está desarrollado y probado por lo general con más cuidado que el de los ordenadores personales, y poco fiables partes mecánicas en movimiento, tales como unidades de disco, interruptores o botones que se evitan. temas específicos de confiabilidad pueden incluir:

  1. El sistema de seguridad no puede ser cerrado para su reparación, o es demasiado inaccesible para reparar. Los ejemplos incluyen sistemas espaciales, cables submarinos, balizas de navegación, sistemas de perforaciones, y los automóviles.
  2. El sistema debe mantenerse en funcionamiento por razones de seguridad. “Modos de Limp” son menos tolerables. A menudo copias de seguridad son seleccionados por un operador. Los ejemplos incluyen la navegación aérea, sistemas de control del reactor, los controles de seguridad críticos fábrica de productos químicos, las señales de los trenes, motores de aviones monomotores.
  3. El sistema se pierden grandes cantidades de dinero cuando se cierran: centrales telefónicas, controles de fábrica, puentes y los controles del ascensor, la transferencia de fondos y creación de mercado, las ventas automáticas y el servicio.

Herramientas que probablemente haré uso en este curso.

Oregano (Simulador de Circuitos Electronicos)

sudo apt-get install oregano
/*aun no eh instalado las librerias ._. asi que no compila nada,agradeceria si alguien me podría orientar */

 

Arduinio (herramientas para el compilador /openjdk/IDE arduino)

sudo apt-get install gcc-avr
sudo apt-get install openjdk-6-jre 
sudo apt-get install arduino

 

Referencias
http://www.absoluteastronomy.com/topics/Embedded_system
http://www.embeddedsystem.com/
http://www.absoluteastronomy.com/topics/Home_automation
http://www.arduino.cc/

LaTeX

LaTeX tiene una variedad de paquetes que pueden ayudar a los algoritmos de formato, el código, y “pseudo”. Estos paquetes proporcionan mejoras de estilo en un estilo uniforme (es decir, las fuentes máquina de escribir) para que las construcciones tales como bucles o condicionales se separa visualmente del resto del texto.

LaTeX está formado por un gran conjunto de macroinstrucción de es un sistema de tipografia ( \mathbf{T\!_{\displaystyle E} \! X}). Es muy utilizado para la composición de artículos académicos, tesis y libros técnicos, dado que la calidad tipográfica de los documentos realizados con LaTeX es comparable a la de una editorial científica de primera línea.

LaTeX es software libre bajo licencia LPPL.

El nombre LaTeX, al derivarse del nombre TeX, mantiene la misma regla para la pronunciación que Donald Knuth especifica en The TeXbook,4 es decir que, en castellano, debería pronunciarse /látej/ pues la última letra no es la x (equis) sino la letra griega χ (ji). No obstante, la pronunciación viene dada por el uso, tal como explica Leslie Lamport en su libro,3 por lo que suele ser /láteks/ la manera más habitual de nombrarlo en español.

Composición tipográfica con el paquete de algoritmos

El entorno ofrece una serie de algoritmos de las construcciones populares para el diseño de algoritmos. El comando \ begin {} algorítmico se puede dar el argumento opcional de un entero positivo, que si se les hará la numeración de líneas que se produzca en los múltiplos de ese entero. Por ejemplo \ begin {} algoritmos [5] se incorpore al ambiente algorítmico y el número de cada quinta línea.

A continuación se muestra un ejemplo de un algoritmo de composición básica utilizando el paquete de algoritmos (recuerde añadir el \ usepackage {} algorítmica declaración a su preámbulo del documento):

\begin{algorithmic}
\IF {$i\geq maxval$}
        \STATE $i\gets 0$
\ELSE
        \IF {$i+k\leq maxval$}
                \STATE $i\gets i+k$
        \ENDIF
\ENDIF
\end{algorithmic}

La fuente de LaTeX se puede escribir en un formato familiar a los programadores para que sea fácil de leer. Esto no va, sin embargo, afectan al diseño final del documento.

Latex-algorithmic-if-else.png

** La palabra LaTeX en código

Código wiki

El código ” <i>L<sup>A</sup>T<sub>E</sub>X</i>” genera LATEX

El código “L<sup>A</sup>T<sub>E</sub>X” genera LATEX

El código “<math>L^AT_EX</math>” genera: LATEX

Código LaTeX

El código “\LaTeX{}” genera el logo. Cuando no puede ser reproducido adecuadamente, por ejemplo al escribir en texto llano, se suelen escribir las consonantes en mayúsculas («LaTeX») para evitar la confusión con la palabra «látex».

Lenguaje

código símbolo código símbolo código símbolo código símbolo código símbolo
\’a á \’e é \'{\i} í \’o ó \’u ú
\’A Á \’E É \'{\I} Í \’O Ó \’U Ú
\”u ü \”U Ü \~n ñ \~N Ñ \c c ç
\c C Ç  !` ¡  ?` ¿
\AA Å \^a â \`a à \=a ā \”a ä
\~a ã \ae æ \oe œ \o ø ð

Alfabeto griego

código símbolo código símbolo código símbolo código símbolo
\Alpha \Alpha\, \Beta \Beta\, \Gamma \Gamma\, \Delta \Delta\,
\Epsilon \Epsilon\, \Zeta \Zeta\, \Eta \Eta\, \Theta \Theta\,
\Iota \Iota\, \Kappa \Kappa\, \Lambda \Lambda\, \Mu \Mu\,
\Nu \Nu\, \Xi \Xi\, \Pi \Pi\, \Rho \Rho\,
\Sigma \Sigma\, \Tau \Tau\, \Upsilon \Upsilon\, \Phi \Phi\,
\Chi \Chi\, \Psi \Psi\, \Omega \Omega\,
\alpha \alpha\, \beta \beta\, \gamma \gamma\, \delta \delta\,
\epsilon \epsilon\, \zeta \zeta\, \eta \eta\, \theta \theta\,
\iota \iota\, \kappa \kappa\, \lambda \lambda\, \mu \mu\,
\nu \nu\, \xi \xi\, \pi \pi\, \rho \rho\,
\sigma \sigma\, \tau \tau\, \upsilon \upsilon\, \phi \phi\,
\chi \chi\, \psi \psi\, \omega \omega\,

Símbolos matemáticos

código símbolo código símbolo código símbolo código símbolo
\digamma \digamma \varepsilon \varepsilon \varkappa \varkappa \varphi \varphi\,
\varpi \varpi \varrho \varrho \varsigma \varsigma \vartheta \vartheta
\aleph \aleph \beth \beth \daleth \daleth \complement \complement
\ell \ell \eth \eth \hslash \hslash \mho \mho
\partial \partial \wp \wp \infty \infty \angle \angle
\Finv \Finv \Game \Game \Im \Im \Re \Re
\exists \exists \forall \forall \in  \in \ni  \ni
\approx \approx \neq \neq \leq \leq \geq \geq
\leftarrow  \leftarrow \rightarrow  \rightarrow \langle  \langle \rangle  \rangle
\nabla  \nabla \mathbb{AB} \mathbb{AB} \mathcal{AB} \mathcal{AB} \mathbf{AB} \mathbf{AB}
\times  \times \emptyset  \emptyset \Rightarrow  \Rightarrow \hookrightarrow{}  \hookrightarrow{}
\cong  \cong \{ { \} } \subset  \subset
\prod  \prod \coprod  \coprod \bigcup  \bigcup \bigcap  \bigcap

Expresiones matemáticas

código resultado
0=a_{11} + a_{12} 0=a_{11} + a_{12}\,
x^{a+b}=x^ax^b x^{a+b}=x^ax^b\,
x_i=\sqrt[n]{\frac{a_i}{b_i}} x_i=\sqrt[n]{\frac{a_i}{b_i}}
\begin{pmatrix} \alpha& \beta^{*}\\ \gamma^{*}& \delta \end{pmatrix} \begin{pmatrix}\alpha& \beta^{*}\\ \gamma^{*}& \delta \end{pmatrix}
\int_{\vert x-x_0 \vert < X_0}\Phi(x) <img src=”http://upload.wikimedia.org/math/8/d/8/8d817aaba437909c63456ffd49706737.png&#8221; alt=”\int_{\vert x-x_0 \vert
\int\limits_{\vert x-x_0 \vert < X_0}\Phi(x) <img src=”http://upload.wikimedia.org/math/0/a/6/0a69ba57b97b6ca0575aa9784ab19790.png&#8221; alt=”\int\limits_{\vert x-x_0 \vert
\oint F(x)dx \oint F(x)dx
\iint \Phi(x, y)dxdy \iint \Phi(x,y)dxdy
\lim_{n \rightarrow \infty} \frac {n*l}{2*r} = \pi \lim_{n \rightarrow \infty} \frac {n*l}{2*r}=\pi
{n \choose r} = \frac{n!}{r! (n – r)!} {n \choose r} = \frac{n!}{r! (n - r)!}
x’+x” = \dot x + \ddot x  x'+x'' = \dot x + \ddot x
\vec \mathbf{v} = a\hat x + b\hat y \vec \mathbf{v}  = a\hat x + b\hat y
\begin{matrix}A\xrightarrow{\;\;\;f\;\;\;}B\\\pi\downarrow{\;\;\;\;\;}\;\;\;\uparrow{} \phi\\C\xrightarrow{\;\;\;g\;\;\;}D\end{matrix} \begin{matrix}A\xrightarrow{\;\;\;f\;\;\;}B\\\pi\downarrow{\;\;\;\;\;}\;\;\;\uparrow{} \phi\\C\xrightarrow{\;\;\;g\;\;\;}D\end{matrix}
f(x)=\begin{cases} \begin{matrix} 0 & si\; x>0 \\ x^2 & si\;no \end{matrix} \end{cases} 0 \\ x^2 & si\;no \end{matrix} \end{cases}” />
código
\documentclass[12pt]{article}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\title{\LaTeX}
\date{}
% Este es un comentario, no será mostrado en el documento final.
\begin{document}
  \maketitle \LaTeX{} es un programa para preparar documentos con
  el sistema de tipograf\'{\i}as\footnote{%nota al pie de página
               Seg\'{u}n Wikipedia, la tipograf\'{i}a es el arte y t\'{e}cnica del manejo y selecci\'{o}n de tipos,
originalmente de plomo, para crear trabajos de impresi\'{o}n } %fin nota al pie de página
  \TeX{}. \LaTeX{} fue desarrollado originalmente por Leslie Lamport
  en 1984 y se convirti\'o en el m\'etodo dominante para la
  manipulaci\'on de \TeX. La versi\'on utilizada para generar
  este documento es \LaTeXe.
  \newline
  % El siguiente código muestra la calidad de la tipografía de LaTeX
  \begin{align}
    E &=& mc^2                              \\
    m &=& \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}}
  \end{align}
\end{document}
resultado
Ejemplo LaTeX.png

Single line statements

\STATE <text>
traslate

traducción del inglés al español

Una declaración simple, por ejemplo, para el establecimiento de una variable. Por ejemplo,
\begin{algorithmic} \STATE i=0 \end{algorithmic}

would produce
i = 0

If-statements

Hay tres formas de esta construcción

\IF{<condition>} <text> \ENDIF
\IF{<condition>} <text> \ELSE <text> \ENDIF
\IF{<condition>} <text> \ELSIF{<condition>} <text> \ELSE <text> \ENDIF

The third form accepts as many \ELSIF{} clauses as required.

For-loops

Hay dos formas

\FOR{<condition>} <text> \ENDFOR
\FORALL{<condition>} <text> \ENDFOR
Un tradicional bucle “for”. El método de iteración se describe generalmente en el primer argumento,

e.g.

\FOR{$i = 1 \to 10$}
\STATE $i \gets i + 1$
\ENDFOR

While-loops

\WHILE{<condition>} <text> \ENDWHILE

Repeat until condition

\REPEAT <text> \UNTIL{<condition>}

Infinite loops

\LOOP <text> \ENDLOOP

Precondition

\REQUIRE <text>

Postcondition

\ENSURE <text>

Returning variables

\RETURN <text>

Printing variables

\PRINT <text>
This is included because it is used so frequently it is considered an operation in its own right.

Comentarios

\ {COMENTARIO <text>}

Tenga en cuenta que no puede utilizar COMENTARIO \ como la primera declaración de una estructura cerrada, como \ SI .. \ ENDIF \ PARA .. \ ENDFOR, \ forall .. \ ENDFORALL, \ MIENTRAS .. \ ENDWHILE, y \ begin {algorítmica} .. \ end {} algorítmica. Un error “Error LaTeX: algo va mal tal vez una falta \ itemserán reportados (No tiene mucho sentido). Hay dos soluciones:

Use \ COMENTARIO DEL ESTADO \ {} <text>.
Utilizar los argumentos opcionales en las estructuras cerradas. Por ejemplo, \ mientras que [<comment-text>] {} <condición>. Para utilizar las matemáticas en el texto del comentario, vuelva a colocar $ .. $ por \ {..} ensuremath

Compatibilidad con hyperref

Debido a un error, el paquete de algoritmos no es compatible con hyperref. Una solución es el paquete de algoritmos-fix. Copia el código que se encuentra en la página vinculada a un archivo llamado algorítmicafix.sty e incluirlo con \ usepackage {algorítmica, algorítmica-fix}. Sin embargo, si este truco no funciona, intente con usepackage \ {} hyperref antes de usar \ usepackage {} algorítmica. En este caso, puede que ni siquiera necesita el algoritmofix.sty.
Cambio de nombre de las cosas: el algoritmo de procedimiento, requieren / garantizar a la entrada / salida

\ floatname {algorithm} {} Procedimiento
\ renewcommand {\ algorithmicrequire} {\ textbf {Entrada:}}
\ renewcommand {algorithmicensure \} {\ textbf {Salida:}}

El medio ambiente algoritmo

A menudo es útil para el algoritmo producida por algoritmos que flotaba” en el punto óptimo en el documento para evitar que se divide entre las páginas. El entorno ofrece este algoritmo y algunas otras funciones útiles. Incluirla añadiendo la
\usepackage{algorithm} to your document’s preamble. It is entered into by

\begin{algorithm} \caption{<your caption for this algorithm>} \label{<your label for references later in your document>} \begin{algorithmic} <algorithmic environment> \end{algorithmic} \end{algorithm}

algoritmo de numeración

El sistema de numeración por defecto para el paquete de algoritmos algoritmo es el número secuencial. A menudo no es deseable, sobre todo en documentos de gran tamaño, donde la numeración de acuerdo al capítulo es más adecuado. La numeración de los algoritmos pueden ser influenciados por proporcionar el nombre del componente del documento en el que la numeración debe ser reiniciado. Los valores permitidos para esta opción son: parte, capítulo, artículo, inciso, subsubsection o nada (por defecto). Por ejemplo:

\usepackage[chapter]{algorithm}

Lista de los algoritmos

Cuando se utiliza figuras o tablas, puede agregar una lista de ellos cerca de la tabla de contenidos; el paquete algoritmo proporciona un comando similar. sólo hay que poner

\ listofalgorithms

en cualquier parte del documento, y LaTeX se imprimirá una lista de los “algoritmo” ambientes en el documento con la página correspondiente y el título.

Un ejemplo del manual

Este es un ejemplo tomado del manual (manual oficial, p.7)

\begin{algorithm}                      % enter the algorithm environment
\caption{Calculate $y = x^n$}          % give the algorithm a caption
\label{alg1}                           % and a label for \ref{} commands later in the document
\begin{algorithmic}                    % enter the algorithmic environment
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \Leftarrow 1$
\IF{$n < 0$} \STATE $X \Leftarrow 1 / x$ \STATE $N \Leftarrow -n$ \ELSE \STATE $X \Leftarrow x$ \STATE $N \Leftarrow n$ \ENDIF \WHILE{$N \neq 0$} \IF{$N$ is even} \STATE $X \Leftarrow X \times X$ \STATE $N \Leftarrow N / 2$ \ELSE[$N$ is odd] \STATE $y \Leftarrow y \times X$ \STATE $N \Leftarrow N - 1$ \ENDIF \ENDWHILE \end{algorithmic} \end{algorithm}

Referencias=:http://es.wikipedia.org/wiki/LaTeX

Algoritmo Floyd Warshall

Algoritmo Floyd Warshall


  • Obtiene la mejor ruta entre todo par de nodos.
  • Trabaja con la matriz D inicializada con las distancias directas entre todo par de nodos.
  • La iteración se produce sobre nodos intermedios, es decir, para todo elemento de la matriz se prueba si lo mejor para ir de i a j es a través de un nodo intermedio elegido o como estaba anteriormente, y esto se prueba con todos los nodos de la red.
    Una vez probados todos los nodos de la red como nodos intermedios, la matriz resultante da la mejor distancia entre todo par de nodos.

Es decir el algoritmo es el siguiente:

  • Iniciación.
    – matriz de distancias.
    – distancia del enlace entre el nodo i y el nodo j.
  • Iteración. Para n=0,1 … ,N-1

    Empezando con el nodo 1 como intermedio (n=0), se prueba con todos los nodos como nodos intermedios, el último es con el nodo N como nodo intermedio (n=N-1), y así se van hallando las distancias mínimas.

Árboles


Para el desarrollo de los siguientes conceptos vamos a tomar como ejemplo la siguiente red:

y sobre ella vamos a definir:

  • Arbol de expansión (Spanning tree)de una red es un subconjunto de la red en el que conseguimos:
    1. Mantener la conectividad; es posible alcanzar cualquier nodo desde otro.
    2. No hay lazos, no hay bucles topológicos.

    No es único; un ejemplo sobre la red anterior es:

  • Se suele usar cuando se desea hacer una inundación, ya que si todos los nodos tienen en su tabla de encaminamiento el mismo árbol de expansión, no se producirán bucles y todos los paquetes llegan a todos los nodos. Se usa sobre todo en difusiones.
  • Arbol de expansión de coste o distancia mínima
    Es un árbol de expansión que cumple que el sumatorio de distancias que emplea es mínimo.
    Por ejemplo el anterior tiene coste 10.
    El siguiente es mínimo ( su suma de distancias es 5);no existe otro con suma de distancias menor.
  • Arbol divergente de un nodo.
    Hay un árbol divergente por cada nodo sin embargo hay un árbol de expansión para toda la red.
    El árbol divergente de un nodo es aquel árbol que determina las distancias más cortas de ese nodo al resto de los nodos: es, expresada de forma gráfica, la tabla de encaminamiento de cada nodo.
    Por ejemplo, en la red usada como ejemplo, el árbol divergente del nodo A, es el siguiente:


Para el ejemplo anterior las matrices serían:


Nota:El nodo 1 es el nodo A de la red, el 2 es el B y así sucesivamente.
La segunda matriz tiene el nodo 1 como nodo intermedio, la tercera matriz tiene el nodo 2 como nodo intermedio, … y así hasta la última matriz que tiene el nodo 5 como nodo intermedio y da como resultado la matriz de distancias mínimas buscada.


  • La última matriz es la matriz de distancias buscada, ya que se han probado todos los nodos intermedios.
  • El algoritmo da sólo la menor distancia; se debe manejar información adicional para encontrar tablas de encaminamiento.
  • Hasta no hallar la última matriz no se encuentran las distancias mínimas.
  • Su complejidad es del orden de .

Encontre 2 videos que explican como realizarlo.

y mi ejemplo que realizamos en el salon de clases😀

a travez de este grafo se usa el mismo metodo …

esto fue un poco dificil aun tengo dudas si lo tengo bien todavia falta corroborar agradeceria comentarios😀

Referencias

http://ants.dif.um.es/asignaturas/redes/redes/tema3/floyd.htm

Anteriores Entradas antiguas