Construye tu computadora Mínimum.

Parte 3: Arranque del sistema.

Por: Oscar Toledo Esteva.       Septiembre de 2018.


Con el depurador interno es la primera comunicación de Mínimum, para programar y ejecutar instrucciones. El depurador o debug está incluido dentro del microprocesador. Cada fabricante instala un firmware exclusivo 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 una placa impresa.
Foto 7. Nuestra plataforma equipada con conectores USB y 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 o grabar una tarea definitiva en la memoria flash del microprocesador.

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 envía 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, envía la clave 79 hexadecimal, cuya señal de reconocimiento a 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 del programa correspondiente. El volcado del programa inicia con dos datos de 32 bits para fijar los espacios de la memoria del microprocesador, y a continuación las instrucciones del microprocesador para un 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 y se ejecuta el programa. Oprimiendo el botón del RESET el programa se interrumpe.

El microprocesador de Mínimum usa en sus instrucciones la arquitectura de cargar y almacenar (Load and Store) en sus registros, al construir un programa con el repertorio de instrucciones ningún registro se puede utilizar sin antes colocar un dato al 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 un LED

Dirección  Clave máquina  Nemónico        Comentario

2001:0000  00 C0 01 20    Datos de 32 bits de la dirección de la pila
2001:0004  09 00 01 20    Espacio 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 MOV TOP,
                                          ; valor alto de los 32 bits que maneja R0.
2001:0010  04 21          MOVS R1,#04     ; El valor 4 = binario 0100 activa las
                                          ; puertas C. R1 = 0000 0004
2001:0012  01 63          STR R1,[R0,#30] ; El valor colocado en R1 se almacena
                                          ; en la dirección 4002:3800 + 30 hex
                                          ; = 4002:3830. Este valor es la dirección
                                          ; del microprocesador 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
                                          ; para operar las puertas C
2001:0018  01 21          MOVS R1,#01     ; 01 es el nuevo valor de R1 que indica
                                          ; el modo como salida para GPIOC (0) del
                                          ; grupo C bit 0
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. Al reiniciar el microprocesador, el registro GPIO ODR contiene por omisión la lógica 0, equivalente al polo 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 de la siguiente manera al operar 32 apagadores de palancas:

        0000 0000 1100 0000 0000 0000 0001 0010 0000 = 20 00 C0 00 hexadecimal
Fig 5. Conexión del LED 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 no es gratis.

¡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. O 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 con el microprocesador, y programar con el arte perdido del lenguaje ensamblador, afortunadamente, la computadora no se daña con una mala programación. La instrucción para los nuevos conocimientos es un proceso comunicativo y complejo, en la literatura especializada hay pocos ejemplos prácticos de los nuevos componentes, para que el usuario adopte o rechaze materiales para un diseño inteligente. 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 no responden a las circunstancias cambiantes sea por ignorancia o entretenidos en sus intereses particulares, solo compran productos importados de los países que poseen la tecnología digital, que finalmente se cobran con divisas de origen que hunde nuestra economía. Los científicos evolucionan de los creadores de hace cientos de años, continúan en la búsqueda de un procesador del pensamiento humano, investigan y diseñan nuevos materiales y su transformación, así como la mecánica evolucionó a los relevadores eléctricos, los bulbos a transistores y actualmente circuitos integrados, capaces 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. Computadora con pantalla LCD para ilustrar paso a paso los valores de los registros del procesador, para diseñar, optimizar y construir software para descubrir la magia y el misterio que animan la creación de un sistema operativo. Esto es Mínimum, un laboratorio de prácticas del microprocesador para aprender y enseñar en una sola placa.

Bibliografía:

 

Artículo anterior Artículo anterior