Könnten Sie einen Mikrocontroller ohne Computer programmieren?

16

Nehmen wir an, Sie hatten einen recht einfachen und kleinen Mikrocontroller und keine Schnittstelle, keinen Computer, keinen Debugger, Compiler oder Assembler. Könnten Sie Ihren Code in der Baugruppe schreiben, ihn (manuell) in Maschinencode umwandeln und dann die entsprechenden Stifte mit einer Spannungsquelle mit Strom versorgen?

Ich verstehe, Sie würden eine angemessene Eingabe / Ausgabe und einen geeigneten Speicher benötigen , um wirklich etwas zu tun , aber wenn Sie so geneigt wären und die Zeit hätten, könnten Sie dies tun? Ich vermute, historisch gesehen, wie wurde das gemacht, als es noch keinen Computer / Compiler / Assembler gab? Fühlen Sie sich frei, mich mit einer externen Ressource zu verlinken. Vielen Dank! :)

idle_engineer
quelle
3
Schauen Sie sich den Altair 1 an. Die Schalter an der Vorderseite und die manuelle Maschinenprogrammierung waren die einzige Möglichkeit, ihn zu verwenden.
pjc50
@ pj50 Er fragte nach einem Mikrocontroller, nicht nach einem Mikroprozessor. Mikrocontroller führen ihren Code in unserem Flash aus, auf den ohne irgendeine Schnittstelle nicht zugegriffen werden kann.
Tcrosley
Wie viele programmierte Einheiten benötigen Sie? Viele Hersteller liefern ihre Mikros vorprogrammiert mit Ihrem Code; Dies ist jedoch nicht praktisch, wenn Sie weniger als eine volle Rolle benötigen.
Oleg Mazurov
2
In den 70er Jahren hätten Sie ein Bedienfeld mit Kippschaltern und Lichtern gebaut, um das Programm aufrufen zu können. Ich habe nie mit einem der frühen Mikrocontroller gearbeitet, sondern mit mehreren verschiedenen Mikroprozessoren, und so haben Sie es standardmäßig gemacht. Und es gab keinen grundsätzlichen Unterschied zwischen frühen Mikrocontrollern und Mikroprozessoren außer den E / A-Funktionen und einigen Details zur Konfiguration des Programmspeichers.
Hot Licks
Ich werde dies als Kommentar hinterlassen, da ich die Quelle für diese Geschichte nicht finden kann. Ich erinnere mich an die Geschichte eines Kindes, das seinen eigenen Computer (eigentlich nur die CPU) aus Transistoren für eine Wissenschaftsmesse entworfen und gebaut hat, die ausschließlich auf seinem Verständnis der digitalen Logik basiert. Er konnte sich zu der Zeit keinen Computer leisten und programmierte seine Kreation über Kippschalter (ich glaube, ich erinnere mich an die Uhr für das Ding, das nur ein Knopf war). Einer der Richter war so beeindruckt, dass er dem Kind einen Computer kaufte.
Slebetman

Antworten:

37

Könnten Sie Ihren Code in Assembler schreiben, ihn (manuell) in Maschinencode konvertieren,

Ja!
Wenn Sie möchten, können Sie Code "aus dem Kopf" in Binärform schreiben.
Vor langer (langer) Zeit begann ich mit der Verwendung von (damals) Mikroprozessoren.
Ich und meine Freunde schrieben Code in Assemblersprache, kompilierten ihn manuell zu Maschinencode (etwas, das Sie nach einiger Übung "durch Inspektion" tun können) und gaben ihn dann auf verschiedene Weise in den Prozessor ein. Auf einem System, das wir aufgebaut haben, haben wir die Adresse für Binärschalter (Ein / Aus) eingerichtet oder eine automatische Inkrementierungsfunktion des Prozessors verwendet, 8 Datenbits für Binärschalter eingegeben und dann einen "Clock" -Schalter gedrückt, um die Daten in den Speicher einzugeben.

Die entsprechende Funktionalität könnte mit noch weniger Schaltern auf einem modernen Mikrocontroller durch serielle SPI-Programmierung erreicht werden - siehe unten.

... und dann die entsprechenden Pins mit einer Spannungsquelle mit Strom versorgen?

