How to Survive Embedded Linux-Osa 1 Embedded Linux Development Process

the Embedded Linux Development Process

the Linux kernel can run on many different computer architectures, joista useimmat ovat varsin suosittuja sulautetussa maailmassa. Kaikki peruspaketit, joiden avulla käyttöjärjestelmä voi suorittaa perustehtävät, soveltuvat ristikytkentään, joten Linux voi olla yhtä Läpitunkeva kuin mikrokontrollerit ja järjestelmät sirulla (SoCs).

Linux – jakelu on ohjelmistokokoelmasta tehty käyttöjärjestelmä, joka perustuu Linux – ytimeen ja-usein-paketinhallintajärjestelmään. Jakelu voi tulla valmiiksi koottuina binääreinä ja paketteina, jotka jakelun ylläpitäjät ovat koonneet
, tai lähteinä, joihin on liitetty ohjeet niiden (ristiin) kääntämisestä.

sulautetussa verkkotunnuksessa, koska laitteistoalusta on yleensä mittatilaustyönä, käyttöjärjestelmän suunnittelija haluaa yleensä luoda jakelun tyhjästä, lähteistä alkaen. Tämä antaa suunnittelijalle ehdottoman kontrollin siitä, mitä
tuotteeseen päätyy. Lisäksi Board Support Package (BSP)-insinööri muokkaa matalan tason koodia, jotta käyttöjärjestelmän ydintoiminnot toimivat tietyssä laitteistotuotteessa.

kaikkien tarvittavien ohjelmistokomponenttien saaminen yhteen Linux-jakelun luomiseksi tietylle sulautetulle tuotteelle oli ennen painajainen, mutta näin ei enää ole.

monet ovat jakaneet avoimen lähdekoodin yhteisön kanssa rakentamisjärjestelmien lähteet, jotka pystyvät hakemaan kaikki ohjelmistokomponentit Internetistä, kääntämään ne ja liittämään ne yhteen, aina täysimittaisten käyttöjärjestelmien asennuskuvien tuottamiseen asti. Muutamat yritykset kehittävät ja ylläpitävät omaa build-järjestelmäänsä, toiset kokoavat vain muutaman ydinkomponentin ja ottavat sitten valmiiksi rakennetut binäärit käyttöjärjestelmän viimeistelyyn.

vuonna 2010 Linux Foundationin työryhmä alkoi käsitellä työkaluja ja prosesseja, joiden avulla voitaisiin luoda Linux-jakeluja sulautetuille ohjelmistoille (alias Embedded Linux). Tällainen työryhmä, joka tunnetaan Yocto-projektina, asettui tukemaan Open Embeddediä, puitteita, joilla on samanlaiset tavoitteet.

Yocto-projekti on avoimen lähdekoodin projekti, jonka painopiste on sulautettujen Linux-jakelujen ohjelmistokehitysprosessin parantamisessa. Yocto-projekti tarjoaa yhteentoimivia työkaluja, metatietoja ja prosesseja, jotka mahdollistavat
nopean, toistettavan Linux-pohjaisten sulautettujen järjestelmien kehittämisen.

Yocto-projekti tuottaa tällä hetkellä suosituinta Linux-jakelua sulautetulle järjestelmälle siinä määrin, että joskus termit ”Embedded Linux” ja ”Yocto Project” sekoitetaan helposti synonyymeiksi. Yocto se ei ole upotettu Linux-jakelu, se luo mukautetun yksi sinulle.

Yocto ’s meta-layers layout

Yocto’ s architecture modern version perustuu meta-layersiin, jotka ovat hakemistoja, jotka sisältävät asetustiedostoja ja sääntöjä Linux-jakeluiden kääntämisestä ja kokoamisesta sulautettuihin järjestelmiin.

yleensä, mutta ei aina, metakerros elää omassa git-arkistossaan ja tarjoaa:

  • omat pakkauksensa (määritelty resepteillä, .bb-tiedostoilla),
  • muutokset muiden metakerrosten tarjoamiin pakkauksiin (.bbappend-tiedostot),
  • koneet (.conf-tiedostot),
  • asetustiedostot (.conf-tiedostot),
  • yhteinen koodi (.bbclass files),
  • lisenssit,
  • ja muita pieniä pätkiä.

yhdellä metakerroksella käsitellään yleensä tiettyä tarkoitusta. Siksi täysin toimivan järjestelmän saavuttamiseksi metakerroksia on yhdistettävä enemmän.

versiot poiminta ja sovittaminen

eri ohjelmistokomponentteja koottaessa on otettava huomioon kunkin komponentin versio, sillä väärä versio ei välttämättä toimi hyvin yhdessä muiden komponenttien kanssa tai jopa rikkoo järjestelmän.

Yocto-projekti tarjoaa julkaisuja komponenteista, joiden tiedetään toimivan hyvin yhteen, mutta se on vain lähtökohta tuotteellesi.

Linux-ydin on iso palanen koodia, jonka pitää paljastaa oikeat käyttöliittymät käyttäjätilaan ja sisältää oikeat ajurit, jotta järjestelmä toimisi kunnolla. Siksi silicon toimittajan rooli on tullut yhä tärkeämmäksi näinä päivinä, koska heillä on yleensä omat kehitysvarastot Linux-ytimelle ja bootloaderille, joten he ovat parhaita ihmisiä kokoamaan toimivan pohjajärjestelmän, joka perustuu heidän teknologiaansa.

Googlen repo

on alun perin kehitetty selviytymään monista Git-arkistoista Android-projektissa, ja reposta on tullut varsin suosittu myös Yocto-kehittäjien keskuudessa.

Repo on Gitin päälle rakennettu työkalu; se käyttää” manifest-tiedostoa ” kloonatakseen ja vetääkseen joukon Git-arkistoja samaan aikaan.
repo-manifesti on an .xml-asiakirja, joka sisältää viittauksia git-arkistoihin (sekä niiden versiot), repo voi käyttää manifestia kansoittaakseen hakemiston, jossa on kaikki lähteet, jotka tulevat projektin rakentamiseen tarvittavista useista Git-arkistoista.

myös repo voi käyttää samaa manifestia pitääkseen projektin lähteet kurissa (synkronoituna), kun ylävirtaan tehdään muutoksia.

muutamat piimyyjät tarjoavat nykyään kehitys-ja julkaisuhaaroilleen manifesteja, jotta suunnittelijat voivat helposti tarkistaa omien tuotteidensa lähtökohdat.

Yocto-pohjainen tuotekehitys

BSP-insinööri lähtee yleensä piimyyjän repo-manifestista hakemaan viitesuunnittelun ohjelmistoversiota (joka on piimyyjän itsensä tai jonkun sen kumppanin toimittama malli, joka sisältää saman tai samankaltaisen SoC: n kuin se, johon uusi tuote perustuu). Insinööri tekee muutoksia käynnistyslataajaan ja Linux-ytimeen varmistaakseen, että Elektroniikkainsinöörin valitsemalla laitteistolla on asianmukainen matalan tason ohjelmistotuki (esim.laiteajurit, laitepuu, ytimen kokoonpano jne.).

tuotteen tarkoituksena on ajaa yhtä tai useampaa sovellusta, joten BSP/OS-insinööri varmistaa, että kaikki sovellusten riippuvuudet rakennetaan järjestelmää varten. Sovellusta kehittävät insinöörit tarvitsevat SDK: n (Software Develpment Kit) ristikkäistäkseen ja linkittääkseen sovelluksen, joten BSP/OS engineer
tarjoaa heille tällaisen paketin, ja Yocton ansiosta tästä on tullut melko yksinkertaista.

Embedded Linux good practice

kehityksessä käytetyt repo-manifestit sisältävät yleensä viittauksia kehityshaaroihin, mikä tarkoittaa, että repo hakee viimeisimmän toimituksen kyseisille haaroille.

jos haet projektin myöhemmin samalla manifestilla, voit hakea koodista eri version! Tämä sopii täydellisesti kehitystyöhön, koska haluat pitää kiinni projektisi viimeisimmästä versiosta, mutta yksi kehitysversioistasi tulee lopulta julkaisuksi, ja siksi sinun täytyy ”ottaa kuva” siitä tarkasta versiosta lähteistä, joita käytetään projektissa olevan ohjelmistojulkaisun tuottamiseen. Jos näin ei tehdä, voi altistaa sinut oikeudellisille ongelmille, koska et pysty uudistamaan samaa rakennusta lähteistä alkaen, joten et voi tehdä muutosta tietyn julkaisun päälle, pakottaen asiakkaan uudelleen testaamaan koko järjestelmän, koska sinun on pakko korjata vika tai lisätä uusi ominaisuus ohjelmiston uusimman version päälle.

myös, jos et ota näitä tilannekuvia, et voi mitenkään suorittaa jakoa projektin lähteistä saadaksesi selville, mikä toimitus on rikkonut tarvitsemasi toiminnallisuuden. Kun suunnittelet kehitysprosessiasi, Etsi tapa luoda automaattisesti repo-manifestit, joissa on tarkat toimitukset, jotta voit tallentaa ne julkaisujen rinnalle ja tarkistaa samat lähteet uudelleen myöhemmin, ja tehdä mitä sinulle maksetaan.

Copy sources in house

muista myös, että 99,9% tuotteesi sisällä olevista lähteistä tulee avoimen lähdekoodin yhteisöstä, joten sinulla ei ole takeita siitä, että samat lähteet ovat ladattavissa uudelleen. Suunnittelijana sinun on suojauduttava vastavirtaan tehdyiltä muutoksilta ja virheiltä. Säilytä kopio kaikista olennaisista lähteistä talossa, ja löydä tapa kytkeä ne takaisin build-järjestelmään. Saatat myös haluta peilata joitakin eniten käyttämiäsi arkistoja, sillä joskus git-palvelimet eivät ole enää käytettävissä. Jos sinulla ei ole sisäistä kopiota, olet jumissa, kunnes palvelimet palaavat verkkoon.

Bytesnapilla meillä on täysin automatisoitu tapa julkaista Yokto-pohjaisia projekteja siten, että voimme saada takaisin julkaisuun menevät lähteet ja myös rakentaa saman julkaisun uudelleen myöhemmin. Säilytämme avoimen lähdekoodin pakettien kopiot automaattisesti, jotta vialliset palvelimet ympäri maailmaa eivät aiheuta katkoksia. Lisäksi tuemme kaikkea joka ikinen päivä, jotta voimme taata, ettei työtä menetetä edes katastrofin sattuessa paikan päällä.

Fabrizio Castro
Fab on koulutukseltaan ohjelmistoinsinööri. Hän suoritti kandidaatin ja maisterin tutkintonsa Politecnico di Milanossa Milanossa Italiassa. Hänellä on 20 vuoden kokemus monipuolisesta ohjelmistokehityksestä (palvelut, tietokannat, Sovellukset, tieteelliset ohjelmistot, firmware, RTOS, laiteajurit, Linux-ydin jne.), vietti työskentelyä akateemisessa maailmassa ja teollisuudessa. Fab on ollut mukana kirjoittamassa tieteellisiä tutkielmia ja kirjoja sekä työskennellyt patenttien parissa. Tutkimus – ja kehitystyön lisäksi hän on erikoistunut sulautettuihin Linux-kehitysohjelmiin, jotka tuottavat huipputeknisiä malleja, jotka tarjoavat menestyviä tieteellisiä, teollisia, kaupallisia ja sotilaallisia tuotteita. Fab on toiminut myös luennoitsijana ja opettanut perustutkintoja joissakin Euroopan arvostetuimmissa yliopistoissa. Lisätietoja ByteSnap Design visit http://www.bytesnap.co.uk.

Leave a Reply

Sähköpostiosoitettasi ei julkaista.