Cuprins:

KIM Uno - un emulator de kit pentru microprocesor de 5 €: 13 pași (cu imagini)
KIM Uno - un emulator de kit pentru microprocesor de 5 €: 13 pași (cu imagini)

Video: KIM Uno - un emulator de kit pentru microprocesor de 5 €: 13 pași (cu imagini)

Video: KIM Uno - un emulator de kit pentru microprocesor de 5 €: 13 pași (cu imagini)
Video: KIM Uno Demonstration 2024, Iunie
Anonim
Image
Image
KIM Uno - un emulator de kit de dezvoltare pentru microprocesor de 5 €
KIM Uno - un emulator de kit de dezvoltare pentru microprocesor de 5 €
KIM Uno - un emulator de kit de dezvoltare pentru microprocesor de 5 €
KIM Uno - un emulator de kit de dezvoltare pentru microprocesor de 5 €

KIM Uno este un kit portabil, dezvoltat de software pentru microprocesoare (retro). Dar permiteți-mi să introduc ideea acesteia mergând înapoi în timp:

La sfârșitul anului 2018 mi-a venit în minte că am vrut să construiesc un mic kit portabil de microprocesor portabil, la fel ca celebrul KIM-1 de la MOS Technology, Inc. și proiectat de Chuck Peddle, care a fost, de asemenea, implicat în crearea procesorului 6502.

Dar construirea unui kit de dezvoltare „cu os gol” cu componente logice discrete nu era nicio opțiune, deoarece avea nevoie de o sursă mare de alimentare (deoarece acele dispozitive antice tind să ia ceva curent serios) și, de asemenea, dezvoltarea ar fi foarte intensă în timp. Și o vreau acum!

Prin urmare, am proiectat KIM Uno ca un dispozitiv portabil, care se potrivește într-o mână și este alimentat de două baterii CR2032. Folosește microcontrolerul ATMega328p ("Arduino") care rulează la 8 MHz pentru a emula (sau simula) un procesor dorit. Această arhitectură asigură, de asemenea, că CPU-urile emulate sunt interschimbabile cu orice se potrivește în memoria flash a microcontrolerului. Deci este un dispozitiv multifuncțional.

Din coincidență, am urmărit ulterior o discuție foarte bună - numită The Ultimate Apollo Guidance Computer Talk (34C3) - pe YouTube unde sunt menționate „One Instruction Set Computers” sau OISC. Nu știam despre ei și am găsit acest lucru ca fiind candidatul perfect pentru a-l implementa.

KIM Uno emulează un procesor cu o singură instrucțiune: subleq - scade și ramifică dacă este mai mic sau egal cu zero.

Dacă urmăriți împreună cu mine prin acest instructabil, vă puteți construi propriul KIM Uno în cel mai scurt timp. Iar cea mai bună parte - pe lângă faptul că o puteți modifica după gustul dvs. - este că costă doar 4, 75 € de făcut (începând cu sfârșitul anului 2018).

Un indiciu: există un depozit Git care conține toate fișierele furnizate de diferiții pași ai acestui instructable. În cazul în care doriți să modificați unele resurse și să ni le împărtășiți cu toți, puteți face un PR. Dar puteți descărca toate fișierele simultan acolo. Pur și simplu la https://github.com/maxstrauch/kim-uno. Mulțumiri!

Există un alt proiect destul de interesant, numit același (KIM Uno), care face o replică reală a 6502 KIM Uno. Verifică-l aici. Creatorul vinde chiar kitul. Deci, dacă sunteți interesat de 6502 și vă place acest proiect, ar trebui să aruncați o privire acolo!

Pasul 1: Aprovizionarea PCB-ului

Aprovizionarea PCB-ului
Aprovizionarea PCB-ului
Aprovizionarea PCB-ului
Aprovizionarea PCB-ului

După cum puteți vedea, am profitat de ocazia de a proiecta un PCB și de a-l face profesional. Întrucât îl fabricați extern și îl expediați către dvs. va dura mult timp (în funcție de locul în care vă aflați în lume;-)), comandarea acestuia este primul pas. Putem continua apoi cu ceilalți pași în timp ce PCB-ul este fabricat și livrat către dvs.

Mi-am comandat PCB-urile în China la PCBWay pentru doar 5 USD. Nu obțin niciun beneficiu pentru prezentarea PCBWay ca producătorul meu pentru PCB-uri, doar că a funcționat bine pentru mine și ar putea funcționa bine și pentru tine. Dar le puteți comanda în orice alt loc, cum ar fi JLCPCB, OSH Park sau orice altă companie locală de PCB.

Dar dacă doriți să le comandați la PCBWay puteți descărca fișierul ZIP atașat „kim-uno-rev1_2018-12-12_gerbers.zip” și încărcați-l direct pe PCBWay fără nicio modificare. Acesta este fișierul original pe care l-am folosit pentru a comanda PCB-urile pe care le puteți vedea în imagini.

Dacă le comandați de la un alt producător, poate fi necesar să le reexportați din sursele originale KiCad, deoarece le-am generat cu specificațiile de la PCBWay pe care le puteți găsi aici. Pentru sursele originale KiCad, descărcați „kim-uno-kicad-sources.zip” și extrageți-l.

Dar există chiar și un al doilea mod: dacă nu doriți să comandați PCB-ul, vă puteți construi propria versiune folosind perfboard sau chiar o panou de testare.

Oricum: deoarece PCB-urile sunt acum pe drum, ne putem concentra asupra celorlalte părți! Urmează-mă.

Pasul 2: aprovizionarea componentelor

Aprovizionarea componentelor
Aprovizionarea componentelor
Aprovizionarea componentelor
Aprovizionarea componentelor
Aprovizionarea componentelor
Aprovizionarea componentelor

Acum trebuie să obțineți componentele. Pentru aceasta, veți găsi o imagine de ansamblu a tuturor componentelor și cantităților de care aveți nevoie, atașată la acest pas, precum și o listă de materiale (lista de materiale).

BOM conține linkuri către eBay. Deși aceste oferte ar putea fi închise când citiți acest lucru, îl puteți folosi ca punct de plecare. Componentele utilizate sunt destul de standard.

În cele ce urmează vă voi explica toate componentele necesare:

  • Rezistențe 7x 1 kΩ pentru afișajele de șapte segmente. Puteți reduce valoarea (de ex. La 470 Ω) pentru a le face să strălucească mai mult, dar reduceți-o nu prea mult, altfel LED-urile vor muri sau bateria se va descărca foarte repede. Am constatat că această valoare funcționează pentru mine
  • 1x 10 kΩ ca rezistență pull-up pentru linia RESET a microcontrolerului
  • 1x condensator 100nF pentru a netezi orice vârfuri de tensiune (ceea ce nu ar trebui să se întâmple deoarece folosim baterii, corect, dar pentru o măsură bună …)
  • 1x ATMega328P în pachetul DIP-28 (denumit de obicei ATMega328P-PU)
  • 1x PCB principal - vezi pasul anterior; fie comandat, fie construit de tine
  • 2 suporturi pentru baterii CR2032
  • 1x comutator SPDT (unipolar, dublu aruncat) care are practic trei contacte și în fiecare dintre cele două stări (fie pornit, fie oprit) conectează două contacte
  • 20x butoane tactile pentru tastatură. Pentru a utiliza partea din spate a PCB-ului am folosit butoane tactile SMD (cele standard 6x6x6 mm) - sunt destul de ușor de lipit, așa cum veți vedea
  • OPȚIONAL: antet 1x 1x6 pin pentru conectarea programatorului, dar acest lucru este opțional așa cum veți vedea mai târziu
  • 1x afișaj cu șapte segmente cu 4 cifre și 1x afișaj cu șapte segmente cu 2 cifre - placa va lua doar elemente de 9,34 mm (0,36 inch) cu cabluri anodice comune. Ambele cerințe sunt importante pentru a obține o unitate de lucru. Dar, de asemenea, acest tip de afișaj pe șapte segmente sunt foarte frecvente

Atașat acestui pas puteți găsi fișierul „component-datasheets.zip” care conține informații mai precise despre dimensiunile și tipurile componentelor utilizate. Dar majoritatea componentelor sunt foarte standard și pot fi obținute cu ușurință pentru bani puțini.

Acum trebuie să așteptați până când aveți toate componentele pregătite pentru a continua lipirea. În acest timp, puteți sări deja la final și să citiți puțin despre utilizarea KIM Uno, dacă doriți.

Pasul 3: Prezentare generală a instrumentului de lipit

Prezentare generală a instrumentului de lipit
Prezentare generală a instrumentului de lipit
Prezentare generală a instrumentului de lipit
Prezentare generală a instrumentului de lipit

Pentru lipirea și construirea KIM Uno aveți nevoie de instrumentele prezentate de imagini:

  • Tăietor de sârmă (pentru a tăia capătul firelor componente)
  • Cleste plate
  • Pensetă
  • (decent) lipire care nu este prea groasă - folosesc lipire de 0,56 mm
  • Un fier de lipit - nu aveți nevoie de un fier de lipit de înaltă calitate (pentru că aici nu facem științe despre rachete) - Folosesc Ersa FineTip 260 de mult timp și este foarte bun
  • Un stilou de flux: adăugarea de flux la componente și tampoane face mult mai ușor să le lipiți, deoarece lipirea „curge” de la sine la locul potrivit *
  • Opțional: un burete (din vată metalică) pentru lipit

Pentru a programa ulterior KIM Uno, veți avea nevoie și de:

  • un computer cu lanțul de instrumente AVR-GCC și avrdude pentru a încărca firmware-ul
  • un ISP (programator) - după cum puteți vedea pe imagine, folosesc Arduino Uno ca ISP cu o schiță specială - deci nu este nevoie să cumpărați niciun hardware de lux

* sunt necesare câteva îndrumări de către oameni;-)

Sunteți gata? În pasul următor vom începe asamblarea KIM Uno.

Pasul 4: lipire # 1: adăugarea de rezistențe și condensatoare

Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare
Lipire # 1: Adăugarea de rezistențe și condensatoare

Ar trebui să lucrați întotdeauna de la cele mai mici componente (în ceea ce privește înălțimea componentelor) mai întâi, până la cele mai înalte componente. Prin urmare, începem prin adăugarea rezistențelor și aplecarea peste picioarele din spate, astfel încât rezistențele să fie ușor de lipit și să rămână la locul lor. După aceea tăiați firele lungi.

De asemenea, nu este afișat în imagini, adăugați condensatorul mic de 100 nF în același mod.

Un sfat: păstrați acele picioare de sârmă într-un recipient mic, uneori sunt utile.

Pasul 5: lipire # 2: asamblarea tastaturii

Lipire # 2: Asamblarea tastaturii
Lipire # 2: Asamblarea tastaturii
Lipire # 2: Asamblarea tastaturii
Lipire # 2: Asamblarea tastaturii
Lipire # 2: Asamblarea tastaturii
Lipire # 2: Asamblarea tastaturii

Următorul pas este lipirea celor 20 de comutatoare tactile SMD. Deoarece această lucrare este puțin dificilă, o facem acum, când PCB-ul se așează plat pe bancul de lucru.

Vom lucra de sus în jos (sau de la stânga la dreapta dacă PCB-ul este orientat așa cum se arată în fotografii) și vom începe cu primul rând: alegeți unul dintre cele patru tampoane pentru fiecare comutator și udați-l cu pixul de flux.

Apoi folosiți o pereche de pensete pentru a apuca un comutator și poziționați-l cu atenție pe cele patru plăcuțe. Apoi lipiți doar piciorul comutatorului care este pe tamponul pe care l-ați ales și pregătit cu flux. Pentru aceasta ar trebui să „apucați” ceva lipit cu fierul de călcat înainte de a începe. Folosind această metodă, completați întregul rând de comutatoare, lipind doar un picior.

Imaginea cu săgețile arată o mărire a modului în care s-a făcut exact lipirea.