Ja!
Aber es wäre unglaublich langsam zu tun!
Viele moderne Mikrocontroller erlauben die Verwendung einer "SPI" -Schnittstelle zur Programmierung.
Dies besteht typischerweise aus Eingangs- und Ausgangsdatenleitungen und einer "Takt" -Leitung und normalerweise einer Rücksetzleitung.

Viele Prozessoren erlauben, dass der SPI-Takt und die Daten "statisch" sind, was bedeutet, dass es keine Beschränkung gibt, wie lange Sie zum Einrichten der Daten zwischen den Bits brauchen können. Sie könnten einen solchen Prozessor mit einer Datenleitung und einer Taktleitung programmieren, die von manuell betätigten Schaltern angesteuert wurden. Die Taktleitung muss "abprallfrei" sein - Sie müssen in der Lage sein, sie in einem einzigen Übergang pro Operation hoch oder niedrig zu setzen. Daher muss eine minimale Schnittstelle möglicherweise ein durch Schmitt ausgelöstes Gate enthalten. Sie können mit nur einer RC-Verzögerung und einem Druckknopfschalter "davonkommen", aber ein durch Schmitt ausgelöster Eingang ist sicherer. Die Datenleitung muss nicht prellfrei sein, da ihr Zustand nur an der Taktflanke gelesen wird.

Einige Schnittstellen sind interaktiv - Daten werden vom Prozessor während der Programmierung ausgegeben (z. B. Datenausgang = MISO = Master In Serial Out bei AVR-Prozessoren). Um dies zu lesen, müssten Sie z. B. eine LED und einen Widerstand (und möglicherweise einen Puffer oder Transistor, wenn die Treiberkapazität WIRKLICH niedrig war) hinzufügen.


MC6800:

Aus halb verblassendem Gedächtnis (fast 40 Jahre!)

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

Russell McMahon
quelle
1
+1 für die Erwähnung des statischen Aufbaus, der es der Uhr ermöglicht, den gesamten Weg nach DC zu gehen.
Pericynthion
2
Das weckt Erinnerungen. Ich habe in der Schule gelernt, Z80-Code mit Knöpfen einzugeben. Das war um 1990. Mein Lehrer bestand darauf, dass es wertvoll ist, das Programmieren auf die harte Tour zu lernen. 25 Jahre später muss ich zustimmen.
Nils Pipenbrinck
@NilsPipenbrinck Ich schreibe gerade C-Code und wende Lektionen an, die ich zum ersten Mal mit Fortran gelernt habe :-) !!! - und die dann mit eingebetteten Systemen und Assemblersprache geschliffen wurden. Diese Lektionen reduzieren die Wahrscheinlichkeit von Fehlern, indem sie auf Variablen- und Port-Zugriffe angewendet werden, die ansonsten Dinge tun könnten, die zulässig, aber nicht erwünscht oder nützlich sind. Assembler ist die ultimative scharfe Waffe - ein Doppelendschwert ohne Handschützer. Danach scheinen "höhere" Sprachen weniger scharf zu sein :-). Die Z80-Tasteneingabe wirkt sich ähnlich auf Ihre Lernerfahrungen aus ;-).
Russell McMahon
@Erbureth Danke :-). Ja, ffff für 1111 war ein offensichtlicher Brain Fade. ... war nur "Sie haben die Idee", aber die Fertigstellung der Linie tut nicht weh.
Russell McMahon
Ja, ich hatte die Idee, aber als ich dabei war ... :)
Erbureth sagt Reinstate Monica
10

Ursprünglich wurden die Programme in programmierbaren Maschinen manuell in Papierstreifen oder Karten gestanzt. Später benutzten sie eine Art Schreibmaschine, um zu lochen, und noch später konnten die Computer (wie sie damals bekannt wurden) ihr eigenes Papierband lochen.

Es saß buchstäblich mit einer Karte da und bohrte manuell Löcher hinein.

Bildbeschreibung hier eingeben

Jede Spalte ist eine Anweisung oder ein Datenbit, das von der Zustandsmaschine der CPU zur Ausführung von Aufgaben interpretiert wird.

