jueves, 1 de octubre de 2009

arquitectura de hardware

Arquitectura hardware (HW)
Para simplificar la estructura mecánica de la plataforma móvil hemos partido de una configuración de tracción diferencial, ya que es la más sencilla y fácil de implementar, tanto a nivel mecánico como electrónico. Desde el punto de vista mecánico, la plataforma consta de dos alturas (Fig. 02). La altura inferior da cabida a las baterías, motores, transmisión y a la electrónica de control, potencia y comunicaciones. La parte superior está pensada para situar en ella un ordenador portátil (en el que resida el control y la percepción de alto nivel) así como algunos periféricos (sónar de ultrasonidos o webcam). En cuanto al diseño de la electrónica, hemos optado por centralizar la mayoría de las funciones en un microcontrolador, que será el encargado de controlar y medir la velocidad de giro de cada rueda motriz, calcular el desplazamiento del robot (odometría) y medir variables de interés. Para comunicarnos con el robot hemos optado por utilizar un puerto serie estándar (interfaz RS-232). El microcontrolador también se encargará de gestionar las comunicaciones y de leer y ejecutar los comandos que se le envíen. De este modo, se independiza el control de alto nivel del de bajo nivel, que queda a cargo del microcontrolador. Por último, es necesario añadir una etapa de potencia adicional para poder mover los motores a partir de las señales generadas por el microcontrolador.

1.2.1 ARQUITECTURA DE HARDWARE
Un computador desde la perspectiva del hardware, esta constituido por una serie de dispositivos cada uno con un conjunto de tareas definidas. Los dispositivos de un computador se dividen según la tarea que realizan en: dispositivos de entrada, salida,
Figura 11. Arquitectura de Hardware
Dispositivos de entrada: Son aquellos que permiten el ingreso de datos a un computador. Entre estos se cuentan, los teclados, ratones, scaners, micrófonos, cámaras fotográficas, cámaras de video, game pads y guantes de realidad virtual.
Figura 12. Dispositivos de Entrada
Dispositivos de salida. Son aquellos que permiten mostrar información procesada por el computador. Entre otros están, las pantallas de video, impresoras, audífonos, plotters, guantes de realidad virtual, gafas y cascos virtuales.
Figura 13. Dispositivos de Salida
Dispositivos de almacenamiento. Son aquellos de los cuales el computador puede guardar información nueva y/o obtener información previamente almacenada. Entre otros están los discos flexibles, discos duros, unidades de cinta, CD-ROM, CD-ROM de re-escritura y DVD.
Figura 14. Dispositivos de Almacenamiento.
Dispositivos de comunicación: Son aquellos que le permiten a un computador comunicarse con otros. Entre estos se cuentan los modems, tarjetas de red y enrutadores.
Figura 15. Modem
Dispositivo de computo: Es la parte del computador que le permite realizar todos los cálculos y tener el control sobre los demas dispositivos. Esta formado por tres elementos fundamentales, la unidad central de proceso, la memoria y el bus de datos y direcciones.
Figura 16. Diagrama esquemático del dispositivo de computo
La unidad central de proceso (UCP)[1]: es el ‘cerebro’ del computador, esta encargada de realizar todos los cálculos, utilizando para ello la información almacenada en la memoria y de controlar los demás dispositivos, procesando las entradas y salidas provenientes y/o enviadas a los mismos. Mediante el bus de datos y direcciones, la UCP se comunica con los diferentes dispositivos enviando y obteniendo tales entradas y salidas.
Figura 17. Unidad Central de Proceso.
Para realizar su tarea la unidad central de proceso dispone de una unidad aritmético lógica, una unidad de control, un grupo de registros y opcionalmente una memoria cache para datos y direcciones.
La unidad aritmético lógica (UAL)[2] es la encargada de realizar las operaciones aritméticas y lógicas requeridas por el programa en ejecución, la unidad de control es la encargada de determinar las operaciones e instrucciones que se deben realizar, el grupo de registros es donde se almacenan tanto datos como direcciones necesarias para realizar las operaciones requeridas por el programa en ejecución y la memoria cache se encarga de mantener direcciones y datos intensamente usados por el programa en ejecución.
La memoria esta encargada de almacenar toda la información que el computador esta usando, es decir, la información que es accedida (almacenada y/o recuperada) por la UCP y por los dispositivos. Existen diferentes tipos de memoria, entre las cuales se encuentran las siguientes:
RAM (Random Access Memory): Memoria de escritura y lectura, es la memoria principal del computador. Solo se mantiene mientras el computador está encendido.
ROM (Read Only Memory): Memoria de solo lectura, es permanente y no se afecta por el encendido o apagado del computador. Generalmente almacena las instrucciones que le permite al computador iniciarse y cargar (poner en memoria RAM) el sistema operativo.
Cache: Memoria de acceso muy rápido, usada como puente entre la UCP y la memoria RAM, para evitar las demoras en la consulta de la memoria RAM.
El bus de datos y direcciones permite la comunicación entre los elementos del computador. Por el bus de datos viajan tanto las instrucciones como los datos de un programa y por el bus de direcciones viajan tanto las direcciones de las posiciones de memoria donde están instrucciones y datos, como las direcciones lógicas asignadas a los dispositivos.
[1] La unidad central de proceso es más conocida como CPU por sus siglas en inglés Central Process Unit.
[2] La unidad aritmético lógica es más conocida como ALU por sus siglas en inglés Arithmetic Logic Unit.

1.2.2 ARQUITECTURA DE SOFTWARE
Un computador desde la perspectiva del software, esta :
Un sistema operativo.
Un conjunto de lenguajes a diferente nivel con los cuales se comunica con el usuario y con sus dispositivos. Entre estos están los lenguajes de máquina, los ensambladores y los de alto nivel.
Un conjunto de aplicaciones de software.
Un conjunto de herramientas de software.

1.2.2.1 Definiciones Básicas
Software: El hardware por si solo no puede haga nada, pues es necesario que exista el software, que es un conjunto de instrucciones que le dicen al hardware que haga .
Lenguaje de programación: Es un conjunto de reglas y estándares que es utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. .
Programa: Es la representación de algún algoritmo en un lenguaje de programación específico.
1.2.2.2 Lenguaje de Máquina
Es el único lenguaje que entiende el hardware (máquina) y usa exclusivamente el sistema binario. Este lenguaje es específico para cada hardware (procesador, dispositivos, etc.)[1].
El programa es almacenado en memoria y es tanto códigos de instrucción como datos. La estructura de una instrucción en lenguaje máquina es la siguiente:
CODIGO ARGUMENTO(S)
Figura 18. Lenguaje de máquina
1.2.2.3 Lenguaje Ensamblador
Es un lenguaje que usa mnemónicos (palabras cortas escritas con caracteres alfanuméricos), para codificar las operaciones. Los datos y/o direcciones son codificados generalmente como números en un sistema hexadecimal. Generalmente es específico (aunque no único) para cada lenguaje de máquina.
La estructura de una instrucción en este lenguaje es la siguiente:
MNEMONICO ARGUMENTO(S)
Un ENSAMBLADOR es un software, generalmente escrito en lenguaje de máquina, que es capaz de traducir de lenguaje ensamblador a lenguaje de máquina, mientras que un CARGADOR es un software que almacena en memoria el programa en lenguaje de máquina generado por el ensamblador.
Figura 19. Lenguaje Ensamblador.
1.2.2.4 Lenguaje de Alto Nivel
Lenguaje basado en una estructura gramatical que permite el anidamiento de instrucciones (instrucciones dentro de instrucciones). Cuenta con un conjunto de palabras reservadas (escritas en lenguaje natural), para codificar estructuras de control y/o instrucciones. Estos lenguajes permiten el uso de símbolos aritméticos y/o relacionales para describir cálculos matemáticos, y generalmente representan las cantidades numéricas mediante sistema decimal.
Gracias a su estructura gramatical, estos lenguajes permiten al programador olvidar el direccionamiento de memoria (donde cargar datos y/o instrucciones en la memoria), ya que este se realiza mediante el uso de conceptos como el de variable; De esta manera, permiten la realización de programas independiente del Hardware.
Los COMPILADORES e INTERPRETES son software capaz de traducir de un lenguaje de alto nivel al lenguaje ensamblador específico de una máquina. Los primeros toman todo el programa en lenguaje de alto nivel, lo pasan a lenguaje ensamblador y luego lo ejecutan. Los últimos toman instrucción por instrucción, la traducen y la van ejecutando.
Figura 20. Lenguaje de Alto Nivel.

