Documente Academic
Documente Profesional
Documente Cultură
Curs 9
Sisteme Încorporate
8. Sistemele Raspberry Pi
8.1. Structură
Microcalculator simplu, cu formă de placă, fără carcasă, ușor
(aprox. 45-50 g), de dimensiuni mici (86 x 54-56 x 15-21 mm);
Prima variantă: 2011 – ultima variantă: 2019;
Sisteme Încorporate
3 seturi de instrucțiuni:
Setul ARM 32 biți: asigură performanță maximă;
Setul Thumb 16 biți:
Este un subset al setului anterior și folosește resursele procesorului la nivel de
32 biți: spațiu de adrese, registre, ALU, transferul cu memoria;
Are instrucțiuni corespondente pe 32 biți;
Performanță mare, cod mai compactat ca cel corespondent pe 32 biți;
Performanță mai mare și cod mai compactat decât în cazul utilizării unui set
clasic pe 16 biți care rulează pe o structură pe 32 biți;
Setul Java 8 biți:
Asigură suport pentru execuția codului Java;
Blocuri:
Instruction TCM, Data TCM (Tightly Coupled Memory): zone de memorie
rapide, de dimensiuni mici, situate aproape de CPU;
ETM Interface (Embedded Trace Macrocell): asigură urmărire în timp real
a unor semnale din nucleu;
Sisteme Încorporate
Integer Core:
Conține 40 registre de câte 32 biți;
Procesează valorile întregi;
Include bandă de asamblare;
Load/Store Unit:
Tratează toate operațiile de încărcare și depunere;
Prefetch Unit:
Se ocupă de apeluri; folosește predicția ramurilor;
Memory Management Unit:
Se ocupă de accesele la memorie;
Vector Floating Point Coprocessor:
Procesează operațiile în virgulă flotantă, în simplă și dublă precizie;
VIC Interface (Vector Interrupt Control):
Procesează cererile de întrerupere;
Tratează semnalele externe;
JTAG Interface:
Se folosește la depanare;
Sisteme Încorporate
Memoria cache:
4 way set associative cu dimensiune configurabilă 4 – 64 KO;
Înlocuirea liniilor din memorie se face prin Round Robin sau Pseudo
Random (stabilit prin un rang din un registru);
Scrierea se face prin write-back sau write-through, stabilit de Micro TLB;
O linie de date conține atât date securizate cât și nesecurizate;
Sisteme Încorporate
Predicția:
Integer Core (IC) folosește predicția statică;
Prefetch Unit (PU) folosește predicția dinamică;
Când un salt condiționat este soluționat, PU primește informații de la IC și
alocă spațiu în memoria cache sau actualizează o intrare;
Salturile condiționate sunt soluționate la sau până la nivelul 3 din banda
de asamblare;
Predicția dinamică folosește istoria salturilor condiționate; prin intermediul
a 2 biți, se alege una din variantele:
Strong predict branch taken;
Weak predict branch taken;
Strong predict branch not taken;
Weak predict branch not taken;
Predicția statică:
Nu folosește istoria salturilor condiționate;
Regula este neexecuția salturilor condiționate înainte și execuția salturilor
condiționate înapoi;
Sisteme Încorporate
8.4. Software
8.4.1. Instalare
SO trebuie descărcat pe cardul SD; rulează mai multe implementări Linux și
non-Linux; varianta Linux cea mai răspândită: Raspbian; variantă Windows:
Windows 10 IoT Core;
Descărcarea din Windows, OS X și Linux:
Ptr. Linux și OS X: www.raspberrypi.org/downloads;
Ptr. Windows: trebuie descărcat Image Writer for Windows:
https://sourceforge.net/projects/win32diskimager ;
Gestiunea descărcărilor sistemelor de operare se poate face cu NOOBS
(New Out-Of-Box Software):
Poate fi preâncărcat pe card sau se poate descărca de la
www.raspberrypi.org/downloads;
La conectarea alimentării apare o listă de sisteme de operare;
Dacă se încarcă mai multe SO, NOOBS va cere alegerea unuia sau va lansa ultimul
SO încărcat;
Limbaje: Python, C, C++, Java, Ruby, Scratch, ...
Sisteme Încorporate
8.4.2. Configurarea Raspberry Pi
8.4.2.1. Raspberry Pi Configuration Tool
raspi-config – lucrează doar cu Raspbian Linux;
Lansare: sudo raspi-config;
Meniu text cu opțiunile:
Expand Filesystem
Change User Password
Enable Boot to Desktop/Scratch
Internationalisation Options
Enable Camera
Add to Rastrack
Overclock
Advanced Options
About raspi-config.
Sisteme Încorporate
Expand Filesystem:
Extinde sistemul de fișiere Raspbian pe întregul card;
Change User Password:
Raspbian include, în mod implicit, un singur cont utilizator numit pi,
password raspberry; bun pentru utilizarea privată;
În cazul unei utilizări cu acces public (de ex. WiFi, Internet) este
necesară modificarea datelor contului;
Enable Boot to Desktop/Scratch:
Raspbian începe prin afișarea unei interfețe bazată pe linii de comandă,
suficientă pentru multe aplicații;
Dacă este necesară GUI, atunci trebuie instalat un mediu desktop;
opțiuni:
Console: cere login cu username și passord, apoi comanda startx pentru a
încărca GUI;
Desktop: login automat cu datele implicite ale contului și încarcă GUI;
Scratch: încarcă mediul educațional Scratch;
Sisteme Încorporate
Internationalisation Options:
Change Locale: schimbă limba;
Change Timezone: schimbă ora locală (raportat la Greenwich Mean Time);
Change Keyboard Layout: schimbă configurația QWERTY a tastaturii;
Enable Camera:
Permite folosirea Raspberry Pi Camera Module;
Add to Rastrack:
Este o hartă a modulelor Raspberry Pi; este necesară înregistrarea;
Overclock:
Permite funcționarea la o frecvență a procesorului și memoriei mai mari ca
cele nominale;
Opțiuni: nominal: 700 MHz, 400 Mhz; modest: 800 MHz, 400 MHz; medium:
900 MHz, 450 MHz; high: 950 MHz, 450 MHz; turbo: 1000 MHz, 600 MHz;
Crește consumul, procesorul se încălzește, posibil ca unele module să nu
accepte toate opțiunile;
Sisteme Încorporate
Advanced Options:
Overscan: asigură concordanța între dimensiunile ecranului și ale imaginii
transmise;
Hostname: identificarea unui modul în o rețea se face cu hostname; dacă
se dispune de mai multe module legate în sistem, numele trebuie
schimbat, respectând anumite reguli;
Memory Split: asigură partiționarea memoriei (256 Mo sau 512 Mo) între
CPU și GPU; implicit, GPU are 64 Mo; pentru aplicații în care nu este
necesară grafică (de ex. web server), GPU nu are nevoie de memorie;
SSH (Secure Shell): permite accesarea Raspberry Pi prin rețea, de
exemplu atunci când funcționează ca un server și nu este nevoie să aibă
o tastatură sau/și un monitor; crește vulnerabilitatea modulului;
SPI: încarcă driverul pentru SPI;
Audio: decide conectorul pentru ieșirea audio: HDMI sau conectorul audio
de 3,5 mm;
Update: actualizează versiunea de raspi-config;
About raspi-config: prezintă instrumentul.
Sisteme Încorporate
8.4.2.2. Configurarea avansată
SoC BCM283x nu are posibilități de configurare similare PC-ului (nu
conține BIOS); configurarea avansată se face prin fișiere text config.txt și
cmdline.txt; există riscul de nefuncționare;
Hardware Settings - config.txt:
Modificarea display-ului;
Opțiuni de boot;
Overclocking;
Overvoltage;
Disabling L2 Cache - config.txt:
SoC dispune de memorie cache L2, 128 Ko, prevăzută inițial doar pentru GPU;
poate fi partajată cu CPU;
Memory Partitioning - config.txt:
Memoria (256 Mo sau 512 Mo) poate fi partiționată între CPU și GPU; GPU poate
primi 16 Mo – 128 Mo;
Enabling Test Mode - config.txt;
Software Settings - cmdline.txt;
Sisteme Încorporate
Modificarea display-ului:
Overscan_left, right, top, bottom; disable_overscan;
Framebuffer_width, height, depth: modifică dimensiunile caracterelor pe lățime,
înălțime, nr. de culori;
Sdtv_mode, aspect: stabilește modurile NTSC sau PAL, 4:3, 14:9 sau 16:9;
Hdmi_mode, drive;
Opțiuni de boot:
Stabilește modul de încărcare a nucleului Linux; stabilește rata de transfer serial;
Overclocking:
Stabilește frecvența CPU, GPU (core – pentru procesor, h264 – pentru datele
video în format H.264, isp – pentru a îmbunătăți rata de captură video (de ex. de la
cameră), v3d – pentru jocuri), SDRAM, UART, SD controller;
Overvoltage:
Tensiunea de alimentare nominală a SoC și SDRAM este 1,2 V; poate fi modificată
în domeniul 0,8 – 1,4 V în pași de 0,025 V;
Over_voltage pentru SoC, SDRAM, memoria pentru sistemul de I/E, logica de
comandă a memoriei.
Sisteme Încorporate
8.5. Aplicații
8.5.1. Comanda unui LED
LED conectat prin rezistență la pinul 11 (3,3 V);
Python: programul scris în un editor de text sau într-un IDE (IDLE pentru
Raspbian Linux);
Se importă bibliotecile GPIO și time; se setează GPIO și pinul 11 ca ieșire; se
salvează programul ca gpiooutput.py și se execută;
H3 Quad-core (Cortex
-A7) CPU; 1 – 1,2 GHz;
Mali 400 GPU;
Conector RJ45 ptr.
Ethernet;
Wireless LAN
Video 4K față de
Full HD la Pi3;
4 USB 2.0 + 1 USB OTG;
+ 1 Go RAM față de Pi3;
16 Go memorie de masă pe placă față de 0 la Pi3;
Lipsă suport pentru Bluetooth;
Preț 49 $.