Nun, wenn natürlich alles Flash-Speicher ist, und ja, um die Daten überhaupt dort abzulegen, ist normalerweise ein Computer erforderlich. Das ist aber nicht 100% richtig.

Was macht schließlich ein Computer und ein Hardware-Programmierer, als den Status der E / A-Pins zum richtigen Zeitpunkt festzulegen? Wenn Sie also wirklich masochistisch genug sind, können Sie ein System erstellen, mit dem Sie die richtigen Anweisungen an die Programmierstifte des Mikrocontrollers senden können, um einige Anweisungen zur Ausführung im Flash-Speicher zu installieren.

Vielleicht etwas mit vielen Schaltern, einigen Schieberegistern, einem Taktgenerator usw.

Ich erinnere mich, dass wir am College ein neues Z80-basiertes Programmiersystem hatten - eine Einheit von der Größe eines Koffers mit einem Z80, etwas RAM, einer Reihe von 7-Segment-LED-Anzeigen und einer großen Reihe von Schaltern. Programmieren Sie dies, indem Sie die Anweisungen mit den Schaltern manuell in den Arbeitsspeicher laden.

Majenko
quelle
Der Z80 ist kein gültiges Beispiel. Er fragte nach einem Mikrocontroller, nicht nach einem Mikroprozessor. Mikrocontroller führen ihren Code in unserem Flash aus, auf den ohne irgendeine Schnittstelle nicht zugegriffen werden kann. Zumindest haben Sie Flash und eine Programmierschnittstelle an anderer Stelle in Ihrer Antwort erwähnt.
Tcrosley
@tcrosley Der Z80 diente eher anekdotischen Zwecken - um zu veranschaulichen, wie Computer programmiert wurden, bevor Visual Studio alle Fähigkeiten verlor.
Majenko
Ich kenne zwar keine Maschinen, die dafür gebaut wurden, aber es wäre nicht schwierig, einem Kartenleser eine Schaltung hinzuzufügen, um einen Mikrocontroller mit Code zu programmieren, der auf einer Folge von Karten gespeichert ist. Klebeband könnte jedoch praktischer sein.
Supercat
2
Früher habe ich manuell Löcher in diese geschnitten. Dies ist nur unter extremen Umständen möglich (22 Uhr, Hausarbeiten sind morgen fällig, ein Großrechner ist noch übrig, eine Punschkellnerin ist für diesen Tag übrig). Das Programmieren desselben Großrechners über das Bedienfeld (einige Jahre später) war tatsächlich schneller.
Oleg Mazurov
1
@Majenko - Ich habe die Rekonstruktion von Babbages Maschine gesehen und sie wurde definitiv nicht aus Telefonanlagen hergestellt. Auf jeden Fall laut.
Hot Licks
7

Sie sagten "kleiner Mikrocontroller und hatten keine Schnittstelle, keinen Computer, keinen Debugger, keinen Compiler oder Assembler." Sie können ohne Computer, Debugger, Compiler oder Assembler auskommen, benötigen jedoch eine Schnittstelle, um eine Verbindung mit dem Mikrocontroller herzustellen und das Programm zu laden.

Vergessen Sie zuallererst alle höheren Sprachen wie C. Dann ist es am einfachsten, Ihr Programm in Assemblersprache zu schreiben, aber verwenden Sie den Assembler nicht, um es in Maschinencode zu übersetzen. Lesen Sie stattdessen die Montageanweisungen im Programmierhandbuch nach, suchen Sie die entsprechende Hex-Codierung und notieren Sie diese.

Sie müssen Ihre eigenen Variablen zuweisen, damit Sie die entsprechenden Adressen im Operandenteil der Anweisungen eingeben können. Vergessen Sie auch, den Stapel und den Haufen zu verwenden, zu viel Arbeit. Wenn Sie fertig sind, haben Sie ein Maschinenprogramm, das direkt in den Flash-Speicher des Mikrocontrollers geladen werden kann - auch kein Linker erforderlich.

Aufgrund des Fehlens externer Adress- und Datenbusse auf fast allen Mikrocontrollern (da diese zu viele Pins belegen würden, die von E / A-Ports und Peripheriegeräten benötigt werden) werden praktisch alle Mikrocontroller über eine spezielle Schnittstelle wie die folgende programmiert:

