Mostrando las entradas con la etiqueta Hardware. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Hardware. Mostrar todas las entradas

viernes, 3 de agosto de 2007

/tarea de Arquitectura de Sistemas



Dejo una tarea que realizamos junto al Tata para la materia de Arquitectura de Sistemas, materia que consistía en ese entonces sobre circuitos lógicos, álgebra de boole, una introducción a la arquitectura de computadores, concepto de interrupciones, conocer assembler con el fin de programar a bajo nivel los componentes de la arquitectura 8086 (por medio de interrupciones, eventualmente recurrencia, etc), y una introducción a la arquitectura RISC y conceptos del lenguaje SPARC.

La tarea que realizamos fue una de las mejores que hice, tenía menos conciencia pero mas tiempo para dedicarle a facultad, y además porque en esta tarea se amalgaman una serie de conceptos: programación en assembler, manejo de la memoria de video y el manejo de interrupciones.

Objetivo de la tarea: implementar en ambiente DOS un controlador de un dispositivo de entrada/salida como es el mouse, y representar en la pantalla mediante un puntero los posibles movimientos que este hace, así como informar las coordenadas de dicho puntero cuando se presiona el botón izquierdo del mouse.

El trabajo fue realizado en ensamblador 8086, y está basado en la interrupción generada por el puerto serial COM1 o COM2.

Breve explicación:
El problema se divide en tres grandes tareas:

  • Recepción de datos
  • Procesamiento y detección de errores
  • Visualización en pantalla de información relativa al ratón

Un autómata finito muestra las diferentes instancias del problema, este diagrama nos sirvió a los efectos de construir el pseudocódigo de nuestro algoritmo principal.
(En la documentación se explica la semántica de cada estado)

Para abordar esta tarea debimos conocer algo más de lo que nos dieron sobre la UART (Universal Asynchronous receiver/transmitter), dispositivo de E/S que encapsula las funciones de transmisión y recepción empleadas en la comunicación en serie asíncrona
  • En serie porque los bits que representan un valor se transmiten uno a uno
  • Asíncrona porque se puede recibir/transmitir en cualquier momento
Si bien en la documentación hay una plantilla con mas especificaciones sobre el funcionamiento de la UART, sus registros, la forma en que recibe o envía señales, etc, a nosotros al menos no nos fue suficiente, y debimos googlear. De todos modos, la incluyo a modo de referencia rápida.

documentacion.rar
  • maquinas de estados.doc (descripción del problema, abordaje, rutinas)
  • uart.pdf (mini manual sobre UART)
  • arqoblig.pdf (letra del problema)
  • notas.txt (parámetros de la UART, notas generales)
fuentes.rar (contiene los fuentes en assembler del problema, el propósito de cada uno de los mismos está explicado en el archivo correspondiente)
  • macro.asm
  • setpic.asm
  • setuart.asm
  • vars.asm
  • rrssii.asm
  • const.asm
  • mouse.asm
utiliarios.rar (archivos necesarios para compliar, linkeditar, generar .com, etc)
  • compilo.bat
  • tasm.exe
  • td.exe
  • dosxnt.exe
  • tlink.exe

tasm
: "Turbo Assembler", ensamblador que genera un código objeto (.obj)
tlink: "Turbo Link", programa que linkedita el código objeto con otras rutinas ya compiladas, generando el programa ejecutable (.exe).
td: "Turbo Debbuger", programa que permite visualizar la ejecución de un programa, inspeccionando el valor de los registros en cada instancia del mismo en forma visual.
dosxnt: para trabajar en terminales Windows NT.

"Para ejecutar el Turbo Assembler en modo de compatibilidad con el código escrito para el Microsoft Macro Assembler, se le debe poner como parámetros:
tasm /jmasm archivo.asm
Como se debe generar un archivo ejecutable de dos .COM, al ejecutar el linker se le pasan los parámetros /t, o sea: tlink /t archivo.obj, luego de esto se habrá generado el archivo.com"

(Sobre el uso de los utilitarios está mas explicado en la letra de la tarea)

Paralelamente, no relacionado con la tarea pero sí con programación assembler, también hay un código que hicimos para preparar el examen y aprender a implementar recurrencia, implementamos el conocido problema de las Torres de Hanoi. (archivo: Hanoi.asm)

Lo pueden descargar desde la sección Fuckultad o aqui:


lunes, 23 de julio de 2007

/memtest (RAM)



(Actualizado)

Hoy una amiga por MSN y otra vez un amigo, me comentaron de errores extraños que les hacía su computadora, reiniciarse, quedar 'congelada', no responder a ciertos programas, y cuando tuve problemas similares fue debido a que la memoria RAM se había dañado.

El primer paso para verificarlo, fue ejecutar memtest86+ predecesor de memtest86.
Memtest86+ es desde hace mucho tiempo el estándar en el análisis de errores en la memoria y utilizado ampliamente.

El sistema original no era del todo compatible con los últimos procesadores de 64bits y chipsets, lo que provocó el surgimiento de Memtest86+, una reedición mejorada del programa original que mantiene el espíritu de utilidad y estabilidad del original. A diferencia de su predecesor es frecuentemente actualizado para evitar quedar desfasado.

Memtest es un programa completamente independiente del Sistema Operativo, para arrancarlo es necesario grabarlo en algún dispositivo de arranque (por ejemplo un CD o un diskette).
Las veces que lo he probado fue creando un diskette de arranque, pero puede hacerse desde un CD (configurando el CD o diskette con prioridad de arranque sobre el disco duro, y reiniciar).

