ako naprogramovali prvy pocitac na svete? Asi bol natvrdo predprogramovany vypalenim instrukcii do ROMky. Prosim, prispejte svojimi uvahami a myslienkami
Naprogramovanie OS
Naprogramovanie OS
Dlho rozmyslam nad totuto myslienkou. A ta znie: Da sa dajako naprogramovat v cistom mode (PC bez ineho OS) zaklad ako takeho OS? Je vobec cosi takeho mozne (jedine ma napada ASM, ale ako to tam dostat i takto, ked tam nic nemate?). Zoberte si, ze si zlozite PC, zapnete ho a co teraz. Pravdepodobne sa to neda, ale co minimalne by som potom potreboval na to, aby som si cosi takeho vytvoril?
ako naprogramovali prvy pocitac na svete? Asi bol natvrdo predprogramovany vypalenim instrukcii do ROMky. Prosim, prispejte svojimi uvahami a myslienkami
ako naprogramovali prvy pocitac na svete? Asi bol natvrdo predprogramovany vypalenim instrukcii do ROMky. Prosim, prispejte svojimi uvahami a myslienkami
-
manager666
Star
- Príspevky: 642
- Registrovaný: 12 aug 2007, 13:29
To dobre viem. Ale ja som to tu pisal kvoli tomu, aby mi to ktosi trochu nacrtol a nie ma uistoval, ze na to nemammanager666 napísal:Kedze nemas vobec potuchy, ako vytvorit OS a podobne, tak z toho vyplyva jedno : momentalne na to nemas, tak to neskusaj... a na ostatne otazky tu existuje ujo g00gle pripadne iny vyhladavac...
Ty mas urcite viac skusenosti ako ja. Tak mi skus povedat ako by si postupoval Ty a ci moje uvahy su aspon spravne. Da sa to, neda sa to ...
-
pheo
Light Star
- Príspevky: 212
- Registrovaný: 20 sep 2005, 16:53
- Bydlisko: moje hniezdo
- Kontaktovať používateľa:
Keby som ti mal prense odpovedať ako bol naprogramovaný prvý počítač tak ti odpoviem mechanicky
Neviem ci prave tento je pokladaný za prvý "počítač" ale aspon mne tak pripadá:
Ale asi chces taký počítač dnešného typu... klasická PC stanica hm tak to ti neviem z hlavy
ale google vie vsetko:
OS v napaleny v flash ramke ? mozno nejaky mini , ale fest mini, taketo ramky co udrzuju stav aj po vypnuti maju malu kapacitu, takze by ich tam muselo byt asi hafo, preto sa pouzivali magneticke pasky, pripadne HDD.
Take tie zariadenia ako pracky, chladničky a spol mozu mat vsetko vypalene pretoze ziaden OS tam nemaju ale priamo LEN inštrukcie a priestor pre data.
V podstate (aspon ja mam dnes taku predstavu, pripadne ma opravte, ale prosím slušne
), takePC je kopa technických špecifikácií, že nastavenia hardwarového typu uchováva bios, a ten je mapovaný v ramke od miesta X po miesto Y. Po zapnutí sa prevedie kontrola, a spustí bootovacie zariadenie, prečíta sa MBR a sputia prvé inštrukcie - zavedenie OS (odtadeto už píešeš ty
). Taky OS to nie je len ako práča, dobrý OS musí spravovať a pridelovať zdroje a riadiť vlákna , prideľovať RAM pamäť, optimalizovať beh svojích periférií (napr. hlavičky hardisku aby moc zbytočne nelietala) - teda roboty viac ako pre teba mna a vsetkých dokopy co si tieto riadky precitaju ....
Ale hodne uspechov, keby nahodov nakodis novy linux, tak nezabudni dopísať moj nick do Contributors a niekde pekne na začiatok
Neviem ci prave tento je pokladaný za prvý "počítač" ale aspon mne tak pripadá:
(Pre rýpalov - je to sčítací stroj - +- - to co dnes vie ALU)
Ale asi chces taký počítač dnešného typu... klasická PC stanica hm tak to ti neviem z hlavy
Iba z bežného pohľadu my je jasné ze je to na dlhé bezsenné noci študovania tak sa na to radsej ....
OS v napaleny v flash ramke ? mozno nejaky mini , ale fest mini, taketo ramky co udrzuju stav aj po vypnuti maju malu kapacitu, takze by ich tam muselo byt asi hafo, preto sa pouzivali magneticke pasky, pripadne HDD.
Take tie zariadenia ako pracky, chladničky a spol mozu mat vsetko vypalene pretoze ziaden OS tam nemaju ale priamo LEN inštrukcie a priestor pre data.
V podstate (aspon ja mam dnes taku predstavu, pripadne ma opravte, ale prosím slušne
Ale hodne uspechov, keby nahodov nakodis novy linux, tak nezabudni dopísať moj nick do Contributors a niekde pekne na začiatok
Re: Naprogramovanie OS
Bootstrapping (compilers) (a teda zvyčajne, buď základný kompilátor urobíš priamo v strojovom kóde, alebo, a to je častejší prípad, použiješ nejaký cross-compiler)Gregi napísal:..
to Pheo: prepac, asi som sa vyjadril nepresne. Mne nejde ani tak o strukturu OS. V tom mam ako tak jasno. No mne ide o to ako by si tam dostal tie instrukcie (napr. take mov al,8), ked ziadny OS nemas, ktory by Ti spustil vyvojove prostredie pre novy OS (teda programovaci jazyk). Pre predsavu: Zapnes PC (berme x86), prebehne post a blika kurzor (berme ze HDD je naformatovany, i ked i jeho obsluhu treba naprogramovat
). Co by si proste pisal, ked Ti nema co spracovavat tie instrukcie? cez DOS by si vedel aspon ASM instrukcie rvat postupne do file a potom ten skompilovat, ale takto ...? Podla mna sa to asi neda (to si potrebujem vyjasnit), a rad by som nasal informacie, co by som min. na to potreboval, aby som to tam vedel nakodit v tom pravdepodbne ASM. Podla mna by mi stacila boot disketa s DOSom, ale i to neviem ci je tam vsetko potrebne na kompilovanie. Toto ma zaujima. Diky
Najjednoduchšie (a najpoužívanejšie) riešenie: naprogramuješ to na inom (už existujúcom) počítači (a prípadne použiješ na testovanie softvérový, alebo hardvérový emulátor).
Napr.: keď chcem programovať niečo pre GameboyAdvance, nepotrebujem riešiť, ako dostanem do GBA nejaký kompilátor (a nemusím ho ani programovať). Použiť môžem akýkoľvek kompilátor, ktorý je schopný skompilovať kód pre ARM7TDMI procesor a funguje na mojom obľúbenom OS (a teda napr binutils+gcc).
Napr.: keď chcem programovať niečo pre GameboyAdvance, nepotrebujem riešiť, ako dostanem do GBA nejaký kompilátor (a nemusím ho ani programovať). Použiť môžem akýkoľvek kompilátor, ktorý je schopný skompilovať kód pre ARM7TDMI procesor a funguje na mojom obľúbenom OS (a teda napr binutils+gcc).
to chrono: pozeral som odkaz. Ale ber to tak, ze nemas nic. len ten pocitac a elektiku predplatenu na rok
. Co by si robil? Samotny cisty zapnuty stroj Ti ziadnu instrukciu predsa nevezme, pretoze nevie citat vstupy z klavesnice (aspon nie taketo komplexnejsie ako je napr ASM kod). Alebo sa mylim? 
napr. je mozno mozne tam dat add x001 0100101 0100 (co je: vloz na adresu pamate x001 hodnotu 0100101 - v preklade mov ah,4)
napr. je mozno mozne tam dat add x001 0100101 0100 (co je: vloz na adresu pamate x001 hodnotu 0100101 - v preklade mov ah,4)
Praveze nemas nic skompilovane. Ako by si to skompiloval, ked tam nic este nemas? V podstate prvotna otazka, ktora nas posunie dalej znie: da sa do cisteho PC vlozit dajaky prikaz (chap instrukcia) co i len do pamate?
EDIT: berte to tak, ze zacinate uuuplne od nuly. Akurat CPU ma v sebe instrukcie a bios ovadanie preruseni
EDIT: berte to tak, ze zacinate uuuplne od nuly. Akurat CPU ma v sebe instrukcie a bios ovadanie preruseni
V prípade, že by si naozaj nemal iný počítač, tak by to bolo komplikovanejšie.
Ten tvoj počítaš by musel umožňovať spúšťanie nejakého kódu (napr. z nejakej (e)(e)(p)rom pamäte. Do tej pamäte by si vkladal priamo strojový kód (trebárs by si použil kopec prepínačov, alebo nejaký modernejší spôsob).
Do tej pamäte by si uložil kód, ktorý by sa staral o obsluhu klávesnice, ukladanie a načítavanie údajov (aby si nemusel stále preprogramovávať tú rom pamäť) a funkcie, ktoré by menili text na binárne údaje (aby si mohol jednoduchšie zadávať ten strojový kód).
Potom by si začal pracovať na jednoduchom kompilátore priamo v strojovom kóde. Jazyk, ktorý by dokázal skompilovať, by musel mať také možnosti, aby sa pomocou neho dal neskôr naprogramovať kompilátor. Postupne by si ten kompilátor vylepšoval tak, že jeho zdrojový kód by sa dal skompilovať už existujúcim kompilátorom a výsledný kompilátor by bol o niečo lepší... (a to už je ten bootstrapping).
Ten tvoj počítaš by musel umožňovať spúšťanie nejakého kódu (napr. z nejakej (e)(e)(p)rom pamäte. Do tej pamäte by si vkladal priamo strojový kód (trebárs by si použil kopec prepínačov, alebo nejaký modernejší spôsob).
Do tej pamäte by si uložil kód, ktorý by sa staral o obsluhu klávesnice, ukladanie a načítavanie údajov (aby si nemusel stále preprogramovávať tú rom pamäť) a funkcie, ktoré by menili text na binárne údaje (aby si mohol jednoduchšie zadávať ten strojový kód).
Potom by si začal pracovať na jednoduchom kompilátore priamo v strojovom kóde. Jazyk, ktorý by dokázal skompilovať, by musel mať také možnosti, aby sa pomocou neho dal neskôr naprogramovať kompilátor. Postupne by si ten kompilátor vylepšoval tak, že jeho zdrojový kód by sa dal skompilovať už existujúcim kompilátorom a výsledný kompilátor by bol o niečo lepší... (a to už je ten bootstrapping).
A vedel by to ten BIOS uz spracovat do podby instrukcii? Teda, ze tie informacie uz by boli priamo instrukcie pre procesor. Takze by som vedel vytvorit basic instrukcie na spravu pamate, I/O zariadenia atd. To by mi umoznilo pristupovat uz k hardwaru toho PC. Este vlozit jednoduchy kompilator a potom uz na samotnom PC zacat kodit samotny vlastny OS ukladany na FDD, HDD. Tak?
Este by ma zaujimalo, ako sa uklada do eprom taka informacia. Napr. na zaklade el. impulzov 0100101 ... atd?
Este by ma zaujimalo, ako sa uklada do eprom taka informacia. Napr. na zaklade el. impulzov 0100101 ... atd?
Bios pri tých zariadeniach nič nespracováva. Proste sa tam použije inštrukcia skoku na nejakú adresu (čo znamená, že v (rom) pamäti toho zariadenia musí byť klasický strojový kód, ktorému rozumie procesor).
Inak PC BIOS obsahuje funkcie slúžiace na nízko-úrovňový prístup napr. k diskom (a teda môžeš načítať/uložiť dáta z/do nejakého sektora).
Ako sa ukladá informácia do nejakej rom pamäte záleží od typu tej pamäte. Často tak, že na adresové a dátové piny privedieš potrebnú informácia a potom nejaký konkrétny zmena napätia na konkrétnom pine spôsobí, že sa na tú adresu tie údaje zapíšu (ak budeš hľadať, určite niekde nájdeš, ako sa to robí pre prom, eprom, eeprom, flash... pamäte).
Inak PC BIOS obsahuje funkcie slúžiace na nízko-úrovňový prístup napr. k diskom (a teda môžeš načítať/uložiť dáta z/do nejakého sektora).
Ako sa ukladá informácia do nejakej rom pamäte záleží od typu tej pamäte. Často tak, že na adresové a dátové piny privedieš potrebnú informácia a potom nejaký konkrétny zmena napätia na konkrétnom pine spôsobí, že sa na tú adresu tie údaje zapíšu (ak budeš hľadať, určite niekde nájdeš, ako sa to robí pre prom, eprom, eeprom, flash... pamäte).
tymi prepinacmi mysli jednotky a nuly. Takze napr. mas 8 prepinacov: naprepinas ich na 01000101 a deviatym prepinacom posles impulz na zapis do eprom. takto postupujes s kazdym byte az budes hotovy s programovm (veeelmi zdlhava robota). potom napojis Epromku napr. cez serial port na PC a BIOS si uz ten program co je v tej eprom spusti. A uz Ti na PC bezi program co bol na esternej eprom. Takto tam mozes postupne dohadzat vsetky funkcie, obsluhy a pomaly sa presuvat s ovladanim a kodenim na to PC. Takto si to vysvetlujem jaGepid napísal:Použiť programátor som hneď vylúčil keďže by som nemal mať PC.
A ako docielim pomocou prepínačov naprogramovenie dajme tomu klasického hello worldu?
PS: videl niekto nieco take uz upajkovane? Ja som nic take ani nevygooglil (teda aspon som si nebol 100% isty, ze je to samostatne programovatelne) mozno toto, sice 8051ka, ale cosi takehoto:
1. HomeMade
2. Profi