Bildbeschreibung hier eingeben

Normalerweise ist der "Programmierer" auf der linken Seite mit einem PC verbunden, der eine von einem Compiler / Linker erzeugte Maschinendatei herunterlädt.

Wenn der Programmierer jedoch eine Tastatur hat, wie die folgende:

Bildbeschreibung hier eingeben

Dann kann man die Hex-Codes für ein manuell erstelltes Programm direkt in den Programmierer eingeben und das Gerät programmieren, ohne einen Compiler, Linker oder PC zu benötigen, nach dem Sie gefragt haben. (Die Tastatur wird auch zum Bearbeiten von Hex-Dateien und zum Generieren von Prüfsummen verwendet.)

Zugegeben, sehr wenige Programmierer haben Tastaturen wie diese. Dieser wäre für einen Hobbyisten nicht geeignet, da er wahrscheinlich ein paar tausend Dollar kostet.

Dieser spezielle Programmierer programmiert Teile, bevor sie auf eine Platine gelegt werden. Schnittstellen und Buchsen sind unter anderem für mehrere PICs und Atmel AVRs verfügbar.

Tcrosley
quelle
5
Sie haben verschiedene andere Antworten auf ihre Ungültigkeit kommentiert, aber diese Antwort ist wohl weniger gültig als die meisten, die Sie kommentiert haben. Er sagte "... keine Schnittstelle, kein Computer, ...". Zumindest ist Ihre Lösung "ein Computer". Was "keine Schnittstelle" bedeutet, ist strittig. Verwenden Sie jedoch einige entprellte Schalter an der SPI-Schnittstelle, und Sie haben möglicherweise eine Lösung.
Russell McMahon
1
@RussellMcMahon Wer sagt, dass sich im Programmierer ein Computer befindet? Viele von ihnen verwenden nur FPGAs (die durch diskrete Logik ersetzt werden könnten). Wie programmieren Sie einen Mikrocontroller über eine SPI-Schnittstelle, es sei denn, er verfügt über einen Bootloader? Wenn ja, wie programmiert man den Bootloader?
Tcrosley
3
Die im Wesentlichen bootloaderfreie serielle Standard-Niederspannungs-Programmierschnittstelle vieler (möglicherweise der meisten) Mikrocontroller verwendet einige Leitungen in einer im Wesentlichen seriellen Schnittstelle. MOSI MCLK (Vdd Gnd Reset) ist ein absolutes Minimum an MISO, wenn eine Interaktion vorliegt. 3 Schalter (von denen nur einer frei sein muss) und eine LED für MISO und "Du bist aus". Sehr sehr sehr langsam. Wenn ein FPGA nicht als "Computer" gelten darf, wäre es kein Problem, viele prozessorbasierte Systeme zu implementieren. Ich vermute, "keine kombinatorische Logik" würde dem Geist seiner Bitte entsprechen.
Russell McMahon
Ich muss sagen, Feuerwerk ist der falsche Hintergrund für die Arbeit mit elektronischen Geräten :)
Anonymous Penguin
6

In der Praxis ist das manuelle Umschalten von JTAG-Pins sehr fehleranfällig. Die Eingabe eines Programms von beliebiger Größe würde Tausende von Umschaltern erfordern. Aber theoretisch ist es möglich.

Wenn Sie den Mikrocontroller im Voraus vorbereiten (oder ein Boot-ROM dafür schreiben) dürfen, können Sie leicht so etwas wie die externen Kippschalter implementieren, die in früheren Mainframes verwendet wurden. Wenn Sie externe Logik zulassen, können Sie sogar eine Hex-Tastatur verwenden, um die Dinge zu beschleunigen.

Obwohl dies heutzutage nicht mehr so ​​üblich ist, können Sie einen ROM-basierten Mikrocontroller mit benutzerdefiniertem Code kaufen. Sie müssten im Vorfeld etwas Geld anbieten und ein bestimmtes Volumen garantieren, aber ich habe gesehen, dass Kunden dies tun, um Geld für die Massenproduktion zu sparen. In diesem Fall wären keine externen Signale erforderlich, um den Mikrocontroller überhaupt zu programmieren. Der Code würde in das physikalische Layout des Chips eingebaut.