Mediante una interfaz se puede configurar los parámetros del test.
Instalación: descargar el Pre-Compiled Windows package para diskette o un ISO (versión .zip) para crear los dispositivos de arranque.
Descompactar todos los archivos en una carpeta, en el caso del diskette, clickear en el ícono de Install (para Windows el diskette aparecerá como si no tuviera formato).

En el caso del CD, usar cualquier programa para crear la imagen desde el ISO extraído del .zip.

(Para no complicarse bajar la versión precompilada para MsDos-Win en diskette)

Como no depende del sistema operativo, el test puede ser cargado desde el diskette o LILO (en los sistemas Linux)

Memtest86+ arrancará automáticamente y comenzará a ejecutar los tests por defecto.
Memtest consiste de 9 tests, conviene dejarlo por mas de una pasada, cuanto mas tiempo mejor para que reiteren los tests (paridad, escritura, lectura, patrones de las celdas de memoria, etc). El test no se detiene nunca, sigue ejecutándose hasta que lo detengamos, ya sea reiniciando o apagando la computadora.
Este test reporta errores, no los soluciona.

Los algoritmos de testeo dan una aproximación bastante fiel, no es 100% segura como dice en la web, puede haber 'falsos' errores que no tengan que ver con la memoria defectuosa en sí (basta un chip de RAM en el slot equivocado, o en la mother incorrecta).


Otro test que vi googleando es hcidesign, aunque no lo probé, pareciera no necesitar dispositivo de arranque (simplemente descargarlo e instalarlo).
Por prejuicio prefiero el anterior, quizás por no depender del sistema operativo.

domingo, 10 de junio de 2007

/problemas para reconocer la grabadora de DVD


Tengo una grabadora LG de DVD, y el otro día al intentar hacer un respaldo desde Windows XP y Nero me di cuent
a que no era reconocida. Entré en pánico pensando que fuera un tema de hardware, así que intenté varios caminos para descartarlo.

Cada vez que intentaba acceder des
de el explorador salía el siguiente mensaje:



Lo primero que hice fue verificar si estaba habilitada la opción de grabación sobre el dispositivo. Explorador, y con el botón secundario del mouse:
Unidad de DVD (E:
\) en mi caso -> Propiedades:


Esto no solucionó el problema, entonces opté por ver los permisos
, desde que reparé Windows creó un usuario nuevo, quizás deba sacar este usuario de varios grupos en lo que está, porque si bien es administrador, priman los permisos de grupo de usuario que tiene los permisos mínimos.

Mi PC (botón secundario) ->Administrar:



Elegir almacenamiento-> Biblioteca-> Seleccionar un medio (grabadora de dvd o cd), en mi caso la grabadora de DVD:



Seleccionado el medio, botón derecho: Propiedades -> Pestaña de "Seguridad":



(Puede verse cada usario y cuáles permisos tiene sobre el dispositivo)
Evidentemente mi usuario no estaba, debí agregarlo: Agregar, aparecerá una nueva pantalla donde debo seleccionar "Avanzado":



Presiono "Buscar" y agrego el usuario que corresponda, con los permisos que considere convenientes.

Si bien esto me resolvió el problema para reconocer la grabadora, no me permitía grabar.

Paso final:

  1. Mi PC -> Propiedades -> Administrar dispositivos -> Hardware, desinstalé el controlador de la grabadora.
  2. Previo a instalar el controlador que descargé desde LG sigo los pasos sugeridos, poner la grabadora como master o único dispositivo. De este modo me aseguro que el controlador se instala en el dispositivo correcto.
Nota: en mi caso en el IDE 2 está la grabadora de CD como Master y la grabadora de DVD como slave. Desconecté la grabadora de CD hasta que instalara la grabadora de DVD.

Los pasos 1 y 2 fueron realizados posteriormente para la instalación de la grabadora de CD.

De todos modos, si bien puedo usar ambas grabadoras desde aplicaciones como Nero y CloneCD, he visto que solo una puede estar habilitada para grabación, pero no ambas. No se si es correcto, quizás una instalación "limpia" de windows lo solucione.

Como ven es un collage de soluciones, una reparo el reconocimiento de la grabadora y la otra la imposibilidad de grabar. Obviamente, necesitaba realizar las dos.





miércoles, 9 de mayo de 2007

/si, puedo con Windows Vista

En este post de días pasados, mencionaba que mi computadora no estaba preparada para Windows Vista, que no había pasado el test de la tarjeta de video. Memoria insuficiente (señalaba 32Mb).
Pues bien, eso me quedó picando porque al bootear la máquina veo que efectivamente tengo 64Mb, y que además los manuales de la tarjeta indican eso.
Problema: tengo un controlador no apropiado. Lo que me extrañó porque lo descargué desde el propio sitio de Nvidia, una GeForce 4 MX 440. Cuando tenga computadora en casa (sigo desde cyber) verificaré descargando uno nuevo.

Como corolario he comprobado que no es la primera vez que manda el software de los controladores sobre el del firmware (programas incorporados al hardware).
Me pasó lo mismo con mi nuevo monitor, lo contaré en otro post. Se impone el controlador de la tarjeta de video que el software que viene en el monitor, ya que uno de los comandos propios del panel del monitor está inhabilitado (el regula la nitidez), y sólo puedo manejarlo a través del software de la tarjeta.

El motivo principal es que los controladores son configurados por los usuarios, y puede haber mas de uno en una máquina. Es el motivo por el que el sistema operativo 'escucha' al usuario y no al hardware.

Hecho a tener en cuenta, y desconocía.