Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Mahdollisuus luoda emulaattori raudalle, jolle sellaista ei ole?

Sivun loppuun

mavavilj [23.01.2025 16:48:31]

#

Mahdollisuus luoda emulaattori raudalle, jolle sellaista ei ole?

Esim. SoC:ille tai DSP:lle?

Pitääkö raudasta tietää muuta kuin mikä prosessori siinä on? Ja prosessorin käskykanta?

Tarkoitus olisi siis pystyä ajamaan raudalle tehtyjä ohjelmia emulaattorilla, joka pyörii eri raudalla.

Grez [23.01.2025 21:45:45]

#

Emulointi vaatii yleensä selvästi tehokkaampaa rautaa kuin alkuperäinen. Ehkä järkevämpää, pienitöisempää ja vähemmän tehoa hukkaavaa olisi tehdä käännin, joka kääntää sen alkuperäisen koodin kohteelle.

mpni [24.01.2025 00:29:29]

#

Eikös noille DSP:lle ollut jotkut manuaalit olemassa? Niistä kai näkee, mitä voi tehdä?

mavavilj [24.01.2025 11:32:47]

#

Kyselin toisaalta, niin oltiin ihan hyshys, kun jonkun mielestä tässä muka kosketaan jonkun IP:ä.

Mutta DSP:eille saa usein kuitenkin SDK:n ja jossain määrin emulaattorit ovat laillisia. ROM/Firmware taas vaatii laitteen omistamisen.

jalski [24.01.2025 11:45:03]

#

Emulaatio tai tuĺkkaaminen ei ole mikään uusi keksintö ja muun muassa Applella on Rosetta. VLIW-arkkitehtuuriin perustava venäläinen Elbrus prosessorikin kykenee ajamaan sille ei natiiveja x86 ja x86-64 binäärejä.

mavavilj [24.01.2025 11:56:36]

#

Mutta mistä kannattaisi lähteä liikkeelle, jos haluaa ymmärtää, miten ja mitä voi emuloida?

jalski [24.01.2025 13:54:09]

#

mavavilj kirjoitti:

Mutta mistä kannattaisi lähteä liikkeelle, jos haluaa ymmärtää, miten ja mitä voi emuloida?

Ehkä CHIP-8 emulaattori voisi olla mukava tapa aloittaa ja onhan se palkitsevaa saada pelata jotain peliä omalla tuotoksellaan...

Metabolix [24.01.2025 17:21:12]

#

Pitää tietää kaikki ne asiat, joita aikoo emuloida. Riippuu tilanteesta, mitä kaikkea. Käskykanta, rekisterit, muisti, liitännät, oheislaitteet, mahdollisesti myös näiden kaikkien ajankäyttö ja kellon emulointi, jos emuloitava ohjelma on näiden suhteen kovin herkkä (esim. vanhat pelit, joissa sleep on toteutettu silmukalla, joka juuri tietyllä laitteella vie tietyn ajan).

Helppo lähtökohta voisi olla luokka, joka kuvaa emuloitavaa laitetta. Laita luokan jäseniksi kaikki laitteen rekisterit järkevillä alkuarvoilla sekä muistia kuvaava taulukko, johon lataat valmiiksi jonkin ohjelman. Lähde sitten toteuttamaan ominaisuuksia niin, että kun emulaattoria pyydetään etenemään yksi kellojakso tai käsky, emulaattori osaa lukea käskyn muistista, purkaa sen ja toteuttaa sen. Voit lisätä uusia käskyjä aluksi sitä mukaa, kuin ohjelmasi tarvitsee niitä.

mavavilj [24.01.2025 20:20:42]

#

Luin kuitenkin, että monesti näissä käytetään disassembler:ia ja piirilevyn tulkintaa.

Täältä löytyi joku NES-emulaattorin tutoriaali:

https://medium.com/@guilospanck/the-journey-of-writing-a-nes-emulator-part-i-the-cpu-6e83b50baa37

Mikäli emuloitavasta raudasta ei ole dokumentaatiota, niin voisi kuitenkin melkein sanoa, että on paljon helpompaa koettaa vain koodata samankaltaisia ohjelmia ihan eri kirjastoilla kuin yrittää mallintaa itse rauta. Ohjelmat, firmware:t ja ROM:t ovat kuitenkin suojattuja, joten niitä ei kuitenkaan saa jakaa, joten epävirallisen emulaattorin hyöty on hieman kyseenalainen eikä ole sinällään mitään takuita, että sellaisen tekeminen onnistuu.

mpni [24.01.2025 21:34:08]

#

mavavilj kirjoitti:

Mikäli emuloitavasta raudasta ei ole dokumentaatiota, niin voisi kuitenkin melkein sanoa, että on paljon helpompaa koettaa vain koodata samankaltaisia ohjelmia ihan eri kirjastoilla kuin yrittää mallintaa itse rauta.

Joo ja vaikka olisikon dokumentaatio, niin ne ei ole mitään ohuita kirjoja ne. Toisaalta, kun sen suon kerran perkkaa läpi, niin kyllä siinä oppii aika paljon niin raudasta, kuin rekistereistä, laskennan kömpelyydestä, jne.

Grez [24.01.2025 21:40:41]

#

Niin tuossa on perus DSP:n datalehti. https://www.ti.com/lit/ds/symlink/tms320c6678.pdf?ts=1737677390581&ref_url=https%3A%2F%2Fwww.ti.com%2Fproduct%2FTMS320C6678

248 sivua, liitedokumentteineen (esim. käskykanta 1 013 sivua) luokkaa 10 000 sivua. Kauankohan kestäisi tehdä emulaattori, joka toteuttaisi sen kaiken?

Missä tilanteessa olisi järkevää tehdä kattava emulaattori?


Sivun alkuun

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta