Johdanto laiteläheiseen C-ohjelmointiin

Samankaltaiset tiedostot
Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Opastusta ohjelmointiin, C-kieleen ja mikro-ohjaimiin. Se kaikki se tulee tässä kirjassa.

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

GNU/Linux kotikäytössä

Ohjelmointi 1. Kumppanit

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Laiteläheinen C-kieli, yleistä

LINUX LINUX. Viisi hyvää syytä käyttää Linuxia MUISTA! GNU Free Documentation License

Laiteläheinen C-kieli osa 1 pva

Mikro-ohjain µc harjoitukset - yleisohje

Demo 13. Aihe: Linux. Opettaja: Antti Ekonoja. Tekijä: Heini Puuska

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot

Alatunniste

Oletus Sinulla on Raspin Geany-IDE konfiguroituna toimimaan SSH-etäkäytössä.

1. NetBeans-ohjelman asennus ja käyttöönotto pva

Koodaamme uutta todellisuutta FM Maarit Savolainen

4. Lausekielinen ohjelmointi 4.1

Ohjelmointi 1 / syksy /20: IDE

Älypuhelimet. Sisällysluettelo

Tähtitieteen käytännön menetelmiä Kevät 2009

VALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Windows

Savonian suomen opinnot

Alkukartoitus Opiskeluvalmiudet

Tietotekniikan koulutus Savonlinnassa

Teknologiateollisuus = Mahdollisuuksien Maailma! Miten kerromme sen nuorille, heidän opettajilleen ja vanhemmilleen?

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Linux

TTY Pori. Tieteen ja tutkimuksen kohtaamispaikka

VALO ja tietoyhteiskunnan kehitysvaihtoehdot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Tabletit opetuskäytössä - työpaja

Sisältö. Unixin syntymätarina. Unixin tekniikka. Unix tänä päivänä. Avaruuspelistä moderniksi käyttöjärjestelmäksi Vuodet

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

Pk-yritysbarometri, syksy 2018

Antti Ekonoja

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

TI10 Joni Hämäläinen & Jan Lampikari

Luento 1 Tietokonejärjestelmän rakenne

Avoimen lähdekoodin kehitysmallit

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Tulevaisuuden älykkäät oppimisympäristöt LessonApp - nopea kokeilu Tampereen ammattikorkeakoulussa

ENTER ry N Ziessler 12/2016

DAISY. Esteetöntä julkaisua

Edtech kestää aikaa!

Unix-perusteet. Unix/Linux-käyttöjärjestelmä ja sen ominaisuudet

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Suoritustavat: Laboratoriotöitä 2.-3.periodi. Luennot 2h, Laboratorityöt 4h, itsenäinen työskentely 124 h. Yhteensä 130 h.

Pk-yritysbarometri, syksy 2018

Ulkoiset mediakortit. Käyttöopas

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

C++ Ohjelmoijan käsikirja. Johdanto

Ohjelmoinnin perusteet Y Python

Minun elämäni. Kirjoita 10 lausetta sinun elämästäsi. Voit laittaa myös kuvan. :) SANNA JANUARY 11, 2017

Ja sinut nähdään uudessa valossa.

Ulkoiset mediakortit. Asiakirjan osanumero: Tässä oppaassa kerrotaan ulkoisten tallennusvälinekorttien käytöstä.

TieVie asiantuntijakoulutus Teknologinen muutos -verkkojakso

Avoimen lähdekoodin vaarat

Erityisen hyvää. Ideoita ammatilliseen erityisopetukseen

KIELENOPPIJOITA TIEDONHANKINTA KESKIÖSSÄ KUUNTELEMALLA OPPIJA (AUDITIIVINEN) KIELEN KÄYTTÖ, VUOROVAIKUTUS NÄKEMÄLLÄ

Arto Luukkainen

Ulkoiset mediakortit. Käyttöopas

NELJÄ HELPPOA TAPAA TEHDÄ TYÖNTEKIJÖIDEN TYÖSTÄ JOUSTAVAMPAA

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

Kieli- ja viestintäopinnot ja valmentavat kieliopinnot Karelia ammattikorkeakoulussa Merja Öhman Kielten lehtori Karelia ammattikorkeakoulu

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Ohjelmointia & monilukutaitoa

Antti Ekonoja

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

PROJEKTISUUNNITELMA. FotMana17

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Kymenlaakson Ammattikorkeakoulu

Keravan kaupungin lukiokoulutuksen kieliesite

Kieliohjelma Atalan koulussa

Turvallisuus kehittyy joko johtajuuden tai kriisin kautta

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

30 Opetussuunnitelma OSAAMISEN ARVIOINTI ARVIOINNIN KOHTEET JA AMMATTITAITOVAATIMUKSET OSAAMISEN HANKKIMINEN. järjestelmätyöt: työskentely

ICT-info opiskelijoille

Teknologiateollisuuden kummiyritystoiminta

TM:n pikakokeessa Yamaha WXAD-10: uusi elämä vanhoille hifilaitteille

WINE API ja Virtualisointiohjelmistot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Innovointiprosessi. Lili Aunimo Lili Aunimo

Pk-yritysbarometri, syksy 2019

Omia appeja AppInventorilla. Jenna Tuominen Resurssikeskus Linkki, LumA, HY

IT- palvelua käyttäjille - ei tekniikkaa tietohallinnolle. Jari Taimi Toimitusjohtaja SataCom Oy

Pk-yritysbarometri, syksy 2019

Ulkoiset laitteet. Asiakirjan osanumero: Tässä oppaassa kerrotaan lisävarusteena saatavien ulkoisten laitteiden käytöstä.

AVOIMEN TUOTTEEN HALLINTAMALLIT. Kunnassa toteutettujen tietojärjestelmien uudelleenkäyttö. Yhteentoimivuutta avoimesti

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

Pk-yritysbarometri, syksy 2019

Transkriptio:

Johdanto laiteläheiseen C-ohjelmointiin PUNOMO NETWORKS OY 26.7.2016 pva Opiskelemalla ohjelmoimaan teollista internettiä, sen sulautettuja järjestelmiä, Open Source-työkaluilla GNU/Linux-ympäristössä, hankkii samalla valmiudet mielenkiintoiseen ammattilaisuuteen. Unix Unixin historia alkaa 1969 Bellin laboratoriossa USAssa. Bell Labs on puhelinyhtiö AT&T:n organisaatio, jossa on kehitetty mm. transistori, laser, Unixkäyttöjärjestelmä ja C-ohjelmointikieli. Siitä tuli yrityskaupan myötä osa Nokiaa (kevät 2015). Ken Thompson kirjoitti assembly-kielellä Unixin ensimmäisen version. Yhdessä Dennis Ritchien kanssa he suunnittelivat minkälaisia laitteita Unix-koneeseen tulisi liittää ja minkälaisia ohjelmaajureita ne tarvitsevat. Seuraavina vuosina he kehittelivät työkaluksi käyttöjärjestelmän koodaamista helpottamaan C-kielen. Ohjelma annettiin yliopistojen käyttöön ilmaiseksi ja ne puolestaan lähtivät kehittämään ideaa eteenpäin. Tässä yksi syy miksi Unixeja on useita eri versioita vielä tänäänkin. AT&T huomasi pian, että käyttöjärjestelmän myynnillä voisi tehdä rahaa. Valitettavasti kallis hinta rajoitti käytön vain suuryrityksiin ja yliopistoihin. Mutta eihän tuohon aikaan muilla tietokoneita ollutkaan. Sarana Tuli vuosi 1971 ja kaikki muuttui. Tuolloin vielä hyvin pieni Intel-yhtiö kehitti mikroprosessorin. Siitä alkoi tietoyhteiskunnan kehitys. Syntyivät mm. IBM-PC, Apple, ARM, Microsoft... GNU Samoihin aikoihin MITin (Massachusetts Institute of Techology, USA) yliopistossa työskenteli nuorukainen nimeltä Richard Stallman. Hän oli opiskeluaikoinaan oppinut, että tietokoneohjelmat ovat ilmaisia ja sille aatteelle hän pyhitti koko loppuelämänsä. Ajatuksensa tueksi hän perusti 1983 GNU-projektin. (GNU, rekursiivinen akronyymi GNU s Not Unix, suom. GNU ei ole Unix). Projektin kunnianhimoinen tavoite oli kehittää ilmainen Unixin korvaavaa käyttöjärjestelmä. Työhön tarvittiin: C-kääntäjä ja muita työkaluohjelmia teksti-editori, jolla kirjoitetaan lähdekoodi käyttöjärjestelmän ydin eli kernel käyttöjärjestelmän tiedostojärjestelmä ohjelmien ja tietojen tallennukseen 1

Vuonna 1990 kaikki muu oli valmiina, mutta kernel puuttui. Sen työstö aloitettiin, mutta valmista vaan ei tullut. Samoihin aikoihin Helsingin yliopistossa opiskeli tietotekniikkaa nuorukainen nimeltä Linus Torvalds. Käyttöjärjestelmän rakennetta ja toimintaa opiskeltiin professori Andrew S.Tanenbaumin kirjoittamalla Unixin minikloonilla Minix. Minixin ylivoimaisena etuna opiskelussa oli se, että ohjelma toimi IBM-PC-koneissa ja sen klooneissa. GNU/Linux Linus Torvalds kehitti oman version Unix-kernelistä ja ohjelman alkio pantiin ilmaiseen jakeluun Helsingin yliopiston palvelimelle nimellä Linux. Nimen keksi työkaveri. Internetin myötävaikutuksella mukaan kehitystyöhön tulivat hakkeri-gurujen lisäksi kaikki suurimmat globaalit IT-yritykset. Kun homma vaan laajeni, piti kehitystyötä koordinoimaan perustaa Linux Foundation-säätiö vuonna 2000 ja vetovastuuseen kutsuttiin Suomesta ilmiön alkuunpanija. Hankkeen rahoituksesta vastaavat säätiön jäsenet. Eniten (500'000$) maksavat ns. platinumjäsenyyden hankkineet: Fujitsu, IBM, Intel, NEC, Oracle, Qualcomm, Samsung ja HP-Hewlett Packard, Huawei. Vuodesta 2005 lähtien Linuxin tekemiseen on osallistunut yli 8000 koodaajaa. Heille maksoi palkkaa yli 800 yritystä, joukossa mm. Microsoft. Että semmosia "harrastelijoita". Tällähetkellä (elokuu 2016) aktiivisia kehittäjiä on noin 1600. Neljä viidestä työskentelee jossakin yrityksessä eli saa työstään palkkaa. 4.7-ytimeen koodia tuli 221 eri yrityksestä. Uusimmista muutoksista 12,9 prosenttia on tullut Inteliltä. (Linux Foundation). Voiko ilmaisella Linuxilla tehdä rahaa? Amerikkalainen Marc Ewing käytti punaista hattua opiskellessaan yliopistossa tietotekniikkaa. Opintojen päätyttyä 1990-luvun alussa hän perusti yhdessä Bob Youngin kanssa ohjelmistoyrityksen ja antoivat sille nimeksi Red Hat. He tekivät oman Linux-distron (jakeluversion) ja alkoivat jakaa sitä, ilmaiseksi. Vuonna 2011 firman liikevaihto ylitti 1'000'000'000 dollaria, siis tuhat miljoonaa taalaa, siis miljardi taalaa. Tänä vuonna, 2016, ylittyy kaksi miljardia! 2

Raspberry Pi Englantilaiset olivat huolissaan kun kukaan nuori ei harrastanut enää ohjelmointia, kaikki vaan pelailivat. Siksi Cambridgen yliopiston yhteyteen perustettiin säätiö joka alkoi suunnitella pientä ja halpaa korttitietokonetta jonka avulla peruskouluikäiset voisivat aloittaa ohjelmoinnnin opiskelun. Yhteistyön tuloksena syntyi Raspberry Pi, joka on pankkikortin kokoinen ihan oikea tietokone. Kun ensimmäiset kortit tilattiin Kiinasta 2011, niin projektin vetäjät arvelivat, jos edes muutama tuhat konetta saataisiin opetuskäyttöön, niin kaikki olisi OK. Toukokuussa 2016 RaspberryPi-tietokoneita on myyty jo yli 8 miljooonaa kappaletta. Opiskelun lisäksi sitä käytetään mitä ihmeellisimmissä sovelluksissa kautta maapallon. Oheislaitteista on noussut uusi teollisuuden ala. Osaajat tekevät omiaan. Raspissa toimii siis ihan oikea GNU/Linux-käyttöjärjestelmä, se vaan asennetaan kiintolevyn sijasta SD-muistikortille. Tekniikkaa edustaa aivoina toimiva ARM mikro-ohjain (sama jota käytetään kännyköissä), pari USB-liitintä, RJ45-nettiliitin, kameraliitäntä, HDMI-video- ja äänilähdöt ja vielä 26/40-pinninen Input/Output-liitäntä ulkoisten laitteiden liittämiseen (siksi soveltuu mainiosti elektroniikan opiskeluun). Jopa graafinen käyttöliityntä, GUI, toimii. Parasta on kortin ympärille kasvanut maailmanlaajuinen yhteisö joka luo opiskeluun materiaalia ja laiteideoita kiihtyvällä vauhdilla. Osa on vanhojen Linux-konkarien kehittämää, osa tulee yliopistomaailmasta. Ohjelmointi Tärkeää on ymmärtää heti aluksi, että ohjelmoinnin oppiminen on eri asia, kuin ohjelmointikielen oppiminen. Ohjelmointitaito ei riipu kielestä. Se on taito ymmärtää miten yksinkertaisia, mutta selkeästi määriteltyjä käskyjä yhdistämällä tehdään (joskus hyvinkin) monimutkaisia asioita. Ohjelmointitaito kehittyy vasta kokemuksen ja kokeneitten myötävaikutuksella. Ohjelmointikielen oppiminen on helpompaa. Ohjelmointikieli on väline jolla ihminen pystyy kertomaan tietokoneelle, mitä sen pitäisi tehdä. C-ohjelmointikieli Sulautetun järjestelmän ohjelman tekeminen alkaa lähdekoodin kirjoittamisella. Puhtaan konekoodin (se jota mikroprosessori ymmärtää) kirjoittaminen on kovin työlästä. Erilaisilla korkean tason ohjelmointikielillä se sujuu paljon helpommin. Näillä kielillä kirjoitetut koodit on muunnettava CPU:n ymmärtämään muotoon konekieleksi joko kääntäjä- tai tulkki-ohjelmilla. C-kieli kehitettiin aikoinaan Unix-käyttöjärjestelmän yhteydessä. Se on edelleen laajalti käytössä erityisesti käyttöjärjestelmien koodauksessa ja laiteläheisessä ohjelmoinnissa. C-kieli kun on ihmisläheinen, käskyt muistuttavat englannin kieltä ja toisaalta laiteläheinen, kielellä päästään operoimaan bittisasolla. Nyt kun kaikki haluavat laittaa koneet ja muut vempaimet internettiin, GNU/Linuxin ja C-kielen merkitys kasvaa entisestään. Ohjelmoinnin opiskeluun ensimmäisenä kielenä C-kieli soveltuu Python ohella aivan hyvin. Molempi parempi. 3

Mitä on IoT eli Teollinen Internet eli Internet of Things Netti jossa laitteet vaihtavat tietoja keskenään https://fi.wikipedia.org/wiki/teollinen_internet lainaus Teollisella internetillä (The Internet of Things, lyhyemmin IoT) tarkoitetaan internet-verkon laajentumista laitteisiin ja koneisiin, joita voidaan ohjata, mitata ja sensoroida internet verkon yli. Teollisessa internetissä on kyse fyysisistä laitteista, jotka pystyvät aistimaan ympäristöään ja viestimään tai toimimaan aistimansa perusteella älykkäästi. Tähän tarvitaan antureita, ohjelmistoja sekä tietoliikenneyhteys, jolloin sensorit, koneet, prosessit ja palvelut tuottavat jatkuvasti tietoa, jota jalostamalla voidaan mm. ennakoida ja automatisoida työvaiheita. Sulautettu järjestelmä Teollinen internet tarkoittaa sulautettujen järjestelmien yhdistämistä internettiin ja niistä saatavan tiedon hyödyntämistä liiketoiminnassa. Tietokone ja ohjelmistot ovat ikäänkuin upotettu laitteen sisään antamaan lisäominaisuuksia. Sulautettujen järjestelmien merkitys arkielämässämme kasvaa päivä päivältä, vaikka aina emme sitä itse edes huomaa. Kuka tulee ajatelleeksi tv:n kanavia vaihtaessaan, rahaa pankkiautomaatista nostaessaan tai autolla ajaessaan, että samalla käyttää tietokonetta. Oikeastaan useaa mikrotietokonetta. Sulautettu järjestelmä on reaktiivinen, ts. se odottelee jotain tapahtuvan. Kun tapahtuma on havaittu, esim. lämpötila on tietyllä tasolla, astiat pesty, ikkuna/ovi on auki/kiinni tms., ryhdytään töihin. Mitä et tarvitse Et tarvitse laajoja tietoja tietokoneista etkä ohjelmoinnista, saati sulautetuista järjestelmistä. Sinun ei tarvitse olla sähkö- tai elektroniikkaekspertti. Opiskellaan elektroniikkaa ja ohjelmointia käsi kädessä, molemmat opinnot tukevat toisiaan. Mitä tarvitset? Kiinnostusta, innostusta, motivaatiota. Joka kasvaa kunhan, alkuvalmistelujen jälkeen, varsinainen koodin kirjoittaminen alkaa. Tottakai tarvitset opastusta elektroniikkaan, ohjelmointiin ja mikroohjaimiin, se kaikki tulee tässä. PC ja sen käyttötaitoa Sinulta jo löytyykin, muuten et lukisi tätä. PC voi olla varsin vaatimatonkin, kunhan se mieluusti on GNU/Linux-kone. Win-ympäristö rakennetaan myös. Vielä tarvitset Internet-yhteyden, jolla saat helposti yhteyden alan ammattilaisiin ja harrastajiin, joilta saa ideoita ja muuta apua tarvittaessa. Internetistä löytyvät myös mallikoodit, komponenttien datatiedot ja paljon muuta. Vielä jotain - tarvitset RaspberryPi-korttitietokoneen. Rakennamme itse siihen opiskeltavan liitäntäelektroniikan, joilla liitämme Raspiin sensorit/anturit, moottorit, jne. Teknisen työn ja ohjelmoinnin opettaja tai hyvä osaava kaveri auttaa. Itsellinen lukutaitoinen selviää yksinkin, varsinkin sellainen kaveri, jolla ei ole peukalo keskellä kämmentä. Tartuntapintaa Oppiminen on läpi elämän alati jatkuva prosessi, joten ensin kannattaa panostaa jatkuvuuden mahdollistavan kunnon kivijalan tekemiseen. Vain laajoista perustiedoista syntyy tartuntapintaa, johon uudet asiat voivat kiinnittyä. Tieto kun on kumulatiivista, kasautuvaa. Mitä paremmat pohjatiedot, sitä helpompaa on siihen kartuttaa uutta tietoa. Uudelle tiedolle pitää olla tartuntapintaa. Mikro-ohjaimen ohjelmoinnin ja siihen liittyvän elektroniikan opiskelu on kuin polkupyörällä ajoa, senkin oppii vain itse ajamalla. 4

Tulevaisuus Tuskin kenenkään arjesta löytyy elektronista laitetta, jossa ei käytettäisi ohjelmoitavaa mikroohjainta. Ja käyttö sen kun lisääntyy. Tämä taas edellyttää laitteiden suunnitteluun ja valmistukseen mukaan lisää uusia ammattilaisia, nimittäin IoT-järjestelmien osaajia. On osattava sekä laitteiston toiminta, että sen ohjelmointi. Työkalut kuten kielet, kääntäjät ja NetBeans-IDE on valittu sitä silmällä pitäen, että samat välineet ovat ammattilaisten käytössä huomennakin. Ohjelmointi tulee 2016, siis ensi kuussa peruskoulujen opetusohjelmaan. Tämä kirjoitussarja pyrkii omalta osaltaan helpottamaan opettajan työtä, niin peruskoulujen yläasteilla, lukioissa kuin myös ammattikouluissa ja vastaavissa. Insinööriopintoihinkin. Niin, ja kasvava eläkeläisjoukko saa ohjeistamme mielekästä puuhaa, sillä ohjelmoinnin osaaminen yhdistyneenä valtavaan elämänkokemukseen synnyttää aivan uusia ajastuksia. Ties mihin päästään ja mitä syntyy. Itsellinen opinhaluinen muuttaa tiedon osaamiseksi. Varsinkin sellainen kaveri, jolla on halu oppia jotain sellaista mitä Pat Boone ei pysty laulamaan. Tämänpäivän peruskoulujen tekninen työ: on elektroniikan ja ohjelmoinnin integrointia, siis IoT, Internet of Things. 5