După ce ați lipit întregul rând (doar un știft), puteți face mici ajustări încălzind știftul înapoi și repoziționând comutatorul. Asigurați-vă că întrerupătoarele sunt aliniate cât mai bine posibil.

Dacă sunteți mulțumit de aliniere, puteți uda toate celelalte știfturi cu pixul de flux și apoi le lipiți atingându-l cu fierul de lipit și adăugând un pic de lipit atingând și el. Veți vedea că lipirea este aspirată direct pe tampon.

După ce lipiți un rând sau cam așa, veți observa că vă prindeți și nu este atât de greu, dar repetitiv. Deci, faceți restul și veți termina cu o tastatură terminată în cel mai scurt timp.

Pasul 6: lipirea nr. 3: afișajul cu șapte segmente, comutatorul și antetul pinului

Sudare # 3: afișajul cu șapte segmente, comutatorul și antetul pinului
Sudare # 3: afișajul cu șapte segmente, comutatorul și antetul pinului
Lipirea nr. 3: afișajul cu șapte segmente, comutatorul și antetul pinului
Lipirea nr. 3: afișajul cu șapte segmente, comutatorul și antetul pinului
Sudare # 3: afișajul cu șapte segmente, comutatorul și antetul pinului
Sudare # 3: afișajul cu șapte segmente, comutatorul și antetul pinului

Acum puteți adăuga comutatorul și antetul pinului (opțional) ținându-l cu degetul și lipind un pin pentru a-l ține pe PCB, astfel încât să puteți lipi ceilalți pini și, în cele din urmă, să atingeți pinul inițial de fixare.

Aveți grijă să nu vă ardeți cu fierul de lipit la cald. Dacă nu vă simțiți confortabil cu acest lucru, puteți utiliza un pic de bandă (de ex. Banda de pictor) pentru a ține componenta. În acest fel aveți ambele mâini libere pentru a vă deplasa.

Ecranele de șapte segmente sunt lipite în același mod (a se vedea imaginea): îl puneți, îl țineți cu mâna sau banda și lipiți doi pini opuși pentru a-l ține în poziție în timp ce puteți lipi ceilalți pini.

Aveți grijă și puneți afișajul cu șapte segmente în direcția corectă (cu punctele zecimale orientate spre tastatură). Altfel ai probleme …

Pasul 7: lipirea # 4: lipirea microcontrolerului

Lipirea # 4: lipirea microcontrolerului
Lipirea # 4: lipirea microcontrolerului

Acum, că aveți multă practică, puteți merge mai departe și pune microcontrolerul cu crestătura de sus (sau primul pin) orientată spre comutator. Folosind un clește plat puteți îndoi cu grijă picioarele microcontrolerului, astfel încât să se potrivească cu găurile de pe PCB.

Deoarece este o potrivire strânsă, aveți nevoie de o forță controlată pentru a pune microcontrolerul. Avantajul este că nu cade. Aceasta înseamnă că vă puteți lua timpul și îl puteți lipi din spate.

Pasul 8: lipire # 5: adăugați suporturile bateriei (pasul final)

Lipire # 5: Adăugați suporturile bateriei (pasul final)
Lipire # 5: Adăugați suporturile bateriei (pasul final)
Lipire # 5: Adăugați suporturile bateriei (pasul final)
Lipire # 5: Adăugați suporturile bateriei (pasul final)
Lipire # 5: Adăugați suporturile bateriei (pasul final)
Lipire # 5: Adăugați suporturile bateriei (pasul final)

În cele din urmă, trebuie să adăugați suporturile bateriei în spate. Pentru aceasta, pur și simplu folosiți stiloul de flux și udați toate cele patru plăcuțe și apoi obțineți o lipire pe fier. Aliniați cu atenție suportul bateriei pe ambele plăcuțe. La ambele capete ale contactelor ar trebui să existe aceeași cantitate de tampon PCB vizibil. Atingeți tamponul PCB și piciorul suportului bateriei cu fierul de călcat. Lipirea va curge sub tampon și peste acesta și o va fixa în poziție așa cum se arată în imagine. Dacă aveți probleme cu acest lucru, puteți adăuga mai mult flux cu stiloul.

Pasul 9: intermitent emulator

Intermitent emulator
Intermitent emulator
Intermitent emulator
Intermitent emulator
Intermitent emulator
Intermitent emulator

În arhiva zip atașată „kim-uno-firmware.zip” puteți găsi codul sursă pentru emulator împreună cu un „main.hex” deja compilat pe care îl puteți încărca direct pe microcontroler.

Înainte de a-l putea folosi, trebuie să setați biții de siguranță ai microcontrolerului, astfel încât să utilizeze ceasul intern de 8 MHz fără a-l împărți în jumătate. Puteți face treaba cu următoarea comandă:

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

Dacă nu știți avrdude: este un program pentru încărcarea de programe pe un microcontroler. Puteți afla mai multe despre asta aici. Practic îl instalați și apoi este gata de utilizare. Pentru configurare, poate fi necesar să schimbați argumentul „-P” la un alt port serial. Vă rugăm să verificați pe computerul dvs. care port serial este utilizat (de exemplu, în interiorul IDE-ului Arduino).

După aceasta, puteți bloca firmware-ul pe microcontroler cu această comandă:

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

Din nou: același lucru se aplică „-P” ca mai sus.

Deoarece nu dețin un ISP „profesionist” (In-System Programmer) folosesc întotdeauna Arduino UNO (vezi imaginea) și schița pe care am atașat-o („arduino-isp.ino”, de la Randall Bohn). Știu că există o versiune mai nouă, dar cu această versiune am avut zero probleme în ultimii cinci ani, așa că o păstrez. Doar funcționează. Utilizând comentariul din antetul schiței obțineți pinout-ul pe Arduino UNO și folosind schema KIM Uno (a se vedea atașat) puteți obține pinout-ul antetului ISP 1x6 de pe KIM Uno. Pinul pătrat, aproape de afișajul cu șapte segmente, este pinul 1 (GND). Următorii pini sunt (în ordinea corectă): RESET, MOSI, MISO, SCK, VCC. Puteți conecta VCC fie la 3V3, fie la 5V.

Dacă nu ați adăugat antetul 1x6 pini, puteți utiliza fire de panou și le puteți pune în orificiile de conectare și le puteți înclina cu degetul - așa cum se arată în imagine. Acest lucru face suficient contact pentru a clipi firmware-ul și a seta siguranțele. Dar dacă vă place o configurare mai permanentă, ar trebui să adăugați cu siguranță anteturile cu 1x6 pini.

Am două dispozitive: o versiune de producție fără anteturi de pin și o versiune de dezvoltare cu anteturi de pin pe care o las conectată și o folosesc iar și iar în timpul dezvoltării. Acest lucru este mult mai confortabil.

Pasul 10: Finalizat

Terminat
Terminat
Terminat
Terminat

Acum ați terminat și puteți începe să scrieți propriile programe subleq pe hârtie, asamblându-le și apoi introducându-le în memorie.

KIM Uno vine cu un calcul Fibonacci preprogramat începând cu locația de memorie 0x0a. Este setat implicit la n = 6, deci ar trebui să aibă o valoare de 8. Apăsați „Go” pentru a începe calculul.

Pasul 11: Analiza proiectării PCB

Analiza proiectării PCB
Analiza proiectării PCB
Analiza proiectării PCB
Analiza proiectării PCB

După finalizarea acestui proiect, am găsit câteva puncte demne de remarcat și care ar trebui abordate într-o nouă revizuire a forumului:

  • ecranul de mătase al ATMega328p nu are crestătura obișnuită unde se află primul pin. Amprenta DIP-28 nu are nici măcar un tampon pătrat unde se află primul pin. Acest lucru ar trebui cu siguranță îmbunătățit cu o serigrafie mai detaliată pentru a preveni confuzia
  • antetul ISP nu are etichete de conectare pe ecranul de mătase. Acest lucru face dificilă recunoașterea modului de conectare la ISP
  • antetul ISP ar putea fi schimbat într-un antet 2x6 pin cu un aspect standard al pinului pentru a preveni orice confuzie

În afară de aceste puncte, sunt destul de fericit cum sa dovedit și a funcționat la prima încercare.

Pasul 12: Cum se programează SUBLEQ?

Image
Image
Cum se programează SUBLEQ?
Cum se programează SUBLEQ?
Cum se programează SUBLEQ?
Cum se programează SUBLEQ?

După cum sa menționat la început, firmware-ul actual al KIM Uno emulează un computer One Instruction Set (OISC) și oferă instrucțiunile subleq pentru efectuarea calculelor.

Instrucțiunea subleq reprezintă scăderea și ramificarea dacă este mai mică sau egală cu zero. În pseudo-cod, acesta arată după cum urmează:

subleq A B C mem [B] = mem [B] - mem [A]; if (mem [B] <= 0) merge la C;

Deoarece KIM Uno emulează o mașină de 8 biți, toate argumentele A, B și C sunt valori de 8 biți și, prin urmare, poate adresa o memorie principală totală de 256 de octeți. Evident, acest lucru poate fi extins, făcând valori A, B și C multi-octet. Dar deocamdată să o simplificăm.

KIM Uno are și „periferice”: afișajul și tastatura. Folosește o arhitectură cartografiată de memorie pentru a interfața aceste periferice, deși harta de memorie este foarte simplă:

  • 0x00 = registrul Z (zero) și trebuie menținut zero.
  • 0x01 - 0x06 = șase octeți care reprezintă valoarea fiecărui segment de afișare (de la dreapta la stânga). O valoare 0xf - consultați codul sursă (main.c) pentru mai multe detalii.
  • 0x07, 0x08, 0x09 = trei octeți în care fiecare octet reprezintă două afișaje de șapte segmente (de la dreapta la stânga). Aceste locații de memorie permit afișarea simplă a unui rezultat fără împărțirea rezultatului în două ciocăniri pentru a-l plasa în locațiile de memorie cu o singură cifră 0x01 - 0x06.
  • 0x0a + = Un program începe de la 0x0a. În prezent, tasta „Go” se execută de la 0x0a fix.

Cu aceste informații, acum puteți scrie un program în asamblare și puteți introduce instrucțiunile în memorie și apoi îl puteți executa. Deoarece există o singură instrucțiune, sunt introduse numai argumentele (A, B și C). Deci, după trei locații de memorie, încep următoarele argumente de instrucțiuni și așa mai departe.

Atașat la acest pas puteți găsi fișierul „fibonacci.s” și, de asemenea, o imagine a programului scris de mână, care este un exemplu de implementare a lui Fibonacci. Dar așteptați: există trei instrucțiuni utilizate - în special ADD, MOV și HLT - care nu sunt subleq. "Care este afacerea? Nu ai spus că există o singură instrucțiune, subleq?" intrebi? Este foarte ușor: cu subleq se pot imita aceste instrucțiuni foarte ușor:

MOV a, b - copierea datelor de la locația a la b poate fi compusă din:

  1. subleq b, b, 2 (următoarea instrucțiune)
  2. subleq a, Z, 3 (instrucțiunea următoare)
  3. subleq Z, b, 4 (instrucțiunea următoare)
  4. subleq Z, Z, de ex. 5 (următoarea instrucțiune)

Folosind caracteristica de scădere a subleq, care face mem - mem [a] și suprascrie mem cu rezultatul, valoarea este copiată utilizând registrul zero. Și „subleq Z, Z,…” pur și simplu resetează registrul zero la 0, indiferent de valoarea lui Z.

ADAUGĂ a, b - adaugă valorile a + b și stochează suma în b poate fi compusă din:

  1. subleq a, Z, 2 (instrucțiunea următoare)
  2. subleq Z, b, 3 (instrucțiunea următoare)
  3. subleq Z, Z, de ex. 4 (următoarea instrucțiune)

Această instrucțiune calculează pur și simplu mem - (- mem [a]) care este mem + mem [a] utilizând și caracteristica de scădere.

HLT - oprește procesorul și încheie execuția:

Prin definiție, emulatorul știe că CPU-ul dorește să se termine dacă sare la 0xff (sau -1 dacă este cântat). Deci un simplu

subleq Z, Z, -1

face treaba și indică emulatorului că ar trebui să pună capăt emulației.

Folosind aceste trei instrucțiuni simple, algoritmul Fibonacci poate fi implementat și funcționează bine. Acest lucru se datorează faptului că OISC poate calcula tot ce poate calcula un computer „real” doar cu subleq-ul de instrucțiuni. Dar, desigur, există multe compromisuri de făcut - cum ar fi lungimea și viteza codului. Cu toate acestea, este o modalitate excelentă de a învăța și experimenta cu programare software de nivel scăzut și calculatoare.

Atașat la acest pas puteți găsi și arhiva zip „kim_uno_tools.zip”. Acesta conține un ansamblu de bază și un simulator pentru KIM Uno. Sunt scrise în NodeJS - asigurați-vă că ați instalat-o.

Asamblarea programelor

Dacă aruncați o privire la „Fibonacci / Fibonacci.s” veți descoperi că acesta este codul sursă pentru implementarea Fibonacci discutată. Pentru a-l asambla și a crea un program din acesta, pe care KIM Uno îl poate rula, introduceți următoarea comandă (în rădăcina arhivei extrase "kim_uno_tools.zip"):

nodul asambla.js Fibonacci / Fibonacci.s

și va imprima o eroare dacă ați făcut o greșeală sau vărsați programul rezultat. Pentru ao salva, puteți copia ieșirea și o puteți salva într-un fișier sau pur și simplu executați această comandă:

nodul asambla.js fibonacci / fibonacci.s> yourfile.h

Ieșirea este formatată astfel încât să poată fi inclusă direct în firmware-ul KIM Uno ca fișier antet C, dar simulatorul îl poate folosi și pentru a simula. Pur și simplu introduceți:

nodul sim.js fișierul dvs.

Și vi se va prezenta rezultatul simulării și rezultatul așteptat de la KIM Uno pe afișaj.

Aceasta a fost o scurtă introducere a acestor instrumente; Vă recomand să vă jucați cu ei și să vedeți cum funcționează. În acest fel veți obține o cunoaștere profundă și veți învăța principiile de funcționare din spatele procesoarelor, instrucțiunilor, asamblatoarelor și emulatoarelor;-)

Pasul 13: Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Felicitări

Dacă ați citit acest lucru, probabil ați parcurs acest instructabil și v-ați construit propriul KIM Uno. Este foarte frumos.

Însă călătoria nu se termină aici - există un număr infinit de opțiuni pentru a putea modifica KIM Uno și a-l personaliza în funcție de nevoile și gusturile dvs.

De exemplu, KIM Uno ar putea fi echipat cu un emulator retro „real” al procesorului, care ar putea emula faimoasele MOS 6502 sau Intel 8085, 8086 sau 8088. Apoi ar merge pe drumul către viziunea mea inițială, înainte să aflu despre OISC-uri.

Dar există și alte utilizări posibile, deoarece designul hardware este destul de generic. KIM Uno ar putea fi folosit ca …

  • … o telecomandă de ex. pentru CNC-uri sau alte dispozitive. Poate cablat sau echipat cu o diodă IR sau orice alt expeditor wireless
  • … un calculator de buzunar (hexazecimal). Firmware-ul poate fi adaptat foarte ușor, iar designul plăcii nu trebuie schimbat foarte mult. Poate că serigrafia poate fi adaptată cu operații matematice și spațiul dintre segmente poate fi eliminat. În afară de aceasta, este deja gata pentru această transformare

Sper că v-ați distrat la fel de mult ca să urmăriți și să construiți KIM Uno la fel de mult ca și mine la proiectarea și planificarea lui. Și dacă îl extindeți sau îl modificați - vă rog să-mi spuneți. Noroc!

Concurs PCB
Concurs PCB
Concurs PCB
Concurs PCB

Locul doi în concursul PCB

Recomandat: