Posts filed under 'koodi'

Raspberry Pi 2: hyvät ja huonot uutiset

Lägään tällä hetkellä näiden Raspien kanssa hieman perässä, sillä rupesin vasta testailemaan synttärilahjaksi saamaani 2B-mallia. Jälleen kerran hieman nopeampi kolmonenhan tuli juuri uunista ulos.

Juhlapuheista huolimatta etenkään alkupään Raspeista ei todellakaan ollut työpöytäkäyttöön: muistia oli liian vähän, X:n ja SDL:n kiihdytykset riittämättömiä, ja jo muutenkin hitaan koneen hyydytti viimeistään käyttiksen ajaminen SD-kortilta. Muutaman vuoden aikana ytimiä on tullut kolme lisää, ja kenties vielä tärkeämpänä parannuksena muistin määrä on noussut gigatavuun. Mutta ollaanko vieläkään työpöytäkäyttöön riittävällä tasolla?

Kyllä, ei ja ehkä. Raspi 1:een verrattuna työpöytä pyörii mainiosti, mutta toisaalta hitainkin nykypäivän Intel-pohjainen miniläppäri on edelleen nopeampi. Hitaus ja nopeus ovat pitkälti ohjelmista kiinni: mukana seuraava Web-selain ja LibreOffice ovat aivan käyttökelpoisia, kun taas Java-pohjainen Processing hyytyi varsin ikävästi. Pikaisesti kokeilemani kevyet emulaattorit toimivat sinänsä ok X:n päällä, mutta kiinteän resoluution ja puuttuvan video-overlayn vuoksi niitä ei saanut koko näytölle (resoa voisi toki pudottaa, mutta se on ongelman kiertämistä eikä ratkaisua).

Pahin pullonkaula tuntuu edelleen olevan massamuisti. Siinä missä SSD:istä on tullut päivittäistavaraa isojen koneiden puolella, pikkulaudoissa ollaan edelleen jumissa USB2:n ja muistikorttien maailmassa. Odroideissa nähty eMMC on jonkin verran parempi, mutta jää sittenkin SSD:lle mennen tullen.

Parhaimmillaan Raspit ovat niille erityisesti räätälöityjen softien kanssa: mediatoistimista, emulaattoreista ynnä muista on optimoituja versioita, jotka käyttävät videoskaalaajaa tai OpenGL ES:ää tavanomaisten kirjastojen sijaan. Yllätyin itsekin, kuinka paljon 3D-rauta jaksoi puskea, kun sitä ohjelmoi järkevästi. Ylimääräiset kerrokset, kuten Java ja JavaScript, ovat puolestaan myrkkyä suorituskyvylle.

Monia päivittäisiä asioita voi tehdä jo nykyiselläänkin riittävän sujuvasti, kunhan hyväksyy tietyn ajoittaisen tahmailun. Ainoaksi peeseen korvaajaksi en Raspia edelleenkään laittaisi, enkä usko kolmosenkaan tilannetta merkittävästi muuttavan, varsinkin kun massamuistiväylät eivät ole sen nopeammat. Toisaalta tarkkaan rajatussa yksittäisessä käytössä etenkin tämä uusi Rapsutin voi olla aivan riittävän tehokas ja hinnaltaan kymmenesosa “oikeasta” tietokoneesta. Palataan asiaan taas parin sukupolven päästä.

raspi2

1 comment February 29th, 2016

2015 touhut

Mennyt vuosi jää mieleen etenkin stressin vuoksi: monenlaista velvollisuutta, vaatimusta ja haastetta oli niskassa lähes koko ajan niin töiden, opintojen kuin siviilielämänkin taholta. Pitkään jatkunut synkeä sää tekee loppuvuoden tunnelmista ehkä vieläkin lakonisemmat — toivottavasti 2016 jo hieman helpottaa, tosin tuskin ainakaan ennen kesää. Jälleen siis kootusti touhuja vuoden varrelta:

Skenetykset

Vuosi jäi taas kovin epätuotteliaaksi, vaikka jotain sentään tuli tälläkin saralla näppäiltyä. Paybackeille saatiin aikaiseksi pieni yhden osan MSX-intro Suksimme kuuhun, Assemblyille ei mitään, ja Vammala partyille yhden osan demo sekä ihan virallisestikin julkaistu PETSCII-kuva. Zoot jäivät perhe- ja majoitussyistä harmillisesti väliin, mutta tulevathan ne sieltä taas kahden vuoden päästä.

PETSCII-editori palasi reilun vuoden tauon jälkeen elävien kirjoihin, ja tunkkasin mukaan yhtä sun toista pientä parannusta. Bugikorjausten lisäksi tein myös uusia ominaisuuksia, kuten asetustiedoston ja optimoidumman piirtokoodin. Uskollisia käyttäjiä tuntuu edelleen löytyvän, vaikka suurin PETSCII-huuma jo laantuikin. Zoon tekstigrafiikkakompossa kaikki paitsi yksi tekele olivat edikalla tehtyjä, minkä lisäksi loppuvuodesta Debris työsti useita Star Wars -aiheisia kuvia.

Metaskeneilyn puolella tapahtui sentään enemmän: artikkeli kräkki-introista päätyi ihan merkittävälle foorumille ja väitöskirjakin eteni kymmeniä sivuja. Demoscene Researchiin tippui päivityksiä melko tasaisesti ja mukaan saatiin uusi ylläpitäjäkin. Assemblyillä päädyin Ylen haastateltavaksi demojen tiimoilta (pitkät jäykät horinat leikattiin hienosti luontevan näköiseksi pikku pätkäksi).

Kirjoitushommia

Kaikenlainen kirjoittelu vei suuren osan vuoden ajasta. Väitöskirjan raakatekstistä lienee n. 2/3 valmiina, joten tänä vuonna lienee ihan realistista saada se kaavittua kasaan ja sitä myötä lopultakin pois päiväjärjestyksestä. Julki tuli seuraavia:

Tavalla tai toisella eteeni päätyi myös muutama arvioitava artikkeli, ja kun kutsuivat Puolaankin keynote-puhujaksi, niin akateemisten luottamustehtävien osalta 2015 oli oikein huippuvuosi. Vastapainoksi olin kylläkin joutua kilometritehtaalle, kun määräaikainen lehtoraatti loppui ja jouduin hakemaan paikkaani uudestaan.

Virittelyjä

Kaapit ovat sen verran täynnä jo koneenraatoja, että tänä vuonna ei tullut juuri uusia hankintoja — jouluksi sentään Mikolta paketissa oleva Canon X-07. Säätöhommat keskittyivät lähinnä tuoreempaan rautaan ja Linuxiin: Minttiä meni useampaan koneeseen, Mac Minit saivat uutta tekniikkaa sisuksiinsa ja Shuttle-raato palasi elävien kirjoihin.

Vuoden avainsana on Linuxin lisäksi ollut SSD: kaikki vähänkään modernimmat koneet on nyt varustettu sellaisella. Ja miksipä ei, kun nopeusero on parhaimmillaan moninkertainen. Erityisesti Linux tuntuu hyötyvän SSD:stä, sillä ohjelmien käynnistysajat ovat pudonneet sekuntiin pariin, eikä koneen käynnistymistäkään tarvi pitkään odotella. Toki Mäkitkin nopeutuvat, mutta eivät aivan samassa suhteessa.

Eläviä kuvia

Kuten toissa vuonnakin, elokuvia tuli katseltua reippaasti. Mitään tarkkaa laskuria ei ole, mutta lukema lienee pitkällä kahdensadan päällä. Länkkärien osalta pidin oikein kirjaa: 160 aiemmin näkemätöntä, minkä lisäksi jonkin verran klassikkojen uudelleenkatseluja. DVD-hylly tursuaa jo siinä määrin, että pitää ruveta keksimään jotain sijoitusratkaisua tyyliin imaget talteen ja levyt varastoon. Tai vaihtoehtoisesti levyt ja kannet talteen ja kuoret kuuseen.

Ihan tätä tahtia tuskin jatkuu enää 2016, sillä länkkärien osalta merkittävimmät teokset on jo nähty, ja luvassa on enää valtaisaa bulkin kaapimista, harvakseltaan ilmestyviä uusia leffoja sekä HD-julkaisuja klassikoista. Länkkärimaratoneja pitää jatkaa edelleen niiden viihdearvon takia: menneenä vuotena oli kaksi virallista ja yksi epämuodollisempi sessio.

2 comments January 1st, 2016

Intel MEI + Linux + fan control

Everything related to meifand was moved to its separate project page: http://www.kameli.net/marq/?page_id=4263

Add comment December 12th, 2015

Nyt hakkeroimaan!

Nähtyäni tämän iski lievä tuskastuminen hakkeroinnin nykyiseen olemukseen. Kun tämä hakkerointi on kerran niin hienoa ja coolia ja uskottavaa ja innovaatiota ja täynnä bisnespotentiaalia, niin eiköhän pistetä oikein työryhmän voimin hakkerointitapahtuma pystyyn. Sponsoreita, bisnesenkeleitä, alustuksia ja tervetuliaissanat Tekesin edustajalta. Ja lehdistö tietysti paikalle! Ihanaa, että meillä Suomessakin on lopulta tällaista hakkeripöhinää.

Ehkäpä näkemykseni ovat romantisoituja ja aikansa eläneitä, mutta todennäköisemmin uskon niiden aitojen hackien syntyvän, kun asialle omistautunut jamppa koodaa ja kolvaa kolmatta päivää putkeen kalsareissaan yksiönsä tai opiskelijasolunsa hämärässä. Hakkeroinnin kotouttaminen ja laitostuminen palvelevat vesittyneisyydessään tuskin edes liike-elämän tarpeita, mutta onhan julkisuudellakin oma arvonsa – tosin tuskin niille itse hakkereille.

edit: selvennyksenä vielä, että minun puolestani on ihan ok, jos joku haluaa järjestää IT-messut. Hakkeroinnin valjastaminen kravattipantterien keppihevoseksi ilmentää kuitenkin sekä tietämättömyyttä että epäkunnioitusta hakkerikulttuuria kohtaan.

Add comment November 6th, 2015

Skrolli 1/2015

Skrollin tämän vuoden ensimmäinen numero ilmestyi juuri, ja mukana on taas omaakin tekstiäni: Maisemia Perlin-kohinalla. Kuten nimikin vihjaa, artikkelissa tehdään Processingilla pieni reaaliaikainen 3D-maasto käyttäen Perlin-kohinaa muodon laskentaan. Teron piirtämä takakannen PETSCII-kuva on sekin tutulla edikalla tehty.

grabbi spock

Add comment March 18th, 2015

PETSCII-artsua

Mattis Folkestad ilmoitti juuri, että hänen tekemänsä retrohenkinen PETSCII-muotokuva Lookin’ on esillä Emptymixupframe II -näyttelyssä Oslossa. Tässähän tulee koettua suorastaan isällistä ylpeyttä, sillä työ on tehty koodaamallani PETSCII-edikalla. Alla näpsy paikan päältä:

emptymixupframe

edit: Lisää vaan, tämäkin on tehty edikalla.

Add comment October 29th, 2014

Erään ryhmän retrospektiivi

Vanhat Fit-demot alkoivat muuttua hiljalleen vaikeasti ajettaviksi – Mäkillä lähes mahdottomiksi. Kymmenen vuotta sitten tietotekninen kenttä näytti kovin erilaiselta: esimerkiksi Mäkkäreissä oli vielä PPC-prosessorit. Rosettan kadottua Mac OS 10.7:n myötä ei vanhoja produja saanut enää helposti näytille, kun en jaksanut ruveta kääntämään ja paketoimaan kaikkia yksitellen jälleen kerran. Raspberry Pi:n myötä iski taas pieni porttausinto pari vuotta sitten, mutta kaavailtu demokokoelma jäi silloinkin tekemättä. Nyt sain lopulta aikaan, kun Manukin teki menuun grafiikat:

FitForAutopsy

Raspi-versio on vielä tekemättä, mutta Linuxilla ja etenkin OS X:llä saa nyt nuo kymmenen tekelettä ajettua. Vanhaan malliin sorsat ovat taas jaossa, tällä erää SVN:ssä: svn://www.kameli.net/marq/autopsy. Jos intoa ja aikaa sattuu riittämään, niin olisihan tuohon lisättävää. Etenkin 4k-introt olisi kiva saada kaikki. Anataus 5–7:n sorsat ovat hukassa, joten ne jäävät aika väistämättä sarjasta puuttumaan. Niin ja sitten vielä se linkki.

edit: Oli jäänyt libbejä pois OS X -versiosta. Nyt pitäisi olla toimivampi.

Add comment October 19th, 2014

Panana 1.0

Panana 1.0, the first version of the Arduino-based PC -> Panasonic JR-200 transfer cable is now finished and published. You’ll find all the necessary bits like software and some instructions on the Panasonic page, as usual. Here’s the schematic and the final cased contraption:

panana-fixed lodju

There would be sooo much to add, like two-way transfer, support for BASIC files, a card reader and extra RAM, but let’s see if I ever get to that. At the moment the kludge already supports what I most want to do with it: test my own software. The transfer speed increased due to some final touches all the way from 5 kcps to 8 kcps, mostly because of using phi2s instead of phi2 for sync. Surely there’s room for improvement – next I’ll probably try halting the CPU when updating the latch – but as the speed is already more than 30x compared to the cassette port, there shouldn’t be too much to complain about. Thanks to Tero for his help and comments, too!

edit: Fixed the pinout of the expansion port.

Add comment September 25th, 2014

One more tool

For the ever-improving Panasonic JR-200 toolkit: one more little piece of code. It’s called cjrinfo and shows pretty much all the useful information concerning a CJR file, such as the baudrate, filename, block addresses, lengths and so on. Grab and compile: cjrinfo.c.

Add comment September 14th, 2014

Kohti siirtopiuhaa

Eräs pahimpia Panasonic JR-200 -koodailun esteitä on kunnollisen emulaattorin tai nopean siirtoratkaisun puute. Virtual Panasonic JR ei yksinkertaisesti riitä laitteistonläheiseen ohjelmointiin ja on muutenkin ajan hampaan pahasti kalvama Windows only -tekele. Kasettiportin kautta voi pöristellä softaa helposti sisään aidolle koneelle äänikortista, mutta 2400 bps käy tuskaisen hitaaksi vähänkin isommilla tiedostoilla, minkä lisäksi joka välissä pitää olla näppäilemässä latauskomentoja. Eli hakusessa olisi jotain “resetoi kone ja se lataa koodin” -tyylistä ratkaisua. Mitään sellaistahan ei tietenkään valmiina ole noin marginaaliselle koneelle, joten lähdimme Teron kanssa kyhäämään omaa siirtopiuhaa.

Elektroniikan vähäinen tuntemus asetti tiukat puitteet sille, kuinka valmiista komponenteista kikkale pitäisi tehdä ja kuinka mutkikkaaseen ratkaisuun rahkeet riittäisivät. Arduino oli tuttuna laitteena luonteva lähtökohta rajoituksistaan huolimatta, ja loput palaset koottiin normaaleista logiikkapiireistä: halpa EPROM, salpapiiri (latch) dataväylälle ja perinteinen GAL osoiteväylää dekoodaamaan. Sekaan vielä fiilispohjalta heitetty konkka kohinaa vaimentamaan 🙂 Olemattoman dokumentaation takia Panan laajennusväylän pinnitkin piti ensin selvittää omatoimisesti yleismittarilla – onneksi kaikki tarpeelliset sentään löytyivät. Sivussa piti opetella käyttämään eprommeria ja tutustua GAL-ohjelmointiin, mutta niistäkin selvittiin. Eprommerin käyttämiä jed-tiedostoja sai tehtyä eqn2jed-ohjelmalla. Tältä näyttää kahden väyläosoitteen dekooderi ($d800 ja $8000 viisi ylintä bittiä):

  CHIP GALLI 16V8
  i0=1 phi2=2 rw=3 vma=4 a11=5 a12=6 a13=7 a14=8 a15=9 gnd=10
  i1=11 o7=12 o6=13 o5=14 o4=15 o3=16 o2=17 lat=18 rom=19 vcc=20

  EQUATIONS
  /lat = !vma * !rw * a15 * !a14 * !a13 * !a12 * !a11 * !phi2
  /rom = !vma * !rw * a15 * a14 * !a13 * a12 * a11 * !phi2

Ohjelmistopuolellakin riitti haasteita, kun kolme tietokonetta piti saada toimimaan keskenään synkronoidusti. PC-päässä istuu lähetyskikkare, joka lähinnä lukee tiedoston levyltä ja lähettää sen Arduinolle sopivan verkkaiseen tahtiin. Arduinon sarjapuskuri vuotaa helposti yli (128 tavua kaikkiaan, kaksisuuntaisella lähetyksellä ilmeisesti 64/64), joten välillä pitää jäädä odottelemaan kuittausta. Suurin ongelma oli Artturin ja peeseen saaminen aluksi synkkaan, jottei tavuja menisi hukkaan puolin eikä toisin. 115200 bps sarjasiirto toimi lopulta varsin luotettavasti eikä ole edes nopeudeltaan pullonkaula. Sekä Linuxin että Arduinon pitäisi toimia suuremmillakin nopeuksilla: pikku kokeilulla myös 230400 meni läpi, mutta kun en ollut varma Mäkin tuesta, niin jätin nopeuskokeilut sikseen.

Arduinon ja Panasonicin välinen siirto vaati enemmän jumppaamista. Vaikka siirto meni varsin lujaa läpi suurimman osan ajasta triviaalillakin latchin rämpytyksellä, niin välillä tavuja kuitenkin putoili. Toimiva ratkaisu perustui lopulta siihen, että kun pana lukee siirrossa käytettävää muistiosoitetta, niin se liipaisee lopettaessaan Artturilta keskeytyksen, jossa liipaistaan salpapiiriin uusi arvo. Näin varmistui se, ettei liipaisu tapahdu kesken osoitteen lukemisen. Nopeus putosi samalla puoleen, mutta tärkeämpää oli saada tavut perille. Optimoinnin jälkeen todellinen siirtonopeus asettui n. viiteen kilotavuun sekunnissa. Silläkin täyttyy jo koko muisti seitsemässä sekunnissa pakkaamattomalla datalla.

Aiemmissa siirtopiuhoissani olin käyttänyt yksinkertaista alternating bit -toteutusta, jossa vaikkapa kahdesta pinnistä toinen on kello ja toinen itse data. Nyt oli kuitenkin käytössä juhlavat kahdeksan bittiä kerralla, ja mieli teki siirtää täysiä tavuja kerralla ilman bittien shiftaamista. Kotipolttoisena ratkaisuna tein niin, että peräkkäiset tavut muuttuvat joka kerta, jolloin Pana tunnistaa seuraavan tavun pelkästä arvon muutoksesta ilman erillistä synkronointia. Pitkien nollasarjojen ym. tehokkaan siirron vuoksi tavuihin sotketaan mukaan “kantoaalto”, joka miinustetaan vastaanottopäässä. Jokunen harva tilanne, jossa peräkkäiset tavut ovat sittenkin samat, hoidetaan erillisellä escape-merkillä.

viritys pannaani1 vers_5_9_2014

Nyt on jo kotelokin ja kaikki. Oikealla Teron PETSCII:nä piirtämä piirikaavio, josta näkyvät piirit ja niiden väliset kytkennät tarkemmin. Kehityskohteita olisi tietysti lukuisia:

  • Pienemmällä rommilla säästyisi tilaa levyltä: nyt on käytössä kokonaiset 256 tavua 128 kilon piiriltä. Mutta kun niitä sattui olemaan…
  • Arduino Nanon voisi korvata ATMegalla, kunhan vaan saisi USB-liikenteen ja virransyötön jotenkin hoidettua. Toinen vaihtoehto olisi halvempi Arduino Micro.
  • Sekaan roiskaistu yksinäinen konkka ei välttämättä tee mitään hyödyllistä: pitäisi tutustua joskus tarkemmin, mihin ja millaisia niitä oikeasti tarvitaan
  • Siirtosofta voisi palata BASIC-tulkkiin ja ylipäänsä tehdä vähän enemmänkin asioita
  • Koko härpättimelle päälle/pois-kytkin
  • Resettinappi, jos mahdollista laajennusportin kautta
  • Oikean kunnon piirilevyn teettämällä saisi tilaa säästettyä huomattavasti samoin kuin hyppylankasotkua

Puutteineenkin Panana ratkaisee pääongelman eli nopean koodin siirtämisen peeseeltä Panasonicille. Jatkokehityksen toppasi toistaiseksi se, että eBayltä haalimani Kiina-Nanot osoittautuivat viallisiksi (kloonatut FTDI-piirit eivät osaa kaksisuuntaista liikennettä). Kunhan saan toimivampia, niin julkaisen koko projektin sitten virallisestikin Panasonic-sivulla.

Add comment September 6th, 2014

Next Posts Previous Posts


Kommenttien virta

Aiheet