Sisteme de operare pentru Raspberry Pi -...

17
Universitatea “Politehnica” Bucureşti Facultatea de Electronică, TelecomunicaŃii şi Tehnologia InformaŃiei Sisteme de operare pentru Raspberry Pi Conducător ştiinŃific: Conf. Dr. Ing. Ştefan Stăncescu Masterand: Ing. Ignat D. Mihai 2014

Transcript of Sisteme de operare pentru Raspberry Pi -...

Universitatea “Politehnica” Bucureşti Facultatea de Electronică, TelecomunicaŃii şi Tehnologia InformaŃiei

Sisteme de operare pentru Raspberry Pi

Conducător ştiinŃific: Conf. Dr. Ing. Ştefan Stăncescu

Masterand: Ing. Ignat D. Mihai

2014

Capitolul 1 – Microcalculatorul Raspberry Pi

1.1 Introducere în sistemele embedded

Un sistem „embedded” (integrat) este un computer cu o funcŃionalitate dedicată care face parte dintr-un sistem electronic sau mecanic mai mare. Aceste sisteme prezintă deseori constrângeri de calcul în timp real. În comparaŃie, un computer de uz general precum computerul personal (PC) este proiectat pentru a fi flexibil şi pentru a îndeplini o gamă mai largă de necesităŃi ale utilizatorilor. Sistemele embedded controlează multe dintre dispozitivele comune folosite în ziua de astăzi. [1]

Figura 1: Microcontrolerul Intel 8008, unul dintre „strămoşii” microcontrolerelor [5]

Majoritatea sistemelor embedded moderne au la bază un microcontroler (o unitate centrală de procesare cu memorie integrată şi/sau interfeŃe cu periferice – figura 1) dar există şi sisteme proiectate cu microprocesoare (având cipuri de memorie externe şi circuite de interfaŃare cu perifericele), în special în sisteme de complexitate ridicată. În ambele situaŃii, procesorul (procesoarele) folosit poate varia de la procesoare de uz general la procesoare specializate pentru anumite operaŃii sau procesoare proiectate special pentru aplicaŃia respectivă. O clasă de procesoare des utilizată de procesoare dedicate este clasa procesoarelor de semnal digital (DSP). [1] Caracteristica principală a sistemelor embedded este capacitatea de a se ocupa de o sarcină anume. Avantajul acestei caracteristici constă în faptul că proiectanŃii sistemului pot optimiza designul pentru a reduce dimensiuniile şi costul produsului şi pentru a îmbunătăŃi performanŃele şi siguranŃa produsului. Unele sisteme, ca de exemplu Raspberry Pi şi Arduino, sunt produse în masă, astfel beneficiind de avantajele economice aferente. Gama de utilizare a sistemelor embedded variază de la echipamente portabile precum ceasuri digitale şi playere MP3 până la instalaŃii staŃionare de dimensiuni mari precum luminile de trafic, controlul producŃiei în cadrul unei fabrici şi sisteme de complexitate mare precum vehicule hibride, aparate de imagistică medicală şi sisteme electronice de bord pentru aeronave. Complexitatea sistemelor variază de la o complexitate foarte mică, cu un singur cip de microcontroler până la complexităŃi mari, cu unităŃi multiple, periferice şi reŃele înglobate într-un şasiu de dimensiuni mari. [1]

Figura 2: Multiple sisteme embedded (Arduino, Raspberry Pi, Beaglebone, etc.) [5]

1.2 Raspberry Pi – SpecificaŃii şi evoluŃie Trendul sistemelor embedded pentru publicul larg a fost iniŃializat de către Interaction

Ivrea, un institut de cercetare din Italia prin platforma de tip open-source Arduino, în 2005. Arduino a reprezentat rampa de relansare a domeniului embedded, inspirând apariŃia platformelor cu cost redus de producŃie. Dintre aceste platforme, reamintim LaunchPad MSP430 de la Texas Instruments, Wiring S, Picaxe-28X2, Netduino, TinyDuino, Raspberry Pi, Beaglebone (figura 2) etc. [5]

În prezent, există o gamă largă de plăci de dezvoltare embedded optimizate pentru numeroase aplicaŃii. Un criteriu de selecŃie a plăcii potrivite este complexitatea aplicaŃiei. Dacă aplicaŃia necesită comunicarea simplă cu periferice (senzori, etc.), atunci plăcile cu microcontroler Arduino, Netduino, Wiring S, etc. reprezintă soluŃia optimă. Pentru aplicaŃii de complexitate crescută, care necesită puterea de calcul al unui procesor ARM pentru a rula aplicaŃii Linux, alegerea potrivită este un computer pe o singură placă (SBC – Single Board Computer). Dintre acestea reamintim Beaglebone şi Raspberry Pi.

ApariŃia microcalculatorului Raspberry Pi în anul 2012 a adus domeniul embedded la un nou nivel. Acesta oferă un mediu facil pentru învăŃarea programării şi dezvoltarea de proiecte hardware la un preŃ redus.

Dimensiunile acestuia sunt comparative cu cele ale unui card bancar (85.60 mm × 53.98 mm) şi a fost creat de către fundaŃia britanică „The Raspberry Pi Foundation” cu intenŃia de a promova învăŃarea programării în şcoli. Succesul comercial a acestuia a venit pe fondul unui preŃ redus de vânzare raportat la performanŃele oferite comparativ cu alte modele existente pe piaŃă (pcDuino de la LinkSprite, APC de la VIA, Cubieboard de la CubieTech, etc.) [2]

Figura 3: Microcalculatorul Raspberry Pi [2]

Raspberry Pi este compus dintr-un SoC fabricat de Broadcom, model BCM2835, care include un procesor de tip ARM1176JZF-S, funcŃionând la 700 MHz (printr-o setare din firmware, acesta este capabil să funcŃioneze la 1GHz), un GPU VideoCore IV şi 256 MB de memorie RAM pentru revizia 1, respectiv 512 MB de memorie RAM pentru revizia 2. Acesta nu conŃine un hard disk sau o unitate SSD, folosind în schimb un card de memorie flash SD pentru boot-are şi stocare pe termen lung. În prezent există pe piaŃă două modele: modelul A, care conŃine un singur port USB şi nu are conectivitate Ethernet (figura 4) şi modelul B, care vine dotat cu două porturi USB şi conectivitate Ethernet (figura 3). Modelul A este conceput pentru dezvoltarea aplicaŃiilor cu limitare de curent electric (quadcopter, robot, etc.) care nu necesită comunicare prin Ethernet. [2]

Figura 4: Modelul A (stânga) în comparaŃie cu modelul B (dreapta) [2]

1.3 Arhitectura sistemului Raspberry Pi

Figura 5 reprezintă o trecere în revistă a conexiunilor interne din Raspberry Pi modelul B. Aceasta reprezintă digrama bloc a microcalculatorului. Blocul I/O include interfaŃa GPIO, interfaŃa DSI pentru conectarea unui monitor extern cu interfaŃă compatibilă (pentru care încă nu au fost dezvoltate driver-e compatibile), interfaŃa CSI pentru conectarea unei camere de filmat/fotografiat şi interfeŃele S-Video şi HDMI pentru conectarea unor dispozitive de afişare externe (figura 6). [2]

Figura 5: Diagrama bloc a Raspberry Pi model B [2]

Figura 6: Intrările şi ieşirile plăcii Raspberry Pi [2]

GPIO (General Purpose Input/Output) este un pin de pe un cip a cărui comportament (de intrare sau de ieşire) poate fi controlat prin programare de către utilizator la rulare. Acest pin nu are un scop special definit şi de obicei este nefolosit. Ideea din spatele GPIO este de a da posibilitatea unui designer de sisteme integrate de a crea circuite digitale folosind o serie de astfel de pini şi câteva linii de control disponibile pe cip în detrimentul creării de circuite digitale dedicate adiŃionale. Pinii GPIO sunt folosite în cipuri (circuite integrate, SoC, FPGA, etc.), cipuri multifuncŃionale (codec-uri audio, manageri de putere, cartele video, etc.), sisteme pentru aplicaŃii

integrate (Raspberry Pi, Arduino, BeagleBone, etc.) în care sunt folosiŃi pentru a citi valori de la senzori de mediu (infraroşu, temperatură, orientare, accelerare, ş.a.m.d.), pentru a controla motoare în curent continuu, ecrane LCD sau LED-uri, etc. [12]

Pe plăcuŃa Raspberry Pi există 26 de pini grupaŃi în acelaşi bloc numit P1 (figura 7). Dintre aceştia, 8 sunt pini GPIO, restul fiind folosiŃi pentru alte protocoale de comunicaŃii (I²C, SPI, UART) şi pentru alimentare la 3.3V, 5V şi respectiv masa circuitului GND (0V). Nivelul de tensiune disponibil pe pinii GPIO este de 3.3V, aceştia fiind intoleranŃi la 5V. [2]

Figura 7: Blocul P1 şi ordinea pinilor GPIO

ToŃi pinii GPIO pot fi reconfiguraŃi pentru a asigura funcŃii alternative, SPI, PWM, I²C şi altele. Doar pinii GPIO 14 şi 15 pot fi asignaŃi pentru funcŃia alternativă de UART, având posibilitatea de a-i reasigna către funcŃia GPIO pentru a asigura un număr de 17 pini GPIO. Fiecare funcŃie este detaliată în fişa tehnică a cipului BCM2835. Fiecare pin GPIO este capabil de schimbări ale semnalului în nivelul maxim/minim şi de executarea întreruperilor. Histerezisul pe intrare al pinilor GPIO poate fi de tip pornit/oprit, rata de cădere poate fi rapidă sau limitată iar curentul de sursă şi cel absorbit poate fi configurat de la 2mA până la 16 mA. Aceste proprietăŃi se aplică tuturor celor 26 de pini ai blocului P1. [2]

ConfiguraŃia pinilor GPIO din blocul P1 este afişată în tabelul din figura 8.

Figura 8: ConfiguraŃia pinilor GPIO [2]

1.4 Sisteme de operare disponibile pentru Raspberry Pi

De la lansarea sa, tot mai multe sisteme de operare au fost dezvoltate pentru a fi compatibile cu arhitectura Raspberry Pi. Dintre acestea amintim Raspbian (o variantă adaptată a sistemului de operare Debian Wheezy), RaspBMC (un firmware adaptat pentru aplicaŃii multimedia), Pidora (o variantă a cunoscutului sistem Fedora), RISC OS (un sistem de operare derivat din UNIX), Gentoo Linux, FreeBSD, NetBSD, Plan 9, Slackware Linux, ş.a.m.d. [3]

În general, orice kernel derivat din Linux este compatibil cu arhitectura hardware a Raspberry Pi. Astfel, Raspberry Pi suportă si versiuni neoficiale pentru platformă ale sistemelor de operare Android şi Firefox OS.

Alegerea unui sistem de operare pentru Raspberry Pi poate avea numeroase criterii. Unul dintre acestea este aplicaŃia pentru care este utilizat microcalculatorul. AplicaŃiile curente includ domenii precum domeniul multimedia, robotica, servere de putere redusă, ş.a.m.d., pentru fiecare existând sisteme de operare optimizate. [4]

Astfel, pentru aplicaŃii multimedia (sisteme de home entertainment, console de jocuri, etc.), sistemele de operare recomandate sunt RaspBMC, OpenELEC, XBMC. Pentru aplicaŃiile de robotică, cele mai utilizate sisteme sunt Raspian, datorită pachetului mare de aplicaŃii precompilate, util în astfel de aplicaŃii, RISC OS, Plan 9, etc. [4]

Pentru gestionarea unui server de putere redusă, numeroşi utilizatori au optat pentru Pidora şi Raspian, datorită stabilităŃii sistemelor şi a pachetelor bogate de aplicaŃii. [4]

Figura 9: InterfaŃa tool-ului de recovery pentru Raspberry Pi, care oferă mai multe opŃiuni pentru sistemul de operare [2]

Capitolul 2 – Sisteme de operare Majoritatea sistemelor de operare disponibile oficial sau neoficial pentru platforma

Raspberry Pi sunt derivate din sistemul de operare Linux, creat de Linus Torvals la începutul anilor 1990. Gama mare de programe şi sisteme de operare care au ca nucleu Linux se datorează faptului că proiectul Linux este de tip GNU GPL (General Public License), ceea ce dă caracterul „open-source” al proiectului. Astfel, a fost posibilă apariŃia unor programe consacrate precum GNU Compiler Collection (GCC). [6] [7]

Toate sistemele de operare au la bază aceiaşi arhitectură a kernelului datorită derivării lor din Linux. Arhitectura de bază a sistemelor de operare poate fi simplificată prin figura următoare:

Figura 10: Privirea de ansamblu asupra sistemului Linux [6]

Sistemul de operare este împărŃit în două spaŃii: spaŃiul utilizatorului şi spaŃiul kernelului. În spaŃiul utilizatorului se desfăşoară aplicaŃiile de utilizator care comunică cu spaŃiul kernelului prin interfaŃa de apel de sistem (System Call Interface). Comunicarea cu SCI se realizează prin utilizarea librăriei GNU C (glibc). Aceasta oferă, de asemenea, mecanismul de tranziŃie între spaŃiul utilizatorului şi spaŃiul kernelului. Acest lucru este important deoarece cele două spaŃii ocupă spaŃii de adresă diferite protejate. În timp ce fiecare proces din spaŃiul utilizatorului ocupă propriul spaŃiu de adresă virtual, kernelul ocupă un singur spaŃiu de adrese. [6] [7] Figura următoare reprezintă o privire mai amănunŃită asupra kernelului propriu-zis.

Figura 11: Perspectivă arhitecturală asupra kernelului [6]

Elementele care se regăsesc în arhitectura de kernel prezentată sunt [6]: • InterfaŃa de apel de sistem (System Call Interface) – un strat care oferă mijloace pentru

apelul funcŃiilor de sistem din spaŃiul utilizatorului în kernel • Managementul procesului (Process Management) – un mecanism care se focusează pe

execuŃia proceselor • Managementul memoriei (Memory Management) – eficientizează utilizarea memoriei (în

pagini), atât pentru memoria fizică, cât şi pentru cea virtuală • Sistemul de fişiere virtuale (Virtual File System) – oferă un strat de schimbare între SCI şi

sistemele de fişiere suportate de către kernel • Stiva de reŃea (Network Stack) – urmăreşte o arhitectură stratificată modelată după

protocoale (IP, TCP, UDP, etc.) • Driverele dispozitivelor (Device Drivers) – o listă de drivere precompilate a celor mai

întâlnite dispozitive (drivere generice)

Kernelul de Linux oferă numeroase avantaje precum portabilitate, eficienŃă, suportul pentru numeroase protocoale de comunicaŃie (TCP/IP, SCTP, etc.), posibilitatea de modificare a kernelului în funcŃie de aplicaŃie şi/sau dorinŃele utilizatorului, ş.a.m.d. [6]

Sistemele de operare tratate în continuare sunt Raspian şi RaspBMC, derivate din Debian, care are la bază kernelul Linux, Arch Linux ARM şi RISC OS, dezvoltat de către Acorn Computers, optimizat pentru procesoare de tip RISC (procesor cu set redus de instrucŃiuni), caracteristică şi a procesorului microcalculatorului Raspberry Pi, ARM1176JZF-S.

2.1 Raspian

Raspian este un sistem de operare gratuit optimizat pentru setul de instrucŃiuni al

arhitecturii ARMv6, pe care se bazează microcalculatorul Raspberry Pi. Acesta derivă din sistemul de operare Debian 7 “Wheezy”. Numele “Raspian” reprezintă un joc de cuvinte dintre Raspberry şi Debian. Acest sistem de operare oferă peste 35000 de pachete software precompilate şi uşor de instalat, optimizate pentru a rula pe hardware-ul ARM11 al Raspberry Pi. Pachetul de bază Raspian conŃine un mediu de lucru LXDE, managerul de ferestre Openbox, browser-ul web Midori, instrumente de dezvoltare software (IDLE, Scratch, etc.) şi exemple de coduri sursă pentru funcŃii multimedia. [8] Sistemul de operare Raspian este un sistem de tip “hard-float”, adică acesta operează în virgulă mobilă prin emulare hardware. Astfel, nu se oferă suport pentru folosirea blocului de procesare vectorială în virgulă mobilă. [2] [8]

Figura 12: InterfaŃa Raspian

Sistemul de operare Debian pentru arhitecturi ARM este compilat pentru setul de instrucŃiuni ARM versiunea 4. Arhitectura de tip hard-float Debian este compilată pentru ARMv7. Arhitectura procesorului ARM al lui Raspberry Pi este de tip ARMv6. Tehnic, Raspian este conceput cu setările de compilare ajustate pentru a produce cod în virgulă mobilă emulat hardware optimizat pentru Raspberry Pi. Pentru a ajuta această optimizare, se mai folosesc şi interfaŃa binară de aplicaŃie în virgulă mobilă şi arhitectura de microprocesor ARM pe 32 de biŃi cu funcŃiile arhitecturii ARMv6. [2] [8]

În versiuni mai recente ale Raspian, multe dintre elementele semnificative necesare ale lui Debian Wheezy au fost portate pentru arhitectura ARMv6, deşi distribuŃia oficială necesită arhitectura ARMv7. Astfel, performanŃa pentru aplicaŃii care folosesc operaŃii de aritmetică în virgulă mobilă este crescută deoarece sistemele de operare precedente pentru Raspberry Pi folosesc setări de tip “soft float”, mai puŃin eficiente, prin care operaŃiile aritmetice în virgulă mobilă native pentru arhitectura ARMv6 sunt emulate software. [2] [8]

Sistemul de fişiere este standard pentru un sistem derivat din Linux. Acesta este de tip ierarhic, împărŃit în directoare, dintre care reamintim printre cele mai importante [9]:

• /bin – în care se instalează programele de utilizator • /boot – în care se află fişierele necesare la pornire • /dev – conŃine fişiere speciale care reprezintă dispozitivele sistemului • /etc – aici se regăsesc fişierele de configurare a sistemului • /etc/init.d – conŃine scripturile pentru pornirea serviciilor • /home – directorul utilizatorului • /home/pi – directorul utilizatorului pi (root) • /lib – driverele şi modulele kernel • /proc – un director virtual care conŃine informaŃii legate de procesele care rulează şi

de sistemul de operare • /sys – un director special pentru Raspberry Pi care conŃine driverele pentru

dispozitivele hardware • /usr – conŃine programe şi date utilizabile de către toŃi utilizatorii • /usr/src – sursele sistemului Linux • /var – fişiere pentru procesare (similar unui buffer) şi loguri de sistem

2.2 RaspBMC

RaspBMC este o distribuŃie minimă bazată pe Debian care aduce funcŃionalităŃile sistemului de operare pentru echipamente multimedia XBMC lui Raspberry Pi. Acesta este un sistem de tip open-source, care suportă conectivităŃi atât prin cablu, cât şi prin WiFi, cu o interfaŃă simplă şi suport pentru redări 1080p. Sistemul oferă suport pentru HTTP, FTP, USB, SMB, NFS şi poate reda orice fişier video/audio/imagine. [10]

Sistemul foloseşte 3 partiŃii [10]:

• /dev/mmcblk0p1, de tip fat32,

• /dev/mmcblk0p2, de tip linux-swap,

• /dev/mmcblk0p3, de tip ext4.

PartiŃia de tip ext4 este considerată ca fiind plină în momentul în care spaŃiul ocupat este

spaŃiul total minus 100 MB. Această partiŃie este partiŃia root a sistemului. PartiŃia de tip fat32 conŃine fişierele de firware şi este montată la /boot pentru a emula o setare tradiŃională Debian care stochează GRUB. [10]

Există numeroase componente de shell care menŃin sistemul la zi. De exemplu, pentru update-ul kernelului şi a firmware-ului, există scriptul upd_kernel.sh, ş.a.m.d.

Sistemul de fişiere inglobat este un sistem compatibil i386, pentru microprocesoare care se bazează pe arhitectura Intel 80386. [10]

Kernelul şi firmware-ul pentru RaspBMC au următoarele locaŃii în sistemul de fişiere [10]:

• /opt/vc,

• componente pentru butare precum start.elf şi bootcode.bin,

• modulele de kernel (/usr/lib/). Există o serie de diferenŃe notabile ale kernelului RaspBMC comparativ cu versiunea

Raspberry Pi oficială:

• performanŃa

• suport pentru module îmbunătăŃit

• patch-uri LIRC

• optimizări IO

• optimizări ale planificatorului de task-uri

• suport pentru virgulă mobilă de tip “hard”

Figura 13: InterfaŃa RaspBMC [10] 2.3 Arch Linux ARM

Arch Linux ARM reprezintă o portare a sistemului Arch Linux pentru procesoarele ARM,

în particular pentru Raspberry Pi. Acest sistem oferă suport pentru seturile de instrucŃiuni ARMv5te soft-float şi ARMv6 şi v7 hard-float. Astfel, lista platformelor pe care se poate instala sistemul este mărită: pentru ARMv5, se regăsesc dispozitive de la Olimex (OLinuXino), OpenRD, PogoPlug, Seagate (DockStar, GoFlex), SheevaPlug, TonidoPlug, ZyXEL (NSA), pentru ARMv6, Raspberry Pi şi PogoPlug, iar pentru ARMv7, Allwinner, Freescale (UDOO), Marvell, Samsung (ODROID), TI (BeagleBoard), Xilinx (ZedBoard) şi nVidia (TrimSlice). [11]

Arch Linux este un sistem al căror dezvoltatori realizează zilnic update-uri. Există multiple depozite (repository) ale sistemului, în funcŃie de necesităŃile utilizatorului [11][12]:

• Varianta de bază (core), care conŃine toate pachetele necesare pentru a seta un sistem de bază,

• Extra, care include pe langă pachetul de bază, şi alte programe şi medii desktop, • Comunitate, care conŃine pachete create şi votate de către comunitate, cu suficiente voturi

cât să fie considerate de încredere, • Multilib, un depozit centralizat pentru utilizatorii x86 pe 64 de biŃi pentru a oferi suport de

aplicaŃii 32-bit într-un mediu 64-bit. Există numeroase kerneluri alternative pentru Arch Linux, în afara celui de Linux. Variante oficiale includ şi kernelul linux-lts (Long Term Support), pentru microprocesoare de arhitectură i686 şi x86 pe 64 de biŃi. [11][12] Comunitatea Arch Linux a format grupul de kerneluri denumit AUR (Arch User Repository) în care se regăsesc kerneluri precum linux-bfs (pentru calculatoare cu mai putin de 4096 de nuclee şi manager de tip BFQ I/O) şi linux-git, care include sursele lui Linus Torvalds. Arch Linux suportă majoritatea sistemelor de fişiere, alegerea lor putând fi făcută în funcŃie de avantaje, dezavantaje şi cerinŃele utilizatorului. Spre exemplu, sistemul ext2 (Second Extended Filesystem) este un sistem matur de fişiere, stabil, dar are lipsuri în privinŃa logării activităŃii fişierelor şi a barierelor. Aceste lipsuri se resimt în cazul căderilor de tensiune sau a căderii sistemului de operare, iar verificările la repornire asupra partiŃiei root sau a partiŃiei /home pot fi de durată mare. Aceste neajunsuri au fost corectate în variantele următoare, ext3 şi ext4. Alte sisteme de gestiune a fişierelor suportate sunt NTFS, ZFS, XFS, JFS, exFAT, btrFS, ş.a.m.d. Există numeroase utilitare disponibile pentru Arch Linux pentru a facilita utilizarea sistemelor de fişiere precum e2fsprogs pentru ext2, ext3 şi ext4, ntfs-3g pentru NTFS, ş.a.m.d. [11][12]

Figura 14: InterfaŃa Arch Linux [11]

2.4 RISC OS RISC OS este un sistem de operare proiectat de Acorn Computers şi lansat pe piaŃă prima

dată în 1987. Acesta a fost proiectat pentru a rula în mod special pe microprocesoare de tip ARM, de asemenea create de Acorn. Primul uz comercial al sistemului a fost pe seria de calculatoare Archimedes. De-a lungul timpului, sistemul a mai fost folosit şi în alte serii de computere de la Acorn precum R line, RiscPC, A7000, ş.a.m.d. [13]

După 1998, dezvoltarea sistemului s-a separat de Acorn, continuând sub companii precum Castle Technology şi regăsindu-se în computere precum Iyonix şi A9home. Din 2012, sistemul de operare este menŃinut de către RISCOS Ltd şi comunitatea RISC OS Open. [13]

Cele mai recente versiuni stabile rulează pe procesoarele RiscPC ARMv3/ARMv3, Iyonix ARMv5 şi Cortex-A8 ARMv7 (regăsite în BeagleBoard şi Touch Book). După lansarea lui Raspberry Pi, a fost lansată şi o versiune compatibilă cu procesorul ARMv6 din SoC-ul plăcii. [13] Sistemul de operare este un sistem single user care foloseşte multitasking cooperativ. Multitasking-ul cooperativ (CMT) mai este cunoscut şi ca time-sharing (divizare în timp) şi reprezintă împărŃirea timpului de execuŃie al CPU între toate procesele (task-urile) active din sistemul de calcul. În timp ce majoritatea sistemelor de operare folosesc multitasking preemptiv (PMT) şi multithreading, RISC OS rămâne un sistem CMT. Pentru că protecŃia memoriei sistemului de operare nu este obligatorie, mai mulŃi utilizatori au cerut trecerea la PMT. [13] Kernelul sistemului RISC OS este de tip single-tasking (un singur task), CMT fiind oferit de modulul WindowManager şi poate controla intreruperile, serviciile DMA, alocarea memoriei şi afişarea video. [13] RISC OS este creat din module care pot fi adăugate şi înlocuite. Modulele sunt accesate prin întreruperi software (SWI), similare cu apelurile de sistem din alte sisteme de operare. [13] Numeroase sisteme de operare au interfeŃe binare de aplicaŃie (ABI) definite pentru a manevra filtre şi vectori. Sistemul de operare oferă numeroase moduri prin care programatorul poate intercepta şi modifica operaŃiile ABI. Acest lucru simplifică sarcina de a modifica comportamentul, fie că este vorba de GUI sau mai adânc. Ca rezultat, există o serie de programe de utilizator care permit modificarea aspectului şi comportamentului sistemului. [13] Sistemul de fişiere este orientat pe volume: vârful ierarhiei fişierelor este un volum (pe disc sau partajat prin reŃea) prestabilit prin tipul de sistem de fişiere. Pentru a determina tipul fişierului, RISC OS foloseşte metadate în locul extensiilor de fişier. Metadatele reprezintă “date despre date”. Acestea oferă informaŃii despre diferite aspecte ale datelor, precum: modurile de creare a datelor, scopul datelor, timpul şi data creării, autorul (creatorul) datelor, localizarea locului creării în reŃeaua de calculatoare, utilizări standard ale datelor. Pentru a mapa formate de date comune din alte sisteme, RISC OS conŃine un modul special numit MimeMap. [13]

Două puncte ( : ) sunt utilizate pentru a separa sistemul de fişiere de restul căii fişierului. Rădăcina (root) este reprezentată prin semnul dolarului ( $ ) şi directoarele sunt separate prin punct ( . ). Extensiile care aparŃin altor sisteme de fişiere sunt afişate folosind un slash ( / ), spre exemplu fişierul abc.txt devine abc/txt. [13] Pentru exemplificare, ADFS::HardDisc4.$ este rădăcina discului numit HardDisc4 care foloseşte sistemul de fişiere ADFS. [13] Tipurile de fişiere specifice RISC OS pot fi prezervate în alte sisteme prin folosirea tipului hexazecimal “.xxx” în numele fişierelor. Dacă se foloseşte software multiplatformă, tipurile de fişiere pot fi utilizate pe alte sisteme prin renumirea ataşării '/[extension]' în numele de fişier din RISC OS. [13] Sistemul de fişiere RISC OS poate utiliza fişiere similare cu imaginile de discuri. Astfel, se pot manevra transparent arhive şi fişiere similare, care apar ca directoare cu proprietăŃi speciale. Fişierele din interiorul fişierului imagine de disc apar într-o ierarhie care are ca rădăcină arhiva

părinte. Nu este necesar ca arhiva să conŃină datele către care referă; acestea pot fi legături simbolice către alte sisteme de fişiere aflate în reŃea, în care se află datele respective. [13] [14] InterfaŃa de programare a aplicaŃiei (API) pentru stratul abstract al sistemului de fişiere foloseşte un offset de 32 de biŃi pentru fişiere, făcând ca cel mai mare fişier singular lung de 4 GB (pentru aproximativ 1 B). Totuşi, înaintea versiunii 5.20, stratul de abstractizare al sistemului de fişiere şi multe dintre sistemele de fişiere native ale RISC OS au limitat suportul la 31 de biŃi (sub 2 GB), pentru a evita întâmpinarea unor extinderi negative a fişierelor când acestea sunt reprezentate în complement faŃă de 2.

Figura 15: InterfaŃa RISC OS [16]

Versiunea portată a RISC OS pentru Raspberry Pi este o versiune în curs de dezvoltare, care, în acest stagiu, este formată din trei componente [14] [15]:

• Un strat de abstractizare hardware pentru SoC-ul Broadcom BCM2835 • O versiune modificată a kernelului care oferă suport pentru nucleele CPU ARMv6 • Module adiŃionale de drivere precum VCHIQ, DWCDriver, etc.

Această versiune este funcŃională pe toate platformele Rasberry Pi dezvoltate până în

prezent. Prin spaŃiul redus pe care îl ocupă în memorie, de aproximativ 6 MB, incluzând un sistem de ferestre şi câteva aplicaŃii de bază, idee pornită de la implementarea pe un procesor ARM2 de 8 MHz cu 512 KB memorie RAM din anii 1980, sistemul de operare RISC OS prezintă avantaje importante în domeniul embedded în care constrângerile spaŃiului de stocare şi de procesare sunt foarte mari. [15]

Capitolul 3 – Comparatie intre sistemele prezentate [17] Sistemele prezentate în cadrul acestei lucrări sunt majoritar derivate din Linux şi astfel, au proprietăŃi similare. O comparaŃie între ele trebuie să Ńină cont de criterii atât obiective, cât şi subiective. Dintre criteriile obiective propuse, se regăsesc dificultatea de punere în funcŃiune a sistemului (instalare), pachetul de aplicaŃii disponibil, gradul de integrare diverse aplicaŃii şi posibilitatea de dezvoltare a sistemului. Criteriile subiective sunt dependente de utilizator, printre acestea regăsindu-se criterii precum interfaŃa dintre sistem şi utilizator şi dificultatea de utilizare a sistemului. Pe baza primului criteriu, datorită numeroaselor documentaŃii disponibile pe Internet, sistemele Raspian, RISC OS şi RaspBMC au un grad redus de dificultate în ceea ce priveşte instalarea, paşii ce trebuie urmaŃi în general fiind scrierea imaginii sistemului pe cardul SD, inserarea în slotul SD de pe Raspberry Pi şi bootarea normală a sistemului, cu configurările necesare. Instalarea sistemului ArchLinux prezintă un grad de dificultate crescut, deoarece utilizatorul trebuie să utilizeze un mediu de tip Terminal pentru a descărca, instala şi configura sistemul, acest lucru nefiind la îndemână unui utilizator comun. Dificultatea crescută de instalare contrastează cu performanŃa Arch Linux, unul dintre cele mai apreciate sisteme Linux. La capitolul pachetelor de aplicaŃe disponibile, liderul detaşat este Raspian cu peste 35000 de aplicaŃii disponibile, deoarece Raspian provine din Debian, unul dintre cele mai utilizate şi apreciate sisteme de operare Linux. RaspBMC urmează după, cu peste 20000 de aplicaŃii, pentru că, deşi şi acesta derivă tot din Debian, sistemul se adresează în principal aplicaŃiilor multimedia, restângând numărul aplicaŃiilor folositoare din pachetul iniŃial. Pentru Arch Linux sunt disponibile aproximativ 4600 de aplicaŃii, acestea fiind mai bine adaptate sistemului datorită strânsei legături din cadrul comunităŃii Arch. Date despre pachetele disponibile pentru RISC OS nu sunt disponibile la data prezentă. De la lansare, Raspberry Pi este utilizat în tot mai multe aplicaŃii. Dintre acestea, se regăsesc aplicaŃii precum computer personal (desktop, laptop, tabletă), aplicaŃii multimedia (centru de divertisment, etc.), aplicaŃii embedded (robotică, sisteme inteligente, etc), ş.a.m.d. Astfel se pot clasifica în funcŃie de aplicaŃie şi sistemele disponibile. Pentru utilizarea de tip computer personal, Raspian şi Arch Linux sunt alegerile cele mai potrivite, datorită pachetelor de aplicaŃii disponibile, a stabilităŃii sistemului şi a interfeŃei facile cu utilizatorul. Aceste sisteme au fost concepute pentru acest domeniu, corespondenŃele lor în domeniul PC fiind deja consacrate. RISC OS este o alternativă bună, fiind dezavantajat de faptul că portul Ethernet este dezactivat datorită instabilităŃii sistemului, iar activarea lui poate crea probleme pentru utilizatorii începători. RaspBMC are ca aplicabilitate domeniul multimedia, existând astfel numeroase constrângeri la utilizarea în regim de computer personal. Pentru aplicaŃiile embedded, sistemul Raspian oferă numeroase facilităŃi prin care se poate utiliza interfaŃa GPIO a plăcii Raspberry Pi, în limbajele C, Python, Perl, Java, etc. Astfel de facilităŃi sunt oferite şi de către RaspBMC, pentru a extinde sistemul multimedia oferit în direcŃii aflate la alegerea utilizatorului. Dezavantajul acestor două sisteme constă în spaŃiul mare ocupat pe mediul de stocare. De asemenea, utilizarea într-o aplicaŃie de tip embedded duce la o constrângere a sistemelor, acestea fiind concepute în principal pentru aplicaŃiile menŃionate anterior. Arch Linux oferă, de asemenea, un mediu stabil pentru embedded. Un potenŃial mare îl prezintă sistemul RISC OS, datorită spaŃiului mic ocupat pe mediul de stocare şi a procesării CMT. AplicaŃiile embedded sunt singulare, în general, alte procese fiind redundante. Astfel, spaŃiul necesar este redus direct proportional cu costurile iar procesarea este foarte rapidă, datorită procesorului ARMv6. Din punct de vedere al comunităŃii consacrate fiecărui sistem şi a posibilităŃii de dezvoltare a sistemului, Raspian şi RISC OS au cele mai mari si dezvoltate comunităŃi, existând numeroase versiuni precompilate de kerneluri disponibile în funcŃie de aplicaŃia dorită şi a dispozitivelor

hardware utilizate. Arch Linux prezintă de asemenea o comunitate în creştere, iar versiuni ale RaspBMC care extind aplicaŃia de sistem multimedia sunt deja disponibile. Din punct de vedere al interfeŃei cu utilizatorul şi a dificultăŃii de utilizare, Raspian este alegerea potrivită, datorită provenienŃei Debian, sistem consacrat pentru aceste criterii. Arch Linux este asemănător la acest capitol, fiind mai configurabil şi mai robust. RISC OS are o interfaŃă minimalistă, bazată pe sistemul din anii 1980, iar ca utilizabilitate, utilizatorul necesită anumite cunoştinŃe apriori.

Capitolul 4 – Concluzii

ApariŃia microcalculatorului Raspberry Pi a reprezentat începutul unui nou stagiu în domeniul embedded. Pe lângă aportul adus în educaŃie, conform cu scopul pentru care a fost creat, Raspberry Pi a arătat lumii informatice că este posibilă crearea unui produs cu un raport cost-calitate foarte bun, deschizând calea pentru numeroase alte produse similare. Un produs de referinŃă pentru viitor este microcalculatorul Parallella (figura 16). [18]

Figura 16: Microcalculatorul Parallela [18]

Acest microcalculator este bazat pe cipurile multinucleu Epiphany dezvoltate de către compania Adapteva. Cipurile Epiphany constă într-o arie scalabilă de procesoare simple RISC programabile în C/C++, interconectate printr-o reŃea în cip rapidă, într-o arhitectură formată dintr-o singură memorie comună unificată. [18] Printre caracteristicile de bază a plăcii, regăsim [18]: • Unitatea centrală de procesare ARM A9 dual-core din seria Zynq-7000 (Z-7010 or Z-7020) • Un accelerator multinucleu Epiphany cu 16 sau 64 de nuclee • 1 GB RAM • interfaŃă de card MicroSD • 2 x USB 2.0 • 4 conectori de expansiune de uz general • port Ethernet 10/100/1000 • port HDMI • suport pentru Linux

Figura 17: Diagrama bloc a microcalculatorului Parallella [18]

Având dimensiunile de aproximativ 86x55 mm, comparabile cu Raspberry Pi, versiunea finală de 66 de nuclee va livra peste 90 de GFLOPS, fiind de dimensiunea unui card bancar şi consumând aproximativ 5 W pentru o încărcare tipică. În anumite aplicaŃii, Parallella va oferi performanŃe brute mai mari decât un server de ultimă generaŃie mult mai costisitor, care consumă aproximativ 400 W. PreŃul estimativ al plăcii este de 99 de dolari. [18]

Capitolul 5 – Bibliografie [1] - http://en.wikipedia.org/wiki/Embedded_system [2] - http://en.wikipedia.org/wiki/Raspberry_Pi

[3] - http://elinux.org/RPi_Distributions

[4] - http://www.makeuseof.com/tag/7-operating-systems-you-can-run-with-raspberry-pi/

[5] - http://makezine.com/magazine/make-36-boards/which-board-is-right-for-me/ [6] - Anatomy of the Linux kernel – History and architectural decomposition – M. Tim Jones

[7] - http://www.ibm.com/developerworks/library/l-linux-kernel/

[8] - http://www.raspbian.org/RaspbianAbout

[9] - Getting Started with Raspberry Pi - Matt Richardson, Shawn Wallace

[10] - http://www.raspbmc.com/about/

[11] - http://archlinuxarm.org/platforms/armv6/raspberry-pi

[12] - https://wiki.archlinux.org/index.php/Table_of_Contents

[13] - http://en.wikipedia.org/wiki/RISC_OS

[14] - https://www.riscosopen.org/wiki/documentation/show/Hardware%20Abstraction%20Layer

[15] - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=55&t=22093

[16] - https://hylobatidae.org/?action=articlelist&article_start=60 [17] - http://www.techradar.com/news/software/operating-systems/raspberry-pi-operating-systems-5-reviewed-and-rated-1147941 [18] - http://www.adapteva.com/products/parallella/parallella/