Natürlich können Sie auch einen Mikrocontroller verwenden, der Code über eine externe Speicherschnittstelle ausführt, aber das ist Betrug. :-)

Adam Haun
quelle
2
Tatsächlich habe ich 1976/77 einen Imsai 8800 "Klon" gebaut und ihn routinemäßig mit den Kippschaltern in Binärform programmiert. Ich hatte eine Boot-Load-Sequenz mit etwa 40 oder 60 Bytes (das war vor einer Lebenszeit!), Die ein Papierband von meinem ASR-33-Teletyp las und mich auf einen Tastaturmonitor brachte. Bevor der Fernschreiber funktionierte, programmierte ich den 8085 (einer der Unterschiede zwischen meinem "Klon" und dem Imsai) streng binär. Dies geschah jedoch parallel zu einer Reihe von Schaltern. Ich habe einen Telegraphenschlüssel für die serielle Codierung verwendet und dieser ist WIRKLICH fehleranfällig, wie Adam angegeben hat.
User6297
3

Absolut. In der Tat verwendete der erste Mikroprozessor Kurs, den ich nahm (circa 87) ein Motorola 68000 Board. Wir würden den Code in der Baugruppe ausarbeiten, das Hex für die Baugruppe nachschlagen und das Hex in ein Terminal eingeben, um die Baugruppe zu programmieren. Wenn Sie bearbeiteten, mussten Sie sicherstellen, dass der eingegebene Code kürzer war als der Code, den Sie ersetzten, und den Rest mit NOPs puffern. Wenn der Code länger wäre, müssten Sie alles neu eingeben! Wir haben gelernt, viele NOPs hinzuzufügen.

Scott Seidman
quelle
Der 68000 war kein Mikrocontroller. Er fragte nach einem Mikrocontroller, nicht nach einem Mikroprozessor. Mikrocontroller führen ihren Code in unserem Flash aus, auf den ohne irgendeine Schnittstelle nicht zugegriffen werden kann.
Tcrosley
5
@tcrosley Das stimmt nicht ganz. Es gibt Mikrocontroller, die ein externes ROM benötigen, da sie kein eigenes ROM oder Flash haben. Was sie zu einem Mikrocontroller macht, ist nicht RAM oder ROM, sondern Peripherie (IO-Ports, UART usw.).
Majenko
Nur sehr wenige - aufgrund der gerade erwähnten E / A-Peripherie verfügen nur sehr wenige über externe Adress- und Datenbusse, da sie zwei viele Pins benötigen.
Tcrosley
2

Absolut. Sobald Sie ein Binärformat der tatsächlichen Anweisungen haben (einfach für genau festgelegte Anweisungssätze), müssen Sie nur noch das Programmierprotokoll implementieren.

Nehmen Sie zum Beispiel etwas Kleines wie einen AVR Tiny 4 . Abschnitt 14 beschreibt die Programmierschnittstelle einschließlich des Protokolls und der physikalischen Schicht. Es ist relativ einfach und Sie brauchen nur ein paar Tasten und Pullup / Down-Widerstände, um eine 1 oder eine 0 zu senden / zu empfangen. Wenn Sie sich ehrgeizig fühlen, fügen Sie einige LEDs hinzu, um den Ausgang zurückzulesen.

Das letzte verbleibende Problem ist, wenn Sie es schnell genug schaffen, was zum Glück * für den AVR Tiny 4 (Abschnitt 16) keine Mindestfrequenz für die Programmierung hat.

* Hinweis: Soweit im Datenblatt angegeben. Dies kann in der Realität abweichen ... Ich bezweifle, dass jemand versucht hat, es mit mHz-Taktraten zu programmieren.

Sie können beliebig viel oder wenig automatisieren. Das machen die meisten Programmiergeräte sowieso: Automatisieren Sie den Prozess.

helloworld922
quelle
2

Mit welchen Mitteln auch immer Sie das Programm in das uC eingeben, Sie "koppeln" damit, denn das ist, was Koppelung bedeutet. Sogar eine Reihe von Schaltern, die Sie manuell umlegen, sind eine "Schnittstelle".

Ich werde diese Frage also wie folgt behandeln: "Wie kann ich mit weitgehend mechanischer (im Gegensatz zu elektronischer) Schnittstellenhardware und auf möglichst coole Weise eine Schnittstelle zu einer uC herstellen?"

Auf die meine Antwort lautet, geben Sie das Programm als Pianorolle ein. Die Pianorolle "tracker bar" eines Player-Pianos bietet im Grunde genommen mindestens 65 (je nach Format) Bits, die Sie basierend auf den Perforationen im Papier unabhängig voneinander ein- und ausschalten können. Der Rest ist anspruchsvolle Arbeit mit einem Exacto-Messer. Aber zumindest wird Ihr Programm, sobald es ausgeführt wird, (etwas) dauerhaft gespeichert (im Gegensatz zu einem manuellen Umschalten).

Atsby
quelle
2

Es ist nicht nur möglich , einen Mikrocontroller ohne Computer zu programmieren, sondern Sie können auch einen Computer erwerben, der speziell für die Programmierung mit Hardware-Kippschaltern entwickelt wurde. Das Kit wird als Mitgliedskarte bezeichnet und ist eine Neuentwicklung des COSMAC Elf-Computers aus den 1970er Jahren. Das Kit wurde kürzlich in einem Artikel im IEEE Spectrum-Magazin beschrieben . Es ist auch möglich, neuere Versionen der Mitgliedskarte von einem PC aus zu programmieren.

Craig Finch
quelle
2

Okay. Wie wäre es damit: Sie schreiben das Programm in Assembler und suchen die Opcodes selbst, wie zuvor vorgeschlagen. So wird es in den Computer eingelegt: Nehmen Sie einen alten Kassettenrekorder, entfernen Sie den Abspielkopf, lassen Sie jedoch die Tonwelle und die Andruckrolle. Dies wird Ihr Transport sein. Wenn Sie einen Reel-to-Reel-Player haben, können Sie den Abspielkopf an Ort und Stelle lassen.

Nehmen Sie dann einen langen und schmalen Papierstreifen oder noch besser ein transparentes Klebeband. Hier verschlüsseln Sie Ihr Programm. Sie verwenden so viele Spuren, wie Sie Pins zum Programmieren haben. Auf einer Spur setzen Sie in regelmäßigen Abständen schwarze Punkte. das ist deine uhr Auf den anderen Spuren setzen Sie schwarze Punkte oder Streifen und lassen Leerzeichen entsprechend den Daten und Signalen. Sie strahlen ein Licht auf das Ganze und erkennen es mit kleinen Fototransistoren (oder Sie strahlen eine LED auf das Band und erkennen das Licht mit anderen, ähnlichen) und treiben die Takt- und Signalleitungen mit Transistoren an. Dies nimmt ein wenig Platz auf dem Kassettenrekorder in Anspruch, weshalb Sie möglicherweise den Abspielkopf entfernen müssen.

Natürlich können Sie die Signale auch als Audio codieren, die Decodierung ist jedoch etwas komplizierter. Oder Sie können reflektiertes statt durchgelassenes Licht erkennen. Oder Sie können Löcher in dunkles Klebeband oder Papierband stanzen, anstatt schwarze Markierungen auf transparentem Klebeband zu machen. Was auch immer. Der Kassettenrekorder treibt das Band mit konstanter Geschwindigkeit an, sodass Sie ohne Computer ein getaktetes Signal eingeben können.

Angus McG
quelle
1

Ja. Das Hauptproblem kann die Interaktion mit der Programmierschnittstelle sein. Wenn Sie eine einfache Adresse und einen Datenbus haben, ist es ein bisschen einfacher. Haben Sie jemals einige der wirklich frühen Computer gesehen? Die Programme werden einzeln mit Schaltern an der Vorderseite in den Arbeitsspeicher eingegeben.

alex.forencich
quelle
Er fragte nach einem Mikrocontroller, nicht nach einem Mikroprozessor. Mikrocontroller führen ihren Code in unserem Flash aus, auf den ohne irgendeine Schnittstelle nicht zugegriffen werden kann.
Tcrosley
4
@tcrosley - Die frühen USA hatten keinen Flash. Sie hatten entweder RAM oder ROM für den Programmspeicher.
Hot Licks
@ HotLicks Richtig. Mit wenigen Ausnahmen handelte es sich um Mikroprozessoren und nicht um Mikrocontroller. Das war mein Punkt, nicht ob der Programmspeicher Flash oder ROM oder PROM oder EPROM oder EEPROM war. Es ging darum, ob sich der Programmspeicher auf dem Chip befand (Mikrocontroller) oder nicht (Mikroprozessor). Sogar der 8048, Intels erster Mikrocontroller, der 1977 eingeführt wurde, hatte ein internes ROM.
Tcrosley
3
@Tcrosley Wer bist du? Und was hast du mit dem sonst so hilfreichen und objektiven Tcrosley gemacht? :-) | Seine erste Beobachtung war, dass man mit der Programmierschnittstelle interagieren kann - was oft, aber nicht immer gültig ist. Der Adress- und Datenbus "IF" ist eine IF. Es gilt für einige große und Borderline-Hybrid-Mikrocontroller, aber seine ursprüngliche ZF war ausreichend (wenn auch hart und langsam).
Russell McMahon
3
Es ist umständlicher als sinnvoll, eine strenge Unterscheidung zwischen Mikroprozessor und Mikrocontroller beizubehalten, insbesondere, wenn es sich um einen Kommentar zu jeder einzelnen Antwort handelt.
PJC50
1

Die PDP-8-Mincomputer von Digital Equipment vor über 40 Jahren verfügten über keine Fähigkeit zum automatischen Booten. Programme wurden normalerweise von gelochten Papierbändern geladen, aber der Lader zum Laden der Papierbänder musste manuell über die Schalter an der Vorderseite eingegeben werden.

Bildbeschreibung hier eingeben

An Standorten von Digital- und PDP-8-Kunden wie OEMs, die diese als Embedded-Controller des Tages verwendeten, war es nicht ungewöhnlich, dass sich Benutzer die Bootloader merken und um die schnellste Zeit, die für den Einstieg in den Boot benötigt wurde, miteinander konkurrieren Lader in die Maschine. Die Maschinen verwendeten Magnetkernerinnerungen (von Frauen mit winzigen Fingern mit Nadeln und haarfeinem Draht in weiten Teilen der Welt von Hand aufgereiht).

Bildbeschreibung hier eingeben

Da der Inhalt des Magnetspeichers nicht flüchtig ist, haben die Bootloader ein Herunterfahren überstanden, und eine manuelle Eingabe war erst nach der Erstmontage erforderlich. Der Loader wurde durch einen Programmfehler oder ein Programm, das zur Nutzung des Laderraums erforderlich war, gelöscht.

JRobert
quelle
Vor vielen Jahren, als wir barfuß im Schnee bergauf zur Schule stapfen mussten, musste der PDP-8 in unserer High School durch Umschalten des Bootloaders von der Vorderseite aus, wie Sie beschreiben, gebootet werden. Keiner der Lehrer wusste viel über den Computer, auch derjenige, der dafür verantwortlich war. Er dachte, es sei 0 und es sei 1 ausgefallen, so dass er den Bootloader niemals einschalten konnte. Ich habe dafür gesorgt, dass der Computer abstürzt, wenn ich im Englischunterricht war, damit ich aufgefordert werde, den Computer neu zu starten. Ich habe ihm nie von seinem Up- oder Down-Missverständnis erzählt - es war mir viel zu nützlich.
Olin Lathrop
Ich habe den PDP-8 geliebt. Ich hatte ungefähr drei Jahre lang alleinigen Zugriff auf einen - es war also, als hätte ich einen Personal Computer, lange bevor der Begriff PC erfunden wurde. Erstaunlich, was in 4K Speicher passen könnte. Sicher ging durch eine Menge Papierband (es hatte kein DECtape) und Teletype-Papier.
Tcrosley
0

Die Antwort lautet: Ja , Sie könnten einen Mikrocontroller ohne Computer, Debugger usw. programmieren. Sie müssten lediglich die verschiedenen Spannungen, Daten, Uhr- und Programmiersequenzen bereitstellen, die vom uC-Hersteller angegeben wurden (keine leichte Aufgabe).

Guill
quelle