Sommario:

KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5 €: 13 passaggi (con immagini)
KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5 €: 13 passaggi (con immagini)

Video: KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5 €: 13 passaggi (con immagini)

Video: KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5 €: 13 passaggi (con immagini)
Video: NON CONOSCI ARDUINO??? te lo insegno io PUNTATA ZERO 2024, Giugno
Anonim
Image
Image
Il KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5€
Il KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5€
Il KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5€
Il KIM Uno - un emulatore di kit di sviluppo per microprocessori da 5€

Il KIM Uno è un kit di sviluppo portatile definito da software per microprocessori (retro). Ma permettetemi di introdurre l'idea tornando indietro nel tempo:

Alla fine del 2018 mi è venuto in mente di voler costruire un piccolo kit di sviluppo a microprocessore portatile, proprio come il famoso KIM-1 di MOS Technology, Inc. e progettato da Chuck Peddle, che è stato anche coinvolto nella creazione della CPU 6502.

Ma costruire un kit di sviluppo "bare-bone" con componenti logici discreti non era un'opzione poiché richiedeva un grande alimentatore (dal momento che quei dispositivi antichi tendono a prendere una certa corrente) e anche lo sviluppo richiederebbe molto tempo. E lo voglio adesso!

Pertanto, ho progettato il KIM Uno come un dispositivo portatile, che sta in una mano ed è alimentato da due batterie CR2032. Utilizza il microcontrollore ATMega328p ("Arduino") in esecuzione a 8 MHz per emulare (o simulare) una CPU desiderata. Questa architettura assicura anche che le CPU emulate siano intercambiabili con qualsiasi cosa si adatti alla memoria flash del microcontrollore. Quindi è un dispositivo multiuso.

Per coincidenza, in seguito ho guardato un discorso davvero interessante - chiamato The Ultimate Apollo Guidance Computer Talk (34C3) - su YouTube in cui vengono menzionati "One Instruction Set Computers" o OISC. Non li conoscevo e ho trovato questo come il candidato perfetto per implementarlo.

Il KIM Uno emula una CPU con una sola istruzione: subleq - sottrai e ramifica se minore o uguale a zero.

Se mi segui attraverso questo Instructable, puoi costruire il tuo KIM Uno in pochissimo tempo. E la parte migliore - oltre al fatto che puoi modificarlo secondo i tuoi gusti - è che costa solo 4, 75 € da realizzare (a fine 2018).

Un suggerimento: esiste un repository Git che contiene tutti i file forniti dai diversi passaggi di questo istruibile. Nel caso tu voglia modificare alcune risorse e condividerle con tutti noi puoi fare un PR. Ma puoi anche scaricare tutti i file contemporaneamente lì. Semplicemente a https://github.com/maxstrauch/kim-uno. Grazie!

C'è un altro progetto piuttosto interessante, chiamato lo stesso (KIM Uno), che fa una vera replica del 6502 KIM Uno. Controllalo qui. Il creatore vende persino il kit. Quindi, se sei interessato a 6502 e ti piace questo progetto, dovresti dare un'occhiata lì!

Passaggio 1: approvvigionamento del PCB

Acquisizione del PCB
Acquisizione del PCB
Acquisizione del PCB
Acquisizione del PCB

Come puoi vedere, ho sfruttato l'opportunità per progettare un PCB e lasciare che fosse realizzato in modo professionale. Poiché produrlo esternamente e spedirlo a te richiederà molto tempo (a seconda di dove ti trovi nel mondo;-)), ordinarlo è il primo passo. Possiamo quindi continuare con gli altri passaggi mentre il PCB viene realizzato e spedito.

Ho ordinato i miei PCB in Cina su PCBWay per soli $5. Non ottengo alcun vantaggio nel presentare PCBWay come il mio produttore di riferimento per i PCB, è solo che ha funzionato bene per me e potrebbe anche funzionare bene per te. Ma puoi ordinarli in qualsiasi altro posto come JLCPCB, OSH Park o qualsiasi azienda PCB locale.

Ma se sei disposto a ordinarli su PCBWay puoi scaricare il file ZIP allegato " kim-uno-rev1_2018-12-12_gerbers.zip" e caricarlo direttamente su PCBWay senza alcuna modifica. Questo è il file originale che ho usato per ordinare i PCB che vedete nelle immagini.

Se li stai ordinando da un altro produttore potresti aver bisogno di riesportarli dai sorgenti originali di KiCad, perché li ho generati con le specifiche di PCBWay che puoi trovare qui. Per i sorgenti originali di KiCad, scarica " kim-uno-kicad-sources.zip" ed estrailo.

Ma c'è anche un secondo modo: se non vuoi ordinare il PCB, puoi costruire la tua versione usando perfboard o persino una breadboard.

Comunque: visto che i PCB sono in arrivo, possiamo concentrarci sulle altre parti! Vieni seguimi.

Passaggio 2: approvvigionamento dei componenti

Reperimento dei componenti
Reperimento dei componenti
Reperimento dei componenti
Reperimento dei componenti
Reperimento dei componenti
Reperimento dei componenti

Ora devi procurarti i componenti. Per questo troverai un'immagine panoramica di tutti i componenti e le quantità necessarie, allegata a questo passaggio, nonché una distinta base (distinta base).

La distinta base contiene collegamenti a eBay. Sebbene quelle offerte potrebbero essere chiuse quando leggi questo, puoi usarlo come punto di partenza. I componenti utilizzati sono piuttosto standard.

Di seguito ti spiego tutti i componenti necessari:

  • 7 resistenze da 1 kΩ per i display a sette segmenti. È possibile ridurre il valore (ad es. a 470 Ω) per farli brillare più luminosi, ma ridurlo non troppo altrimenti i LED si spengono o la batteria si scarica molto rapidamente. Ho scoperto che questo valore funziona per me
  • 1x 10 kΩ come resistenza di pull-up per la linea RESET del microcontrollore
  • 1x condensatore da 100nF per appianare eventuali picchi di tensione (cosa che non dovrebbe accadere visto che stiamo usando le batterie, giusto, ma per buona misura…)
  • 1x ATMega328P nel pacchetto DIP-28 (di solito denominato ATMega328P-PU)
  • 1x il PCB principale - vedere il passaggio precedente; o ordinato o costruito da te
  • 2x portabatterie CR2032
  • 1x interruttore SPDT (singolo polo, doppio tiro) che ha fondamentalmente tre contatti e in ciascuno dei suoi due stati (acceso o spento) collega due contatti
  • 20 pulsanti tattili per la tastiera. Per utilizzare il retro del PCB ho usato pulsanti tattili SMD (quelli standard 6x6x6 mm) - sono abbastanza facili da saldare come vedrai
  • OPZIONALE: 1x 1x6 pin header per il collegamento del programmatore, ma questo è opzionale come vedrai in seguito
  • 1x display a sette segmenti con 4 cifre e 1x display a sette segmenti con 2 cifre: la scheda accetta solo elementi da 0,36 pollici (9, 14 mm) con cablaggio anodico comune. Entrambi i requisiti sono importanti per ottenere un'unità funzionante. Ma anche questo tipo di display a sette segmenti è molto comune

In allegato a questo passaggio è possibile trovare il file "component-datasheets.zip" che contiene informazioni più precise su dimensioni e tipologie dei componenti utilizzati. Ma la maggior parte dei componenti sono molto standard e possono essere facilmente reperiti per pochi soldi.

Ora devi aspettare di avere tutti i componenti pronti per continuare a saldare. Durante questo periodo puoi già saltare alla fine e leggere un po' sull'uso di KIM Uno, se lo desideri.

Passaggio 3: panoramica dello strumento di saldatura

Panoramica dello strumento di saldatura
Panoramica dello strumento di saldatura
Panoramica dello strumento di saldatura
Panoramica dello strumento di saldatura

