17 votos

Podría programar un microcontrolador sin necesidad de un ordenador?

Digamos que había un lugar pequeño y simple microcontrolador y no tenía la interconexión, sin ordenador, sin depurador, compilador o ensamblador. Se podría escribir su código en ensamblador, y convertirlo (manual) a código máquina y, a continuación, aplicar el poder a los pines apropiados utilizando una fuente de voltaje?

Entiendo que usted necesita apropiado de e/S y memoria para realmente hacer nada, pero si fuera tan inclinado y tenía el tiempo, podría hacer esto? Supongo que, históricamente, ¿cómo se hace esto cuando no había ningún equipo/compilador/ensamblador para empezar? Siéntase libre de un enlace a un recurso externo. Gracias! :)

38voto

aryeh Puntos 1594

Se podría escribir su código en ensamblador, y convertirlo (manual) a código de máquina,

Sí!
El código puede ser escrito "de la cabeza" en binario, si lo desea.
Mucho (mucho, mucho) hace esta es la forma en que empecé a usar (entonces) los microprocesadores.
Yo y sus amigos iba a escribir código en lenguaje ensamblador, compilarlo manualmente a código máquina (algo que se puede hacer "por inspección" después de algo de práctica), a continuación, entrar en el procesador, por diversos medios. En un sistema que hemos construido nos podría configurar la dirección en binario (encendido apagado) interruptores o el uso de un incremento automático característica del procesador, escriba 8 bits de datos en los interruptores binarios y, a continuación, pulse "reloj" switch para entrar los datos a la memoria.

La funcionalidad equivalente que podría lograrse con menos aún los interruptores en un moderno microcontrolador utilizando la serie de programación SPI - ver más abajo.

... y, a continuación, aplicar el poder a los pines apropiados utilizando una fuente de voltaje?

Sí!
Pero sería increíblemente lento para hacer!
Muchos microcontroladores modernos permiten el uso de una "SPI" de la interfaz de programación.
Esto, normalmente, se compone de entrada y salida de las líneas de datos y un "reloj" y, por lo general de un restablecimiento de la línea.

Muchos procesadores permiten SPI del reloj y de datos a "estática" que significa que no hay límite sobre cuánto tiempo puede tomar para configurar los datos entre bits. Usted podría programar un procesador usando una línea de datos y una línea de reloj que fueron impulsadas por los interruptores operados manualmente. La línea de reloj necesita ser "rebote libre" - que necesita para ser capaz de establecer es alta o baja en una sola transición por operación, por lo que un mínimo de interfaz puede necesitar incluir un Schmitt activa puerta. Usted puede "salirse con la suya" sólo una RC de retraso y un interruptor de botón, pero de Schmitt activa de entrada es más seguro. La línea de datos no necesita ser de rebote libre como su estado es de sólo lectura en el flanco de reloj.

Algunas interfaces interactivas - datos de salida por el procesador durante la programación (por ejemplo, datos de salida = MISO = Master En Serie en AVR procesadores). Para leer este sería necesario agregar por ejemplo un LED y un resistor (y sólo tal vez un buffer o transistor si la capacidad de la unidad era MUY bajo).


MC6800:

A partir de semi-desvanecimiento de la memoria (casi 40 años!)

LDI A, $7F ...... 86 7F ...... 1000 0110 0111 1111
STA, $1234...... B7 12 34 ... 1011 0111 0001 0010 0011 0100
LDI X, $2734... CE DE 27 DE 34 ... 1100 1110 0010 0111 0011 0100
...

10voto

user4245 Puntos 324

Originalmente, en programables, las máquinas, los programas manualmente un puñetazo en la cinta de papel o tarjetas. Más tarde se utilizó un tipo de máquina de escribir para hacer la perforación, e incluso, aún más tarde, los equipos (como habían llegado a ser conocido por entonces) podría ponche de su propia cinta de papel.

Fue, literalmente, sentado con una tarjeta manualmente y hacer agujeros en ella.

enter image description here

Cada columna es una instrucción o bits de datos que es interpretado por el CPU de la máquina de estado para realizar las tareas.

Ahora si el curso es toda la memoria flash, y sí, la obtención de datos en allí en el primer lugar que normalmente se necesita un ordenador para hacerlo. Pero eso no es estrictamente 100% cierto.

Después de todo, lo que hace una computadora y el hardware del programador hacer, pero establecer el estado de los pines en el momento correcto? Por lo tanto, si usted está realmente masoquista suficiente, usted puede construir un sistema que permite enviar las instrucciones correctas para el microcontrolador de la programación de los pines en la forma correcta de instalar algunas instrucciones en la memoria flash para su ejecución.

Tal vez algo de participación de muchas de interruptores, algunos registros de desplazamiento, un generador de reloj, etc.

Recuerdo que en la universidad teníamos un novedosos Z80 de programación basado en el sistema de una unidad del tamaño de una maleta con un Z80, una pequeña cantidad de memoria RAM, un montón de LED de 7 segmentos muestra, y una gran fila de interruptores. Programa de forma manual las instrucciones de carga en la RAM usando los interruptores.

8voto

Matt McMinn Puntos 6067

Usted dijo "microcontrolador pequeño y no tenía la interconexión, sin ordenador, sin depurador, compilador o ensamblador.". También puede obtener sin el equipo, depurador, compilador o ensamblador, pero usted tiene que tener algún tipo de interfaz para conectar con el microcontrolador con el fin de cargar el programa.

Primero de todo, olvidarse de cualquier lenguajes de alto nivel como C. a Continuación, la forma más fácil es escribir el programa en lenguaje ensamblador, pero no usar el ensamblador para traducirlo a código de máquina. En su lugar, buscar cada una de las instrucciones de montaje en el manual de programación, encontrar su equivalente hexadecimal de codificación, y escríbelo.

Usted tendrá que asignar sus propias variables, por lo que usted puede llenar en la dirección del operando parte de las instrucciones. También olvidarse de utilizar la pila y el montón, demasiado trabajo. Cuando termines, tendrás un programa de máquina que pueden ser cargados directamente en la memoria flash del microcontrolador -- no enlazador necesaria.

Debido a la falta de dirección y de datos de los buses en casi todos los microcontroladores (ya que sería demasiado muchos alfileres que son necesarias por los puertos de e/S y periféricos), casi todos los microcontroladores se programan a través de una interfaz especial como este:

enter image description here

Normalmente el "programador" en la izquierda podría estar conectado a un PC, el cual iba a descargar un archivo de la máquina generado por un compilador/enlazador.

Sin embargo, si el programador dispone de un teclado, como el siguiente:

enter image description here

a continuación, puede introducir los códigos hex para un manualmente generado el programa de derecho en el programador, y programa el dispositivo sin necesidad de un compilador, enlazador, o PC, que era lo que estaba preguntando acerca de. (El teclado es también utilizado para la edición de archivos hex, y la generación de sumas de comprobación.)

Concede muy pocos los programadores tienen teclados como este. Esta no sería adecuado para un aficionado como es probable que cuesta un par de miles de dólares.

Este particular programador de programas de piezas antes de que se ponga en un tablero; interfaces y tomas de corriente están disponibles para varias Fotos y también Atmel AVRs entre otros.

6voto

Al pacino Puntos 415

Como un asunto práctico, algo así como la alternancia JTAG pines de forma manual sería muy propenso a errores. A la entrada de un programa de cualquier tamaño decente, tendría miles de alterna. Pero, teóricamente, es posible.

Si usted está autorizado a preparar el microcontrolador en el avance (o escribir una ROM de arranque), fácilmente se podría implementar algo así como el externo interruptores de palanca se utiliza en los primeros mainframes. Si usted permite externo de la lógica, incluso se podría usar un teclado hexadecimal para acelerar las cosas.

Por último, aunque no es tan común en estos días, usted puede comprar una ROM basada en microcontrolador con el código personalizado. Usted tendría que ofrecer algo de dinero por adelantado y garantía de un cierto volumen, pero he visto que hacen los clientes a ahorrar dinero en la producción de alto volumen. En ese caso, no habría señales externas necesarias para programar el microcontrolador. El código sería incorporado en el diseño físico de la viruta.

Por supuesto, también puede utilizar un microcontrolador que se ejecuta el código de una memoria externa de la interfaz, pero eso es hacer trampa. :-)

4voto

shash Puntos 668

Absolutamente. De hecho, el primer microprocesador curso tomé (circa 87) utiliza un Motorola 68000 de la junta. Le iba a salir el código en ensamblador, y buscar el hexagonal de la asamblea, y escriba el hex en un terminal para el programa de la junta. Si usted editado, había que asegurarse de que el código de poner en fue más corto que el código que se fueron a reemplazar y, a continuación, buffer el resto con NOPs. Si el código fuera más largo, usted tendría que volver a escribir todo! Hemos aprendido a añadir un montón de NOPs.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X