1.2.2.5 Sistema Operativo
Es el software encargado de administrar los recursos del sistema, para esto ofrece un conjunto de primitivas (funciones y procedimientos) a otro software, que le permiten a este ultimo ser tan independiente de la arquitectura de hardware como le sea posible. Se dice que un software es para el sistema operativo , si utiliza las primitivas que el sistema operativo proporciona. Adicionalmente, un sistema operativo ofrece un conjunto de comandos a los humanos sean o no programadores, para interactuar con la máquina.
Los sistemas operativos pueden ser escritos en lenguaje de alto nivel, como UNIX que fue escrito en C, en lenguaje ensamblador y/o en lenguaje máquina. Algunos de los sistemas operativos más conocidos son UNIX, LINUX, Microsoft Windows.

1.2.2.6 Aplicaciones y Herramientas
Una APLICACION es un software construido para que el computador realice una tarea específica y con el cual no se puede construir otro software. Ejemplos de aplicaciones son los procesadores de texto como Microsoft Word y Word Perfect y las hojas electrónicas de cálculo como Microsoft Excel y Lottus.
Una HERRAMIENTA es un software construido especialmente para el desarrollo de nuevo software, (tanto de aplicaciones como de herramientas). Ejemplos de herramientas son los compiladores como Turbo C y Turbo Pascal, las herramientas CASES y los ambientes integrados de desarrollo.
Figura 21. Arquitectura de Software Completa.
[1] En el Anexo A se expone el concepto de sistema de numeración, y en el Anexo B se muestra como el sistema de numeración binario es utilizado para representar datos en un computador digital.

Figura 21. Arquitectura de Software Completa.
[1] En el Anexo A se expone el concepto de sistema de numeración, y en el Anexo B se muestra como el sistema de numeración binario es utilizado para representar datos en un computador digital.
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo1/cap_01/leccion202.htm

miércoles, 30 de septiembre de 2009

manejo de la bios

BIOS: CONCEPTOS Y CONFIGURACION. El BIOS (Basic Input Output System – Sistema Básico de Entrada Salida) es un programa que se encuentra grabado en un chip de la placa base, concretamente en una memoria de tipo ROM (Read-Only Memory). Este programa es el que se encarga de comprobar el hardware instalado en el sistema, ejecutar un test inicial de arranque, inicializar circuitos, manipular periféricos y dispositivos a bajo nivel y cargar el sistema de arranque que permite iniciar el sistema operativo. En resumen, es lo que permite que el ordenador arranque correctamente en primera instancia. Inicialmente era muy complicado modificar la información del BIOS en el ROM, pero hoy en día la mayoría de los BIOS están almacenados en una memoria flash capaz de ser reescrita, esto es lo que permite que se pueda actualizar. El BIOS se apoya en otra memoria, llamada CMOS porque se construye con esa tecnología, en ella carga y almacena los valores que necesita y que son susceptibles de ser modificados (cantidad de memoria instalada, numero de discos duros, fecha y hora, etc). A pesar de que apaguemos el ordenador, los valores de la memoria de BIOS se mantienen intactos, ¿cómo es posible?, pues gracias a una pila que la alimenta. Puesto que el consumo es muy bajo y se recarga al encender el ordenador, la pila puede durar varios años. Cuando hay problemas con la pila, los valores de dicha memoria tienden a perderse, y es cuando pueden surgir problemas en el arranque del tipo: pérdida de fecha y hora, necesidad de reconfigurar dispositivos en cada arranque, y otros. En caso de problemas sustituir la pila es trivial, basta con comprar una de iguales características, retirar la vieja y colocar la nueva en su lugar. En condiciones normales no es necesario acceder al BIOS ya que al instalar un dispositivo, siempre que hayamos tenido la precaución de asegurarnos que es compatible o aceptable por nuestra placa base, éste es reconocido inmediatamente y configurado por BIOS para el arranque. No obstante, hay ocasiones en las que se hace necesario acceder a su configuración, en este manual veremos cómo hacerlo y algunos ejemplos. Acceso y manipulación del BIOS: Para acceder al programa de configuración del BIOS, generalmente llamado CMOS Setup, tendremos que hacerlo pulsando un botón durante el inicio del arranque del ordenador. Generalmente suele ser la tecla Supr aunque esto varía según los tipos de placa y en portátiles. Otras teclas empleadas son: F1, Esc, o incluso una combinación, para saberlo con exactitud bastará con una consulta al manual de su placa base o bien prestando atención a la primera pantalla del arranque, ya que suele figurar en la parte inferior un mensaje similar a este: ''Press DEL to enter Setup'' El aspecto general del BIOS dependerá de qué tipo en concreto tenga en su placa, las más comunes son: Award, Phoenix (se han unido) y AMI. Bastante similares pero no iguales. El programa del BIOS suele estar en un perfecto inglés y además aparecen términos que no son realmente sencillos, si no sabe lo que está tocando consulte el manual o a un especialista, de lo contrario se encontrará con problemas. Aunque tengan nombres diferentes, existen algunos apartados comunes a todos los tipos de BIOS. Una clasificación puede ser: 1 Configuración básica de parámetros - Standard CMOS Setup. 2 Opciones de BIOS - BIOS Features, Advanced Setup. 3 Configuración avanzada y chipset - Chipset features. 4 Password, periféricos, discos duros, etc. 5 Otras utilidades. Bajo el 1er punto se puede encontrar la configuración de la fecha y hora, los discos duros conectados (IDE) y la memoria detectada, entre otras cosas. En el punto 2º existen muchos parámetros modificables, suelen aparecer: caché, secuencia de arranque (Boot sequence), intercambio de disqueteras, etc. En el punto 3 podemos encontrar parámetros relativos a las características del chipset, memoria RAM, buses y controladores. Bajo el punto 4 hemos reunido una serie de opciones que suelen estar distribuidas, gracias a ellas podemos insertar una contraseña de acceso al programa del BIOS, modificar parámetros relativos a los periféricos integrados, control de la administración de energía, control de la frecuencia y el voltaje, etc. Y finalmente en el punto 5 reunimos las opciones que nos permiten guardar los cambios efectuados, descartarlos, cargar valores por defecto, etc. En la parte inferior de la interfaz del programa podremos ver el inventario de teclas necesarias para navegar entre las opciones y modificarlas, es importante leerlo y tenerlo en cuenta. Imagen de la interfaz más común de BIOS (Award y Phoenix). Modificaciones comunes: ejemplos. Existen una serie de parámetros que son susceptibles de ser modificados en algún momento, de hecho en la mayoría de foros de soporte técnico se plantean esas dudas. Vamos a explicar cuáles son y usarlos como ejemplo: 1.- Secuencia de Arranque: Esto le indica al BIOS a qué unidad ha de ir para buscar el arranque del sistema operativo. La secuencia indica el orden de izq. a der. en que se buscará en las unidades. Antiguamente el orden solía marcar A C SCSI/otros lo cual indicaba que primero que debía mirar en la unidad A (disquetera) y posteriormente en C (disco duro principal), gracias a esto se podía arrancar el ordenador con un disco de arranque antes que el sistema operativo. Hoy en día esto ha cambiado en muchos casos, cuando se necesita arrancar desde un CD (instalación de sistemas operativos (Windows XP, Linux) hay que modificar la secuencia de arranque (a menos que el sistema sea tan nuevo que ya venga de fábrica) para que inicialmente apunte a la unidad lectora de CD. Supongamos que la unidad tiene la letra D, el orden podría ser D A C o D C A, por ejemplo. La opción suele encontrarse en BIOS Features >> Boot Sequence para las BIOS Award. En algunos casos en vez de integrarse en una sola opción, esto se realiza en varias, suelen referirse al orden de arranque de dispositivos y se llaman: First Boot Device, Second Boot Device, Third Boot Device y Boot Other Device. Basta especificar en cada una cuál es el dispositivo que arrancará en ese orden (First = primero, Second = segundo, Third = tercero, Other = otro). 2.- Modificar FSB/Multiplicador: Esto es una necesidad surgida en gran medida a raíz del Overclocking, son los parámetros que definen la velocidad del bus frontal del sistema y el valor multiplicador del procesador. Estos parámetros se suelen modifican como consecuencia de querer forzar el procesador a trabajar más rápido. Para tocar esto se debe hacer con total conocimiento, cualquier daño al sistema queda bajo su responsabilidad. La opción se denomina Frequency/Voltage Control, aunque puede llevar otro nombre. Se recomienda consultar manuales sobre Overclocking para esta característica. 3.- Deshabilitar dispositivos integrados (tarjeta gráfica/sonido): Esto es especialmente frecuente en los últimos años ya que las placas base integran tarjetas gráficas y tarjetas de sonido en la misma placa, y se podria pasar sin tener que adquirirlas a parte, pero la mayoría de las ocasiones se prefiere adquirir una tarjeta externa (a bus PCI, AGP o PCI-Express) ya que ofrecen mucha mejor calidad y prestaciones que las integradas. Para poder usar las tarjetas que compremos hay que deshabilitar primero las que van integradas, para ello debemos acceder al BIOS. Esta opción tenemos que consultarla en el manual de nuestra placa base porque depende mucho del modelo, pero en general tendremos que localizar términos como: Onboard Audio, Onboard Graphics, etc... Es probable que nos veamos en la situación de tener que actualizar el firmware del BIOS. Esto puede ser debido a errores detectados de fabricación, queramos instalar un procesador nuevo o algún dispositivo reciente, o simplemente añadir funcionalidades de las nuevas versiones del BIOS. Para realizar esto se suele emplear un programa en Windows y un fichero con la información, todo esto se debe descargar desde la web del fabricante de la placa base o BIOS, teniendo en cuenta que hay que saber con total exactitud el modelo de placa base que tenemos y el tipo de BIOS. Además, hay que aclarar que dicha operación tiene un alto riesgo para nuestra placa, un error podría ser fatal. Si surge algún problema podríamos dañar seriamente el BIOS y tendríamos que recurrir a una tienda especializada para su reparación o substitución. Notas Finales: El manual de la placa base es fundamental, siempre debemos acudir a él cuando tengamos dudas manipulando el BIOS. Dicho manual es un referente de vital importancia. El BIOS es un programa delicado y siempre que lo manipulemos debemos hacerlo con precaución y conocimiento. Si tenemos dudas es mejor no tocar nada y consultar a un profesional. Para saber qué modelo de placa y BIOS tenemos se puede usar una gran variedad de programas, recomiendo en particular el CPUZ de CPUID.org el cual muestra los valores del procesador, placa base y memoria fundamentalmente. Esto nos será útil si necesitamos los datos para una posible actualización de firmware.