Per saldare e costruire il KIM Uno sono necessari gli strumenti mostrati dalle immagini:

  • Tagliafili (per tagliare l'estremità dei fili dei componenti)
  • pinze piatte
  • Paio di pinzette
  • (decente) Saldatura che non è troppo spessa - io uso una saldatura da 0,56 mm
  • Un saldatore - non è necessario un saldatore di fascia alta (perché anche qui non stiamo facendo scienza missilistica) - Uso l'Ersa FineTip 260 da molto tempo ed è davvero buono
  • Una penna di flusso: l'aggiunta di flusso ai componenti e ai pad rende molto più facile saldarli poiché la saldatura quindi "scorre" da sola nel posto giusto*
  • Facoltativamente: una spugna (di lana di metallo) per il tuo saldatore

Per programmare successivamente il KIM Uno avrai anche bisogno di:

  • un computer con la toolchain AVR-GCC e avrdude per caricare il firmware
  • un ISP (programmatore) - come puoi vedere nell'immagine sto usando il mio Arduino Uno come ISP con uno schizzo speciale - quindi non è necessario acquistare alcun hardware di fantasia

* sono necessarie alcune indicazioni da parte dell'uomo;-)

Siete pronti? Nella fase successiva inizieremo ad assemblare il KIM Uno.

Passaggio 4: saldatura n. 1: aggiunta di resistori e condensatori

Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori
Saldatura n. 1: aggiunta di resistori e condensatori

Dovresti sempre lavorare dai componenti più piccoli (in termini di altezza del componente) per primi, fino ai componenti più alti per ultimi. Pertanto, iniziamo aggiungendo i resistori e piegandoci sulle gambe sul retro in modo che i resistori siano facili da saldare e rimangano in posizione. Successivamente tagliare i fili lunghi.

Inoltre, non mostrato nelle immagini, aggiungi il piccolo condensatore da 100 nF allo stesso modo.

Un consiglio: tieni quelle gambe di filo metallico in un piccolo contenitore, a volte tornano utili.

Passaggio 5: saldatura n. 2: assemblaggio della tastiera

Saldatura n. 2: assemblaggio della tastiera
Saldatura n. 2: assemblaggio della tastiera
Saldatura n. 2: assemblaggio della tastiera
Saldatura n. 2: assemblaggio della tastiera
Saldatura n. 2: assemblaggio della tastiera
Saldatura n. 2: assemblaggio della tastiera

Il prossimo passo è saldare i 20 interruttori tattili SMD. Poiché questo lavoro è un po' laborioso, lo facciamo ora, quando il PCB è appiattito sul banco di lavoro.

Lavoreremo dall'alto verso il basso (o da sinistra verso destra se il PCB è orientato come mostrato nelle foto) e inizieremo con la prima riga: scegliamo uno dei quattro pad per ogni interruttore e inumidiamolo con il flux pen.

Quindi usa un paio di pinzette per afferrare un interruttore e posizionarlo con cura sui quattro pad. Quindi saldare solo la gamba dell'interruttore che si trova sul pad che hai scelto e preparato con il flusso. Per questo dovresti "afferrare" un po' di saldatura con il tuo ferro prima di iniziare. Usando questo metodo, completa l'intera fila di interruttori, saldando solo una gamba.

L'immagine con le frecce mostra un ingrandimento come è stata eseguita esattamente la saldatura.

Dopo aver saldato l'intera riga (un solo pin) puoi apportare piccole modifiche riscaldando il pin e riposizionando l'interruttore. Assicurati che gli interruttori siano allineati nel miglior modo possibile.

Se sei soddisfatto dell'allineamento, puoi bagnare tutti gli altri pin con la penna di flusso e poi saldarli toccandolo con il saldatore e aggiungendo un po' di saldatura toccandolo. Vedrai che la saldatura viene risucchiata direttamente sul pad.

Dopo aver saldato una riga o giù di lì, noterai che ci prendi la mano e non è così difficile ma ripetitivo. Quindi fai il resto e ti ritroverai con una tastiera finita in pochissimo tempo.

Passaggio 6: Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione del pin

Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione del pin
Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione del pin
Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione dei pin
Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione dei pin
Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione del pin
Saldatura n. 3: il display a sette segmenti, l'interruttore e l'intestazione del pin

Ora puoi aggiungere l'interruttore e l'intestazione del pin (opzionale) tenendolo con il dito e saldando un pin per fissarlo al PCB, in modo da poter saldare gli altri pin e infine ritoccare il pin di tenuta iniziale.

Fai attenzione a non scottarti con il saldatore caldo. Se non ti senti a tuo agio con questo, puoi usare un po' di nastro adesivo (ad es. nastro da pittore) per tenere il componente. In questo modo hai entrambe le mani libere per muoverti.

I display a sette segmenti sono saldati allo stesso modo (vedi immagine): lo metti dentro, lo tieni con la mano o con del nastro adesivo e saldi due pin opposti per tenerlo in posizione mentre puoi saldare gli altri pin.

Ma fai attenzione e posiziona il display a sette segmenti nella giusta direzione (con i punti decimali rivolti verso la tastiera). altrimenti sei nei guai…

Passaggio 7: saldatura n. 4: saldatura del microcontrollore

Saldatura n. 4: saldatura del microcontrollore
Saldatura n. 4: saldatura del microcontrollore

Ora che hai molta pratica, puoi andare avanti e inserire il microcontrollore con la tacca in alto (o il primo pin) rivolta verso l'interruttore. Usando le pinze piatte puoi piegare leggermente le gambe del microcontrollore, in modo che corrispondano ai fori sul PCB.

Dal momento che è un adattamento stretto, è necessaria una forza controllata per inserire il microcontrollore. Il vantaggio è che non cade. Ciò significa che puoi prenderti il tuo tempo e saldarlo dal retro.

Passaggio 8: saldatura n. 5: aggiungere i portabatteria (passaggio finale)

Saldatura n. 5: aggiungere i portabatterie (passaggio finale)
Saldatura n. 5: aggiungere i portabatterie (passaggio finale)
Saldatura n. 5: aggiungere i portabatterie (passaggio finale)
Saldatura n. 5: aggiungere i portabatterie (passaggio finale)
Saldatura n. 5: aggiungere i portabatteria (passaggio finale)
Saldatura n. 5: aggiungere i portabatteria (passaggio finale)

Infine è necessario aggiungere i portabatterie sul retro. Per questo basta usare la penna di flusso e bagnare tutti e quattro i pad e quindi ottenere un po' di saldatura sul ferro. Allineare con cura il supporto della batteria su entrambi i pad. Ad entrambe le estremità dei contatti dovrebbe essere visibile la stessa quantità di pad PCB. Tocca il pad PCB e la gamba del supporto della batteria con il ferro. La saldatura scorrerà sotto il pad e sopra di esso e lo fisserà in posizione come mostrato nell'immagine. Se hai problemi con questo, puoi aggiungere più flusso con la penna.

Passaggio 9: lampeggiare l'emulatore

Lampeggio dell'emulatore
Lampeggio dell'emulatore
Lampeggio dell'emulatore
Lampeggio dell'emulatore
Lampeggio dell'emulatore
Lampeggio dell'emulatore

Nell'archivio zip allegato "kim-uno-firmware.zip" puoi trovare il codice sorgente dell'emulatore insieme a un "main.hex" già compilato che puoi caricare direttamente sul microcontrollore.

Prima di poterlo effettivamente utilizzare, è necessario impostare i bit del fusibile del microcontrollore, in modo che utilizzi il clock interno a 8 MHz senza dividerlo a metà. Puoi portare a termine il lavoro con il seguente comando:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m

Se non conosci avrdude: è un programma per caricare programmi su un microcontrollore. Puoi saperne di più qui. Fondamentalmente lo installi e poi è pronto per l'uso. Per la tua configurazione potresti aver bisogno di cambiare l'argomento di "-P" su un'altra porta seriale. Controlla sul tuo computer quale porta seriale viene utilizzata (ad esempio all'interno dell'IDE Arduino).

Successivamente è possibile eseguire il flashing del firmware sul microcontrollore con questo comando:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U flash:w:main.hex

Di nuovo: la stessa cosa vale per "-P" come sopra.

Dato che non possiedo un ISP (In-System Programmer) "professionale" uso sempre il mio Arduino UNO (vedi immagine) e lo sketch che ho allegato ("arduino-isp.ino", di Randall Bohn). So che esiste una versione più recente, ma con questa versione non ho avuto problemi negli ultimi cinque anni, quindi la tengo. Funziona e basta. Utilizzando il commento nell'intestazione dello sketch si ottiene il pinout sull'Arduino UNO e utilizzando lo schema del KIM Uno (vedi allegato) è possibile ottenere il pinout dell'intestazione ISP 1x6 sul KIM Uno. Il pin quadrato, vicino al display a sette segmenti, è il pin 1 (GND). I seguenti pin sono (nell'ordine corretto): RESET, MOSI, MISO, SCK, VCC. Puoi collegare VCC sia a 3V3 che a 5V.

Se non hai aggiunto l'intestazione del pin 1x6, puoi utilizzare i fili della breadboard e inserirli nei fori di connessione e angolarli con il dito, proprio come mostrato nell'immagine. Questo crea un contatto sufficiente per far lampeggiare il firmware e impostare i fusibili. Ma se ti piace una configurazione più permanente, dovresti assolutamente aggiungere le intestazioni pin 1x6.

Ho due dispositivi: una versione di produzione senza intestazioni pin e una versione di sviluppo con intestazioni pin che lascio collegata e la uso più e più volte durante lo sviluppo. Questo è molto più comodo.

Passaggio 10: finito

Finito
Finito
Finito
Finito

Ora hai finito e puoi iniziare a scrivere i tuoi programmi subleq su carta, assemblarli e poi inserirli in memoria.

Il KIM Uno viene fornito con un calcolo Fibonacci preprogrammato a partire dalla posizione di memoria 0x0a. È impostato per impostazione predefinita su n = 6, quindi dovrebbe risultare in un valore di 8. Premere "Vai" per avviare il calcolo.

Passaggio 11: analisi della progettazione PCB

Analisi della progettazione PCB
Analisi della progettazione PCB
Analisi della progettazione PCB
Analisi della progettazione PCB

Dopo aver completato questo progetto ho trovato un paio di punti che sono degni di nota e dovrebbero essere affrontati in una nuova revisione del consiglio:

  • la serigrafia dell'ATMega328p non ha la solita tacca dove si trova il primo pin. L'impronta DIP-28 non ha nemmeno un pad quadrato dove si trova il primo pin. Questo dovrebbe essere sicuramente migliorato con una serigrafia più dettagliata per evitare confusione
  • l'intestazione dell'ISP non ha etichette di connessione sulla serigrafia. Ciò rende difficile riconoscere come collegarlo all'ISP
  • l'intestazione dell'ISP potrebbe essere modificata in un'intestazione pin 2x6 con un layout pin standard per evitare qualsiasi confusione

A parte questi punti, sono abbastanza contento di come sia andata a finire e abbia funzionato al primo tentativo.

Passaggio 12: come programmare SUBLEQ?

Image
Image
Come programmare SUBLEQ?
Come programmare SUBLEQ?
Come programmare SUBLEQ?
Come programmare SUBLEQ?

Come accennato all'inizio, l'attuale firmware del KIM Uno emula un One Instruction Set Computer (OISC) e fornisce l'istruzione subleq per eseguire il calcolo.

L'istruzione subleq sta per sottrai e ramifica se minore o uguale a zero. In pseudo-codice questo sembra il seguente:

subleq A B C mem[B] = mem [B] - mem[A]; if (mem[B] <= 0) vai a C;

Poiché KIM Uno emula una macchina a 8 bit, tutti gli argomenti A, B e C sono valori a 8 bit e quindi può indirizzare una memoria principale totale di 256 byte. Ovviamente questo può essere esteso, apportando valori A, B e C multibyte. Ma per ora manteniamo le cose semplici.

Il KIM Uno ha anche delle "periferiche": il display e la tastiera. Utilizza un'architettura mappata in memoria per interfacciare quelle periferiche, sebbene la mappa della memoria sia molto semplice:

  • 0x00 = il registro Z (zero) e deve essere mantenuto zero.
  • 0x01 - 0x06 = sei byte che rappresentano il valore di ciascuno dei segmenti del display (da destra a sinistra). Un valore 0xf - vedere il codice sorgente (main.c) per maggiori dettagli.
  • 0x07, 0x08, 0x09 = tre byte dove ogni byte rappresenta due display a sette segmenti (da destra a sinistra). Queste locazioni di memoria consentono semplicemente di visualizzare un risultato senza dividere il risultato in due nibble per inserirlo nelle locazioni di memoria a una cifra 0x01 - 0x06.
  • 0x0a+ = Un programma inizia da 0x0a. Attualmente il tasto "Vai" viene eseguito da 0x0a fisso.

Con queste informazioni si può ora scrivere un programma in assembler e inserire le istruzioni in memoria e poi eseguirlo. Poiché esiste una sola istruzione, vengono inseriti solo gli argomenti (A, B e C). Quindi, dopo tre locazioni di memoria, iniziano gli argomenti dell'istruzione successiva e così via.

In allegato a questo passaggio puoi trovare il file "fibonacci.s" e anche un'immagine del programma scritto a mano che è un esempio di implementazione di Fibonacci. Ma aspetta: ci sono tre istruzioni utilizzate - in particolare ADD, MOV e HLT - che non sono subleq. "Qual è il problema? Non hai detto che c'è solo un'istruzione, subleq?" stai chiedendo? È molto semplice: con subleq si possono imitare queste istruzioni molto facilmente:

MOV a, b - la copia dei dati nella posizione da a a b può essere composta da:

  1. subleq b, b, 2 (prossima istruzione)
  2. subleq a, Z, 3 (prossima istruzione)
  3. subleq Z, b, 4 (prossima istruzione)
  4. subleq Z, Z, ad es. 5 (prossima istruzione)

