Kirjoittaja Aihe: Tutustumista Linuxin laiteohjelmointiin - Loki  (Luettu 3511 kertaa)

peran

  • Vieras
Tutustumista Linuxin laiteohjelmointiin - Loki
« : 22.03.08 - klo:23.55 »
Enpä osaa arvioida miten vaikeaa tuo on sinulle.

ps. kai huomasit sen online book -linkin josta koko Device Drivers -kirja löytyy ilmaiseksi: http://www.oreilly.com/catalog/linuxdrive3/book/index.csp.

Kiitos kun huomasit huomauttaa tosta .pdf-muotoisesta julkaisusta. Sitä kun lukasin ensimmäisen kappaleen, niin se ei ainakaan mitään ylivoimaista ollut. No, kirja tulee aikanaan. Eipähän tuo hirvittävästi maksa - vähemmän kuin suomenkieliset kirjat.

Edit - No toisessa luvussa käännelläänkin jo kerneleitä, joten kovin pitkää johdantoa ei sitten ollutkaan. No, eiköhän tämä tästä, vaikken kerneleitä aikaisemmin ole kääntänytkään, mutta menee päivemmälle.  :P

Edit 2 - Nyt 23, päivä sitten sain käännetyksi kernelin, joka kelpasi ilman panikointia Ubuntulle – tosin en tehnyt siihen mitään muutoksia – vielä.
« Viimeksi muokattu: 01.04.08 - klo:12.43 kirjoittanut peran »

peran

  • Vieras
Jees, Sain HelloWordin käännettyä – säkällä.  :D

Edit - Se peräti toimi, ja kirjoitti dmessageen viestiä. JES.  ;D
« Viimeksi muokattu: 24.03.08 - klo:19.40 kirjoittanut peran »

Kari Argillander

  • Käyttäjä
  • Viestejä: 437
  • Kubuntu - Hardy
    • Profiili
Mites peran edistyt toiminnassasi on mukava lukea juttuja harjoittelusta jos vain jaksat vähän kirjoittaa. Onhan kyseessä monelle mielenkiintoinen aihe, että kuinka nopeasti voi ymmärtää pätkääkään kernelistä tai ajureiden koodaamisesta. Itse mielummin kaivan jalat maahan kuin hyppään noin korkealle, mutta toiset ovat tarpeeksi pitkiä tarttumaan ylhäällä olevaan tankoon ja tarpeeksi voimakkaita pitämään kiinni. :D
« Viimeksi muokattu: 01.04.08 - klo:15.15 kirjoittanut Kari Argillander »
Kaikkea täällä sanomaani saa käyttää public domain lisenssillä. Lainauksia ei saa käyttää ellei lainauksen lähde sitä salli. Tiedostoja ei saa käyttää ellei sitä erikseen sallita.

peran

  • Vieras
Mites peran edityt toiminnassasi on mukava lukea juttuja harjoittelusta jos vain jaksat vähän kirjoittaa. Onhan kyseessä monelle mielenkiintoinen aihe, että kuinka nopeasti voi ymmärtää pätkääkään kernelistä tai ajureiden koodaamisesta. Itse mielummin kaivan jalat maahan kuin hyppään noin korkealle, mutta toiset ovat tarpeeksi pitkiä tarttumaan ylhäällä olevaan tankoon ja tarpeeksi voimakkaita pitämään kiinni. :D

Kiitokset korkealentoisista kannustuksista. Otin kirjan kaveriksi kevyttä proosaa Suomennettuna: Marcel Gagnen "Linux Järjestelmänhaltijan käsikirja". Tämä kirja on hyvä lukea varmaankin läpi ymmärtäen, ennen kuin tarttuu tohon haastavaan Linux Device Drivers-kirjaan. No, taidan molempia lukea yhtä aikaa.

Device Drivers-kirjassa olen lukenut kappaleen 3 ja olen kappaleessa 3. Tekniikkani on ainakin toistaiseksi ollut lukea kappaleet kahteen kertaan. Tämä osittain sen takia, koska asia on vaikea. Lisäksi koska esimerkit rakentuvat hitaasti, ja ensimmäisellä lukukerralla on hankala saada kokonaiskuvaa asioista, jotka käydään läpi.

- Edit - Toistaiseksi oppinut
- Kernelin ohjelmointikielenä käytetään yleensä C:tä.
- Linux on puhdas tiedostojärjestelmä. Laitteetkin ovat tavallaan tiedostoja.
- Kernel - moduulin kääntämiseen ei ilmeisesti tarvitse välttämättä kääntää koko Kerneliä, vaikka niin käänsinkin Hello Wordin.
- Vaikka tämän tiesinkin, niin Kernel-ohjelmoinnissa kannattaa pitää kieli keskellä suuta, sillä muutoin saattaa kaataa järjestelmän. Siis paha bugi todennäköisesti kaataa koko järjestelmän, kun taas normaalissa ohjelmoinnissa se voi kaataa vain ko. ohjelman.
- Lisäksi pienikin bugi tekee koko järjestelmästä haavoittuvan.
- Kirja käyttää virhetilanteista (Esim. keskusmuisti loppu, ja haluaisit varata muistia) selviytymiseen gotoa. Veikkaukseni mukaan siksi, ettei se rasita pinoa.
- Kernelin tulostuskäsky on printk, joka vastaa läheisesti printf:fää.
- Kernelissä ei sallita liukulukujen käyttöä. Lähinnä siksi, ettei kaikissa prosessoreissa ole liukulukuyksikköä. No, äkkiseltään ei tule mieleen laiteajuria, joka tarvitsisi liukulukua.
- Marcel Gagne:n kirjasta opin, että jos pystyt jollain scriptillä tulostamaan tulostimella, niin todennäköisesti melko helposti siitä saa tehtyä Linux-ajurin lpr:lle. Mukavan suoraviivaista toi tulostaminen. Lisäksi tästä tuli arvaus:"Minkä tapainen USB-printterin ajuri voi olla." Tosin Cupsia kyseisessä kirjassa ei juurikaan kuvattu.
« Viimeksi muokattu: 01.04.08 - klo:13.08 kirjoittanut peran »

peran

  • Vieras
Linux Device Drivers - Chapter 3
« Vastaus #4 : 01.04.08 - klo:15.09 »
No, nyt Chapter 3 on luettu.

Vähän tyhjä olo, mutta jotain on jäänyt käteenkin.
Scull-ajurin tekemisen ohje tuli käytyä läpi. Ajuri on Ascii-ajuri, johon voi kirjoittaa muistiin l. ajuriin (siis varaa kirjoitetun määrän RAM-muistia) ja sen voi lukea jälkikäteen.

Valitettavasti FTP:llä hakemassani sorsassa oli paljon ylimääräistä (l. 4:n luvun asiat, joka on debuggaaminen). Ensimmäisen lukukerran jälkeen minulle oli mystistä, miksi noi ylimääräiset osat olivat, ja olivatko ne välttämättömiä. Toinen lukukerta vähän auttoi, mutta vasta lukemisen jälkeen hokasin, että noi ylimääräset laitteet ovat jotain debuggausta varten. Tämä on siis veikkausta.

No nyt sitten rohkeasti kääntämään ajuria...

Edit - Eipäs kääntynyt suoraan - pitää sorkkia Makefileäkö ?
« Viimeksi muokattu: 01.04.08 - klo:15.16 kirjoittanut peran »

Kari Argillander

  • Käyttäjä
  • Viestejä: 437
  • Kubuntu - Hardy
    • Profiili
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #5 : 01.04.08 - klo:15.14 »
Onko sinulla emulaattoria missä kokeilet asioita vai teekkö rohkeasti suoraan omaan järjestelmääsi?

EDIT: Suosittelen seuraamaan myös jonkin verran kernelin maili listaa. lkml.org
« Viimeksi muokattu: 01.04.08 - klo:15.21 kirjoittanut Kari Argillander »
Kaikkea täällä sanomaani saa käyttää public domain lisenssillä. Lainauksia ei saa käyttää ellei lainauksen lähde sitä salli. Tiedostoja ei saa käyttää ellei sitä erikseen sallita.

peran

  • Vieras
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #6 : 01.04.08 - klo:15.22 »
Onko sinulla emulaattoria missä kokeilet asioita vai teekkö rohkeasti suoraan omaan järjestelmääsi?
Rohkeasti vain.  ;D

Jos minä olisin järkevä/viisas tekisin virtuaalikoneessa, mutta kun sellaista ei minulle ole suotu, niin teen suoraan järjestelmään.  :D

Toistaiseksi nää on moduleita, jotka lataan vain muistiin, ja bootin jälkeen ne häipyvät muistista.

Edit - Kun sais edes kääntymään.  :P
« Viimeksi muokattu: 01.04.08 - klo:16.29 kirjoittanut peran »

gdm

  • Sitä saa mitä tilaa...
  • Käyttäjä
  • Viestejä: 4363
    • Profiili
    • Keskustelualueiden säännöt
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #7 : 01.04.08 - klo:15.29 »
Toistaiseksi nää on moduleita, jotka lataan vain muistiin, ja bootin jälkeen ne häipyvät muistista.

Yksi sana sinulle: SkyNet ;)
Lisää [Ratkaistu] aloitusviestiin jos ongelmasi selviää!
Saamasi tuki on ilmaista, joten älä vaadi tai uhkaile saadaksesi apua!

peran

  • Vieras
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #8 : 01.04.08 - klo:16.40 »
Toistaiseksi nää on moduleita, jotka lataan vain muistiin, ja bootin jälkeen ne häipyvät muistista.

Yksi sana sinulle: SkyNet ;)

??? Matrixko?

Saisi kyllä kirjassa olla selkeemmät ohjeet kääntämiseen.  :P

Btw - Kuinka määritellään etsimishakemisto #include <kernel.h>:lle - ei kääntäjä löydä headereita?   :(

peran

  • Vieras
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #9 : 06.04.08 - klo:08.14 »
Edelleen ollaan 3 luvussa, ja haluttais saada ohjelma kääntymään.  >:(

Joo, kyllä oli demoissa Makefile:kin, mutten vaan osaa.  :-\

Tosin osasyyna on tietenkin liian uusi kerneli, mutta kuitenkin ...

Tarvitseisin oppaan kääntämisestä – tai ainakin kernelmodulien kääntämisestä.

Taitaa kirja olla vähän liian tuhtia tavaraa itselleni.

Edit - Tosin on aika monta rautaa tulessa, joten aivan viikkoa en sentään ole täyspainoisesti yrittänyt ratkaista ongelmaa.
« Viimeksi muokattu: 06.04.08 - klo:08.16 kirjoittanut peran »

teprrr

  • Käyttäjä
  • Viestejä: 304
    • Profiili
Vs: Tutustumista Linuxin laiteohjelmointiin - Loki
« Vastaus #10 : 06.04.08 - klo:16.53 »
Joo, kyllä oli demoissa Makefile:kin, mutten vaan osaa.  :-\

Tosin osasyyna on tietenkin liian uusi kerneli, mutta kuitenkin ...

Tarvitseisin oppaan kääntämisestä – tai ainakin kernelmodulien kääntämisestä.
Sinun pitää lisätä oikea include-polku kääntäjälle laitettavaksi. Ja tietysti pitää olla myös kernelin otsikkotiedostot asennettuina, jotta ne löytyvät. Olisikohan niin, että esimerkki-Makefilessä käytetään suoraan esimerkiksi polkua /usr/src/linux, jonka alta etsitään ja se ei sinulla osoita oikeaan paikkaan?