Construye tu computadora Mínimum.

Parte 3: Arranque del sistema.

Por: Oscar Toledo Esteva.       Septiembre de 2018.


La primera tarea de Mínimum es tratar con el depurador interno, para programar y ejecutar instrucciones. El depurador o debug está incluido dentro del microprocesador, cada fabricante instala un programa con normas diferentes de comunicación, algunos los nombran bootloader o ISP (In-System-Programming). Particularmente, Mínimum tiene un depurador con 12 ordenes: para examinar y escribir en la memoria, ejecutar programas del usuario y listar las ordenes incluidas, además de borrar y programar la memoria flash de 1,048,576 bytes, con 12 sectores que inician en la dirección 0800:0000 hexadecimal.

Foto 6. Computador Mínimum con regulador de voltaje e interface RS232. Integrados en un circuito impreso.

Foto 7. Nuestra plataforma equipada con un conector USB o DB9 232C es el anfitrión de la computadora Minimum y del curso anual de la Familia Toledo "Construye y programa tu computadora". Un software de creación propia comunica ordenes e instrucciones de programas, para depurar, listar, ensamblar instrucciones y ejecutar programas para mecatrónica, almacenaje de memoria SD, para usos educativos, autoaprendizaje, calculadora científica, comunicación inalambrica, sensores, etc. Grabar un programa de control en la memoria flash del microprocesador como tarea definitiva.

El microprocesador incluye seis UART (Universal Asynchronous Receiver And Transmitter), en una comunicación con el debug este examina cada UART hasta seleccionar el que está activado con la computadora anfitrión, y desconecta todos los periféricos restantes de comunicación. La computadora anfitrión previamente ha enviado la clave 7F hexadecimal para activar Mínimum, mientras el debug sincroniza la velocidad en baudios del UART anfitrión, cuando el procesador establece la conexión, en forma automática emite la clave 79 hexadecimal, cuya señal de reconocimiento para la computadora anfitrión, indica que el enlace está establecido y el procesador preparado para recibir ordenes del anfitrión.

El depurador utiliza la W para enviar la orden de escritura (Write), pide al usuario teclear la dirección de la locación donde comienza el volcado de los datos e instrucciones y escribir el programa correspondiente. La orden G es para Ir (Go) a ejecutar en la dirección indicada el programa correspondiente. El volcado del programa inicia con dos datos de 32 bits para fijar los espacios de la memoria del microprocesador, seis instrucciones para activar las puertas del periférico C (GPIOC), dos instrucciones para activar el encendido del LED y una instrucción para detener el programa.

Primeramente, se envia la orden W para iniciar el volcado de las claves para encender el LED y por último se envía la orden G para activar las claves del microprocesador.

W 20010000 = W (Write) Orden del depurador interno y 20010000 (dirección del inicio del programa)

G 20010000 = G (Go) Orden del depurador interno y 20010000 (dirección del inicio del programa)

Una vez depositado el programa, se envía la orden G con 20010000, el programa enciende el LED. Oprimiendo el botón del RESET el programa se interrumpe y el LED se apaga.

El microprocesador de Mínimum usa la arquitectura de cargar y almacenar (Load and Store) en sus registros, al construir un programar con el repertorio de instrucciones ningún registro se puede utilizar sin antes mover un dato hacia el registro, que posteriormente se almacena en la memoria, en el proceso mueve el valor binario con el primer operando del registro. Por ejemplo: MOV R1,#04 mueve el valor 4 al registro R1. El valor para la instrucción MOV cubre el rango de un grupo de 8 bits = 1 byte para cubrir la cuarta parte de 32 bits, por lo tanto 4 = 0000 0100 binario = 04 dos valores hexadecimales como lo indica la tabla de conversión numérica.

Tabla de conversión numérica

Binario Hexadecimal Decimal
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15


La numeración binaria es un sistema en base 2, hexadecimal es un sistema en base 16 y la decimal a un entero como potencia en base 10. En la numeración octal en base 8, cada cifra son tres dígitos binarios, que actualmente no se utiliza.

Programa con lenguaje ensamblador para encender el LED

Dirección  Clave máquina  Nemónico        Comentario

2001:0000  00 C0 01 20    Datos de 32 bits que fijan los
2001:0004  09 00 01 20    espacios de la memoria del MPC
2001:0008  43 F6 00 00    MOVW R0,#3800   ; Un valor binario representado como
                                          ; valor hexadecimal se carga en el
                                          ; registro R0. MOVW indica el valor
                                          ; bajo de los 32 bits que maneja R0.
2001:000C  C4 F2 02 00    MOVT R0,#4002   ; Un valor binario representado como
                                          ; valor hexadecimal se carga en la parte
                                          ; alta del registro R0. MOVT indica el
                                          ; valor alto de los 32 bits que maneja R0.
2001:0010  04 21          MOVS R1,#04     ; El valor 4 = binario 0100 fue colocado
                                          ; o guardado en R1, R1 = 0000 0004
2001:0012  01 63          STR R1,[R0,#30] ; El valor colocado en R1 se almacena
                                          ; en la dirección 4002:3800 + 20 hex
                                          ; = 4002:3820. Este valor es la dirección
                                          ; que el microprocesador reconoce para
                                          ; activar las puertas C (16 puertas)
2001:0014  20 F4 40 50    BIC R0,R0,#3000 ; Esta instrucción borra los bits 12 y 13
                                          ; del registro R0. BIC significa
                                          ; "borrado de bits", al borrar los 2 bits
                                          ; de R0, su contenido se modifica y
                                          ; R0 = 4002:0800. Esta es la dirección
                                          ; del modo para operar las puertas C
2001:0018  01 21          MOVS R1,#01     ; 01 es el nuevo valor de R1 que indica
                                          ; el modo de salida de la puerta C bit 0
                                          ; o PC0
2001:001A  01 60          STR R1,[R0]     ; El modo salida para PC0 ahora está
                                          ; activado, y PC0 = 0
2000:001C  F2 E7          B 2001:001C     ; Programa detenido

La lógica del programa habilita los 16 bits de la puerta C y activa la puerta C0 como linea de salida (PC0) que corresponde a la pata 8 del microprocesador. Una vez activada la función de salida para PC0, esta puerta transmite por omisión la lógica 0, equivalente al polo eléctrico negativo de los 3.3V positivos. Un LED con una resistencia de 330 ohmios consume poca carga para la pata del microprocesador. Al programa se le pueden agregar otras instrucciones para intervalos de retardos y el apagado del LED para producir un parpadeo continuo. Volviendo a las primeras computadoras, el primer dato de 32 bits estaría escrito en binario de la siguiente manera para operar 32 apagadores de palancas:
        0000 0000 1100 0000 0000 0000 0001 0010 0000

Fig 5. Conexión del LED para ser controlado por la computadora Mínimum, la resistencia de 330 ohmios limita la corriente a 20 miliamperios que el LED necesita. El LED conectado a PC0 que corresponde a la pata 8 se enciende cuando PC0 es igual a cero, es el lado negativo del voltaje del LED, y el lado positivo es el voltaje de 3.3 voltios.

Si agregamos más instrucciones para activar o desactivar varios LEDs, podemos crear adornos o imágenes llamativas que ocuparían miles de lineas de instrucción, y un programa bien elaborado es muy cotizado.

¡Mi laptop solo tiene conector USB y no RS232C! No hay problema, coloque en el circuito impreso un cristal de cuarzo de 8 MHZ y dos condensadores para que el microprocesador tenga una precisión de 20 PPM (Partes por millones) que necesita el interfaz USB. También se puede usar un convertidor de USB a UART RS232C.

Fig 6. Circuitos adicionales para mejorar la computadora Minimum.

Para los aficionados a las tarjetas comerciales con lenguaje C, les será fácil interfazar Mínimum con su laptop, aunque a los novatos les puede tomar semanas antes de establecer una conexión y programar el primer ejemplo con lenguaje máquina, afortunadamente, la computadora no se quemará con una mala programación. La instrucción para los nuevos conocimientos es un proceso comunicativo y complejo, pocos científicos ofrecen ejemplos prácticos de los nuevos componentes, para que el usuario adopte o rechaze materiales para un diseño inteligente, Mínimum tiene a su sucesor en pruebas de laboratorio, con más ventajas en el dominio de la ciencia de la computación, aunque por el momento es costoso. Hoy los países modernos mueven su economía con sistemas similares a la computadora Mínimum, su ciencia y tecnología son impresionantes, fruto de grandes esfuerzos mentales, y de este lado es notorio como pueblo y gobierno que no responden a las circunstancias cambiantes por ignorancia o entretenidos en sus intereses particulares, solo compran productos importados, que finalmente se cobran con divisas de origen que hunde nuestra economía. Los científicos evolucionan de los creadores que comenzaron hace cientos de años, continúan en la búsqueda de un procesador del pensamiento humano, pueden proponer y decantar la historia de los materiales y su transformación, así como la mecánica evolucionó a los relevadores eléctricos, los bulbos a transistores y actualmente el circuito integrado, capaz de proyectar sus respuestas en un anteojo. Para algunas personas la electrónica digital puede ser un proceso vocacional que felizmente les permita estar en el ambiente relacionado con las mentes brillantes que honran su trabajo.

Foto 8. Mínimum con pantalla LCD para ver paso a paso los valores de los registros del procesador, al diseñar, optimizar y construir el software. Esto es Mínimum, un laboratorio de prácticas del microprocesador en un solo circuito para aprender y enseñar.

Bibliografía:

 

Artículo anterior Artículo anterior