Utilizzando la funzione di sottrazione di subleq, che esegue mem - mem[a] e sovrascrive mem con il risultato, il valore viene copiato utilizzando il registro zero. E "subleq Z, Z, …" ripristina semplicemente il registro zero a 0, indipendentemente dal valore di Z.

AGGIUNGI a, b - somma i valori a + b e memorizza la somma in b può essere composta da:

  1. subleq a, Z, 2 (prossima istruzione)
  2. subleq Z, b, 3 (prossima istruzione)
  3. subleq Z, Z, ad es. 4 (prossima istruzione)

Questa istruzione calcola semplicemente mem - (- mem[a]) che è mem + mem[a] utilizzando anche la funzione di sottrazione.

HLT - ferma la CPU e termina l'esecuzione:

Per definizione l'emulatore sa che la CPU vuole terminare se salta a 0xff (o -1 se cantato). Quindi un semplice

subleq Z, Z, -1

fa il lavoro e indica all'emulatore che dovrebbe terminare l'emulazione.

Usando queste tre semplici istruzioni, l'algoritmo di Fibonacci può essere implementato e funziona bene. Questo perché l'OISC può calcolare tutto ciò che un computer "reale" può calcolare solo con l'istruzione subleq. Ma ovviamente ci sono molti compromessi da fare, come la lunghezza del codice e la velocità. Ma nondimeno è un ottimo modo per imparare e sperimentare con la programmazione di software di basso livello e computer.

In allegato a questo passaggio puoi trovare anche l'archivio zip "kim_uno_tools.zip". Contiene alcuni assemblatori e simulatori di base per KIM Uno. Sono scritti in NodeJS - assicurati di averlo installato.

Programmi di assemblaggio

Se dai un'occhiata a "fibonacci/fibonacci.s" scoprirai che è il codice sorgente per l'implementazione di fibonacci discussa. Per assemblarlo e farne un programma, eseguibile da KIM Uno, inserisci il seguente comando (nella radice dell'archivio "kim_uno_tools.zip") estratto:

nodo assemble.js fibonacci/fibonacci.s

e stamperà un errore se hai commesso un errore o verserà il programma risultante. Per salvarlo, puoi copiare l'output e salvarlo in un file o semplicemente eseguire questo comando:

nodo assemble.js fibonacci/fibonacci.s > yourfile.h

L'output è formattato in modo da poter essere incluso direttamente nel firmware di KIM Uno come file di intestazione C, ma il simulatore può anche usarlo per simulare. Basta inserire:

nodo sim.js tuofile.h

E ti verrà presentato il risultato della simulazione e l'output atteso da KIM Uno sul display.

Questa è stata una breve introduzione a questi strumenti; Ti consiglio di giocare con loro e guardare come funzionano. In questo modo ottieni una conoscenza approfondita e apprendi i principi di funzionamento dietro CPU, istruzioni, assemblatori ed emulatori;-)

Passaggio 13: Outlook

Veduta
Veduta
Veduta
Veduta
Veduta
Veduta

Congratulazioni

Se hai letto questo, probabilmente hai passato tutto questo istruttivo e hai costruito il tuo KIM Uno. Questo è davvero bello.

Ma il viaggio non finisce qui: ci sono un numero infinito di opzioni su come modificare il KIM Uno e personalizzarlo secondo le tue esigenze e gusti.

Ad esempio, il KIM Uno potrebbe essere dotato di un "reale" emulatore di CPU retrò che potrebbe emulare il famoso MOS 6502 o Intel 8085, 8086 o 8088. Quindi farebbe strada alla mia visione iniziale, prima di conoscere gli OISC.

Ma ci sono altri possibili usi, dal momento che il design dell'hardware è piuttosto generico. Il KIM Uno potrebbe essere usato come…

  • … un telecomando, ad es. per CNC o altri dispositivi. Forse cablato o dotato di un diodo IR o di qualsiasi altro trasmettitore wireless
  • … una calcolatrice tascabile (esadecimale). Il firmware può essere adattato molto facilmente e il design della scheda non ha bisogno di essere modificato molto. Forse la serigrafia può essere adattata con operazioni matematiche e lo spazio tra i segmenti può essere rimosso. A parte questo, è già pronto per questa trasformazione

Spero che tu ti sia divertito a seguire e, si spera, a costruire il KIM Uno come mi sono divertito a progettarlo e pianificarlo. E se lo estendi o lo modifichi, per favore fammelo sapere. Saluti!

Concorso PCB
Concorso PCB
Concorso PCB
Concorso PCB

Secondo classificato al PCB Contest

Consigliato: