Upload
daniel-din
View
76
Download
0
Embed Size (px)
DESCRIPTION
SMI
Citation preview
1.Sisteme embedded:
Sistem specializat care îndeplinește o funcție sau o serie de funcții foarte bine stabilite încă din
faza de proiectare. Sisteme embedded = Sisteme cu microprocesoare integrate.
Caracteristici: - sunt sisteme specializate (greu de modificat); ex: partea de comanda a unui frigider, a
unei masini de spălat etc.;elemente de sine stătătoare: telefonul mobil, mp3 player etc.;
sunt portabile; acest lucru implică: dimeniune redusă, formă compactă dar și necesitatea
de consum redus;
- costul sa fie cât mai mic; acest lucru implică: complexitatea sistemelor embedded trebuie
să fie minimă (să nu conțină componente performante), ele fiind construite pentru un
scop precis, fără a se face risipă de componente;
- funcționalitate bine definită: sistemul embedded trebuie să știe ce să facă;
2.Microprocesoare specializate – microcontrolere:
De cele mai multe ori sistemele embedded sunt echipate cu microcontrolere.
Caracteristicile microcontrolerelor:
- funcționează la frecvențe mici
- sistemele rezultate prin folosirea microcontrolerelor sunt foarte simple (numărul de
componente este mic)
- au memorie încorporată (atât memorie program cât și memorie de date) deoarece se
doresc circuite de mici dimensiuni la un cost cât mai mic.
- pot exista pe circuitul de microcontroler orice tip de circuit: porturi de intrare/ieșire,
timere etc
Avantaje: programul care rulează este efectiv pe microcontroler, perturbațiile magnetice,
electromagnetice etc nu au o influență la fel de mare asupra transferului de date între
microcontroler și memorii iar accesul la memorie este mai facil decât in cazul în care memoriile
se aflau în exteriorul microcontrolerului.
Dezavantaje: CPU-ul dispune de o putere mai mică de procesare din cauza faptului că aria de
siliciu a microcontrolerului este ocupată de celelalte circuite (memorii, timere, porturi I/O etc).
Exemple: - Familia Intel MCS51
- Familia Atmel AVR (ATmega)
- PIC-uri (Microchip)
3.Etape de proiectarea unui sistem (definirea sistemului):
- cerințe sistem: cuprind ce trebuie să facă sistemul
- cerințe funcționale: descriu cum face sistemul ceea ce se dorește;
- specificații tehnice: povestirea de dinainte este adusă în termeni tehnici
- specificații hardware: sunt alese componentele
- specificații software: este detaliată partea de programare
- specificații de testare: cum trebuie efectuate testele de funcționare
Cerinte sistem:
- Sunt date în general de client.
- Descriu în mod trivial ce funcții trebuie să îndeplinească sistemul
- Nu au un caracter tehnic dar este bine să fie cât de cât coerente
Cerinte functionale:
- Reprezintă traducerea cerințelor de sistem într-un formalism logic și tehnic adecvat
- Sunt realizate de către proiectant
- Nu impun soluții tehnice dar bun bazele unui necesar de componente
Specificatii tehnice:
- Specificațiile tehnice nu includ scheme electrice. În această secțiune sunt precizate
elementele care vor fi folosite în proiectarea sistemului, ele fiind alese în funcție de
capacități si necesitățile de funcționare.
- Se urmăresc următoarele aspecte:
– putere de calcul: necesară algoritmilor (în funcție de complexitatea acestora)
– interfețe sistem: dacă sistemul dorit necesită o interfață I2C iar sistemul proiectat
oferă interfețe paralele, seriale dar nu si I2C
– numărul de linii I/O: linii de comunicație cu exteriorul; numărul pinilor utilizați depinde de numărul dispozitivelor periferice cu care comunică circuitul
(traductoare, senzori etc)
– necesar memorie și arhitectură memorie
– răspunsul sistemului în timp real
– consumul dorit
– mediul de dezvoltare
– integrarea programului: unii producători au încorporat în dispozitivele produse
softul necesar funcționării echipamentului, soft care este protejat pentru a nu putea
fi copiat;
– cerințele de mediu: pentru același tip de circuit pot exista mai multe prețuri; ex: un
circuit care rezistă la temperaturi extreme este mai scump decât același circuit care
are o limită inferioară de temperatură;
– costul de întreținere: PDA-uri, rutere specializate etc; dacă există necesități de
upgrade a programului, costul de întreținere crește.
Specificatii hardware: - Indică soluții tehnice reale pentru fiecare componentă a sistemului
o Microcontroller
o Achiziție de date
o Interfațare cu utilizatorul
o Comunicații Specificatii software:
- Modelarea software a sistemului
- Importante în cazul sistemelor complexe
- Definire interfețe între componentele software ale sistemului (util în reutilizarea codului)
Specificatii de testare:
- Set de operații la care este supus sistemul în final în vederea îndeplinirii specificațiilor
funcționale
- Indică modul de comportare a sistemului la fiecare operație (de testare) și parametrii de
funcționare în cadrul fiecărui test
4. Proiectarea hardware:
Pentru a putea realiza proiectarea hardware pentru un sistem embedded este necesar să
dispunem de cerințe funcționale și tehnice detaliate. Orice omisiune sau greșeală în redactarea
specificațiilor funcționale poate necesita refacerea proiectării hardware.
Alegerea arhitecturii sistemului de memorie
Depinde de flexibilitatea dorită a sistemului de memorie. Depinde de modul în care se
implementează non-volatilitatea spațiului de program.
SoC – Sistem on Chip – un singur circuit care integrează toate controlerele din sistem și sistemul de memorie
Arhitectură clasică – microprocesor, sistem de memorie, controlere-periferice
Arhitectură multiprocesor – mai multe UCP – implică arbitrarea sau comunicația între acestea
Alegerea UCP-ului
- În funcție de arhitectura sistemului și arhitectura sistemului de memorie.
- Dimensiunea cuvântului (cantitatea de informații prelucrate)
- Puterea de calcul (complexitatea algoritmilor)
- Modalitățile de interfațarea cu restul circuitelor: magistrală sistem, interfațare serială sau
paralelă.
- Instrumentele (și costul acestora) de dezvoltare
- Instruirea (sau durata instruirii) personalului
- Costul kit-urilor de dezvoltare
- Suport
- Ciclul de viață a circuitelor
- Posibilitatea de programare și debug
Alegerea oscilatorului
- Frecvență (comunicația cu alte circuite, ElectroMagnetic Compatibility)
- Oscilator RC sau cuarț - Intern sau extern
Magistrala sistem
- Magistrală multiplexată
- Decodificarea adreselor
- Wait States – pentru interfațarea cu perifericelor mai lente
- DMA
- Arbitrarea accesului (în cazul multiprocesor)
- Analiza propagării semnalelor
Sistemul de memorie - Internă sau externă
- Tipuri de circuite: ROM / RAM
- RAM – SRAM / DRAM
- ROM – PROM / EPROM / EEPROM / FLASH
- NVRAM
- Circuite de stocare magneto-optice
Periferice
- Porturi I/O (paralele) – impedanță de intrare, curent debitat
- Porturi seriale – viteză de comunicație, niveluri logice
- Interfețe seriale intercircuit – compatibilitate
- Timere
- Watchdog
- PWM
- Controlere de tastatură și display
Interfețe seriale de comunicație intercircuit
- I2C – Inter-Intergrated Circuit – SCL/SDA – până la 127 periferice master-slave –
100kHz-3.4MHz – circuite de memorie, senzori
- SPI / Microwire – Serial Peripheral Interface – SCLK/MOSI/MISO/SS – numărul de
periferice limitate de semnalele de select a masterului – 1-70MHz – CAN/CNA, senzori
Condițiile de lucru pentru dispozitiv
- Temperatură
- Umiditate
- Vibrații - Perturbații electro-magnetice
- Electrostatic Discharge (ESD)
- Posibilitatea de alimentare cu energie electrică
- Emisiile electro-magnetice (EMC) și de zgomot ale dispozitivului
Interfața utilizator
Elemente de intrare:
– Butoane
– Tastaturi matriceale
– Tastaturi seriale (PS2)
Elemente de afișare:
– LED-uri
– Caractere pe 7 segmente
– LCD-uri (monocrome/color/alfanumerice/grafice)
Achiziție de date
- Senzori:
– Analogici (necesită convertoare)
– Digitali (de obicei seriali)
- Convertoare Analog Numerice
– Rată de eșantionare
– Precizie
Elemente de comandă
- Permit comanda unor elemente de putere (motoare, electro-valve, rezistențe de încălzire)
- Necesită obligatoriu separare galvanică (optocuploare)
- Necesită elemente de modificare a tensiunii de funcționare (relee, drivere de curent)
Analiză finală
- Toate componentele periferice (interfață utilizator, elemente de achiziție sau de
comandă) îmi conduc la un necesar de interconectivitate în cadrul sistemului (număr de
linii I/O, CAN, magistrale de comunicație)
- Se poate ajunge la modificarea opțiunii de alegere inițială a UCP sau chiar a arhitecturii
sistem
Modelarea sistemului
System engineering (1940 – Bell Laboratories) - știință interdisciplinară ce se ocupă de
partea de proiectare și management (de dezvoltare) pentru un sistem. E capabilă să determine
complexitatea sistemului pentru a permite proiectarea inițială și dezvoltarea corectă. Strâns
legată de control engineering, industrial engineering, project management.
Procesul de dezvoltare
Este văzut ca un proces de decompoziție (analiză detaliată) urmat de un proces de
recompoziție (integrare).Cerințele inițiale sunt analizate și redefinite din punct de vedere tehnic
pentru a fi împărțite în mai multe seturi de specificații necesare diverselor componente sau
activități de dezvoltare.
Modele și limbaje de modelare
Modelele utilizate în ingineria sistemelor fac referire la fazele ce trebuie parcurse în
modelarea sistemului (V, cascadă, spirală).
Limbajele de modelare permit ca rezultatul activității de modelare să aibă o formă
accesibilă și universal recunoscută (Data Flow Diagram, UML, SysML).
Object-Oriented Design
Proiectarea se bazează pe definirea unui set de obiecte (entități) ca elemente de bază în
realizarea modelării. Aceste elemente pot reprezenta acțiuni sau funcții și pot conține
informații. Elementele se pot deriva, moșteni, instanția ș.a.m.d. O astfel de abordare permite
reutilizarea modelelor, analiza și testarea acestora.
Limbaje de modelare
- UML – Unified Modeling Language
- OCL – Object Constrain Language
- MARTE (UML Profile) – Modeling and Analysis of Real-Time and Embedded Systems
- SysML – Systems Modeling Language
5. Interfața cu utilizatorul:
Rol: Interfața cu utilizatorul în cazul sistemelor embedded are de cele mai multe ori un rol
extrem de important fiind una dintre funcțiile majore ale sistemului. Excepție pot face acele
sisteme care sunt gândite să funcționeze autonom în medii greu accesibile.
Elemente de intrare
- Butoane, întrerupătoare
- Tastaturi matriceale
- Tastaturi seriale
- Senzori de mișcare, de presiune sau de accelerație
- Tablete sau dispozitive de tip mouse
- Recunoaștere vocală (microfoane)
Butoane / Întrerupătoare
- Permit transmiterea unei comenzi ”binare„ către un pin al microcontrolerului
- Butoanele implică revenirea = necesită o metodă rapidă de citire
- Buton cu revenire logică ?
Tastatură matriceală Scade numărul de linii necesare pentru interconectare (de la l*c la l+c)
Necesită activarea succesivă a liniilor și citirea coloanelor.
Senzori de accelerație
- Capacitivi
- Piezoelectrici (pe bază de cristale)
- Piezorezistivi
- Senzori pe bază de efect Hall
- Pe bază de transfer de căldură
Elemente de afișare
- Leduri
- Caractere pe 7 segmente
- LCD-uri alfanumerice monocrome
- LCD-uri grafice monocrome
- LCD-uri grafice color
HD4478 – LCD monocrom
- Linii de alimentare:
– VSS – GND
– VDD – +5V
– VEE – contrast
- Linii de comandă:
- RS – Register Select – face diferenţierea între date şi comenzi în ceea ce priveşte liniile
de date. RS=0 – Instruction Input, RS=1 – Data Input.
- RW – Read/Write – face diferenţierea între cicluri de citire şi scriere. RW=0 – scriere,
RW=1 – citire (interogare).
- E – Enable – semnal de activare a circuitului.
- Liniile de date D0-D7 permit schimbul efectiv de date între circuitul de comandă şi
dispozitivul LCD. În funcţie de modul de configurare al dispozitivului LCD pot fi
utilizate doar patru linii de date permiţând interfaţarea cu dispozitive de comandă pe 4
biţi.
- Atenţie! Standardul HD44780U nu este un standard care specifică modul de funcţionarea
al circuitului LCD ci un standard care specifică modul de funcţionare al controlerului
LCD prin intermediul căruia se lucrează cu LCD-ul.
6. Achiziția datelor:
Mărimile fizice înconjurătoare au o variație analogică. Chiar dacă vorbim de senzori digitali
nu înseamnă că în cadrul procesului de achiziție nu are loc o eșantionare. Excepție fac
achizițiile de tip limită (s-a depășit un anume nivel de exemplu)
Semnale analogice – conversie
Când lucrăm cu elemente de conversie trebuie precizat:
- plaja semnalului analogic (între ce limite variază semnalul analogic)
- precizia (pasul, perioada de eșantionare) – influențează valoarea digitală rezultată
- modul de calibrare – ne dă sensibilitatea dispozitivului
- necesarul de transfer: dacă citim o valoare analogică (temperatură, tensiune etc.) trebuie
să știm pe câți biți și la ce intervale este nevoie să culegem informația.
Funcționarea unui CAN
- Realizează eșantionare de la 0 la tensiunea de referință
- 2n intervale de eșantionare
- Rezoluția = Vref / 2n (n=8, Vref=5V, Rez=19.5mV)
Tipuri de CAN-uri
Diferă prin acuratețe (precizie), viteză de eșantionare și, bineînțeles, prin cost. Este foarte
important de știut modul în care funcționează un CAN pentru a putea face o alegere corectă
pentru procesul de eșantionare.
CAN cu urmărire
- Cel mai vechi și cel mai lent tip de ADC
- Timpul de eșantionare este dependent de tensiunea măsurată
CAN de tip flash
- Cel mai rapid dar și cel mai costisitor tip de CAN
- Are un număr de 2n comparatoare
CAN cu aproximări succesive
- Un timp puțin mai bun ca cel cu urmărire
- În loc să se efectueze o incrementare se efectuează o căutare binară
CAN cu integrare
- Partea integrativă se încarcă până la valoarea de intrare după care se măsoară timpul de
descărcare
- Lent dar componenta integrativă filtrează zgomotul
CAN sigma-delta
- Filtru trece jos este de fapt o componentă integrativă
- Lent dar cu o acuratețe mare (dată de frecvența ceasului)
CAN de tip half-flash
- Scade numărul de comparatoare față de CAN-ul de tip flash
Senzori
- Elemente care permit transformarea mărimii fizice măsurate în mărime electrică
(tensiune).
- Permit unui sistem de calcul achiziția și prelucrarea în scop decizional a unor mărimi
preluate din mediul înconjurător.
Termistorul
- Rezistență care își modifică caracteristica în funcție de temperatură
- Alternative:
– RTD (Resistance Temperature Detector) – fir de nichel, cupru sau platină
– Termocuplu (are o plajă de măsurare mai mare)
Senzori optici – slotted switched
- Mecanism bazat pe întreruperea unei raze luminoase de către un obiect în mișcare –
generează un tren de impulsuri
- Regăsit la mouse-urile mai vechi
Senzori optici – bazați pe reflexie
- Funcționare similară ca la slotted switched dar obiectul în mișcare este suprafața
- Similar cu funcționarea mouse-urilor optice
Senzori de imagine – CCD
- Change Cupled Device
- O suprafaţă care se încarcă electric sub bombardamentul fotonilor, o arie de siliciu care
capătă încărcare electrică. Și aici avem o plajă de măsurare: plaja de sus e culoarea albă.
- Organizarea se face in felul următor: sub forma unei linii (linear CCD); pur şi simplu
necesită mişcare; de ex: se obține o line de imagine.
- Senzorii CCD ne dau doar intensitatea nu şi culoarea, existând două posibilităţi pentru a
face acest lucru: să se pună un senzor pentru fiecare culoare RGB ori să existe câte o linie
pentru fiecare culoare cu un filtru de culoare (FTB luminos) ori să se ia o prismă care
face descompunerea luminii, astfel realizându-se camere care vad color.
Senzori de imagine – Matrix CCD
- Matrix CCD – văd imaginea completă
- Problema la aceşti senzor este faptul că pentru fiecare pixel avem nevoie de conversie
analog-digital, rezultând un efort informaţional enorm.
- Pentru pixelii CCD-ului există codecuri. Nu putem face eşantionare de 800x600 şi să o
transmitem. Trebuie făcută compresie.
7. Comandă și control:
Sistemele embedded au de multe ori ca funcție centrală comanda unor dispozitive externe.
Comanda poate fi numerică / binară – aprinde un led sau deschide o ușă – dar poate avea și un
caracter mai delicat precum menținerea unui parametru fizic într-o anumită plajă – comanda
unui rezistențe de încălzire pentru a menține o anumită temperatură, menținerea turației unui
motor – comandă de tip control.
Metode de control
- Buclă deschisă – comandă oarbă, fără feedback; pentru aprinderea unui led este ok dar
pentru o comanda de încălzire nu este rezonabilă.
- Comandă cu reacție negativă
- Comandă bazată pe microprocesor
Comandă cu reacție negativă
- Reacția negativă prin intermediul amplificatorului
operațional permite stabilizarea comenzii.
- Tot nu avem feedback dar avem o „netezire” a comenzii.
Comandă bazată pe microprocesor
Control proporțional
- Netezește șocurile datorate comenzilor de tip închis/deschis.
- Evităm șocurile puternice și uzura dispozitivului comandat.
Probleme ce pot afecta comanda
- Perturbații - Saturarea senzorului sau a elementului comandat
- Timpul de răspuns (de calcul)
- Apariția unor ferestre „fără comandă”
Izolarea galvanică
- Absolut necesară dacă existe diferențe de tensiune
sau curent între montajul de comandă și cel comandat!!!
- Poate fi realizat prin optocuploare, relee magnetice…
- Atenție!!! Masă comună conduce la non-izolare galvanică.
PWM vs. Comandă în tensiune
- PWM consum mai mic
- Comandă în tensiune permite ajungerea în regim complet de funcționare
8. Comunicații: Chiar dacă de cele mai multe ori funcționalitatea sistemelor embedded se rezumă la execuția
unei sarcini simple cu efect local există situații în care este necesar ca sistemul să poată efectua
comunicații la distanță.
Exemple: transmisia parametrilor măsurați la o stație centrală – sistem de achiziție distribuit,
interfață utilizator la distanță – echipamente industriale aflate la distanță de consola de
comandă, transmiterea unor comenzi la distanță – sistemul de navigație a unei rachete ș.a.m.d.
Comunicație serială RS232
- Standard de comunicație serială introdus în 1962
- Permite comunicația între două dispozitive (DTE – Data Terminal Equipment,
DCE – Data Communication Equipment).
- Distanța maximă aproximativ 15 metri.
- Permite transmisia sincronă sau asincronă.
Comunicație serială RS485
- Standard de comunicație derivat din RS422
- Permite până la 32 de dispozitive (sau chiar 256)
- Distanța maximă 1200 metri (cu ajutorul repetoarelor de semnal până la câțiva km)
- Viteze de comunicații între 100kbs și 35Mbs
Bluetooth
- Standard radio de comunicație multidispozitiv
- Distanță maximă 100 metri
- Exemplu de modul bluetooth: YBM-1200
o Interfață USB, UART, SPI
9. Proiectarea software:
Proiectarea software implică rezolvarea câtorva probleme:
- Sistematizarea specificațiilor funcționale pentru a putea fi implementare sub forma unui
program – diagrame data flow, diagramă de stare, flow charts, pseudocod – constituie
specificațiile software
- Alegerea unei arhitecturi de program – buclă deschisă, sistem de întreruperi, multitasking
- Alegerea instrumentelor pentru implementarea și testarea programului – asambloare,
compilatoare, instrumente de tip JTAG
- Managementul procesului de dezvoltare
Diagrame data flow
- Identifică procesele principale din sistem și descriu modul în care informația (comenzi,
achiziție de date, evenimente) circulă între aceste procese
- Nu descriu condiții / nu identifică stările decizionale
- Utile pentru identificarea funcțională majoră
Diagrama de stare
- Identifică stările sistemului și tranzițiile între stări
- Pun accentul pe evenimentele care declanșează trecerea dintr-o stare în alta
- Reprezintă un nivel mai detaliat necesar pentru a putea implementa procesele
Diagrame flow charts
- Detaliază efectiv procesul
- Ne arată atât tranzițiile și factorii care le determină cât și partea decizională a procesului
- Formă destul de apropiată de codul propriu-zis
Pseudocod
- Descriere a unui algoritm într-o formă apropriată de limbajul uman
- Respectă un formalism minimal
Exemplu:
IF <condition>
DO stuff;
ELSE
DO other stuff;
Avantajele sistematizării specificațiilor funcționale
- Implementare riguroasă
- Posibilitatea reutilizării unor părți din partea de proiectare în cazul modificării hardware
sau a instrumentelor software
- Urmărirea corectă a efectelor unei modificări în specificațiile funcționale
ATENȚIE! O greșeală în realizarea unei diagrame sau în pseudocod conduce la
implementarea sigur greșită a codului…
Arhitecturi de program
- Buclă infinită – verificarea intrărilor și efectuarea operațiilor necesare în cadrul unei
bucle infinite.
- Mai multe bucle infinite între care efectuăm diverse tranziții. - Buclă infinită + sistem de întreruperi – necesitatea de cod reentrant.
- Multitasking.
Management break
- Arhitectura programului influențează în mod crucial atât modelarea sub formă de
pseudocod cât și codul propriu-zis.
- Alegerea arhitecturii programului sau a uneltelor de dezvoltare nu trebuie să fie sarcini
ale analistului sau ale programatorului ci ale managerului de proiect (șef de proiect,
arhitect, senior …).
Alegerea limbajului de programare
- Limbaj de asamblare – programare mai eficientă (memorie – dimensiune & timp de
acces, utilizare periferice).
- Limbaj de nivel înalt – timp mai scurt de învățare, portabilitate și reutilizare a codului.
Alegerea mediului de dezvoltare
- Maturitatea mediului de dezvoltare (moștenirea bugurilor mediului de programare).
- Producătorul mediului de dezvoltare.
- Intefață IDE.
- Biblioteci disponibile.
Alegerea altor instrumente utile
- Simulatorul – integrat adesea în mediul de dezvoltare dar nu întotdeauna.
- Mecanisme de debug conectate direct la platformă – intefață JTAG (IEEE-1149.1).
- Metode de încărcare / transfer a programului în memoria internă a microcontrolerului
(ISP, ICSP).
Alte probleme legate proiectarea și testarea software
- Durata de desfășurare a proceselor fizice (timpul în care urcă liftul între etajul 1 și 2).
- Probleme de funcționare hardware (funcționarea defectuoasă a unui senzor).
- Întârzieri datorate arhitecturii hardware (periferice lente, arbitrare pe magistrala sistem).
- Perturbații diverse.
- Limitări hardware (UCP, dimensiunea memoriei, viteză de comunicație).
- Depanarea (de multe ori trebuie efectuată de personal fără pregătire tehnică avansată).
- Priorități în funcțiile de sistem (butonul de la ce etaj este prioritar?).
- Solicitări particulare de la client (limbaj de dezvoltare, specific interfață utilizator)
- Partiționarea codului.
- Caracteristicile de timp real.
- Comentarea corespunzătoare a codului.
- Realizarea de instrucțiuni de utilizare.
- Implementarea elementelor la modă.
10. Programarea în limbaj de nivel înalt
- µVision – Mediu integrat de dezvoltare (IDE)
– A51 Macro Assembler
– C51 ANSI C Compiler
– BL51 Code Banking Linker/Locator
– OH51 Object-HEX Converter
– OC51 Banked Object Converter
- Suportă o mare varietate de microcontrolere din familia MCS51, 251, 166, ARM.
De ce C ?
- Dezvoltare și mentenanță mai simplă
- Reutilizare a codului
- Programare structurată
- Modularitatea codului
- Ușurința de implementare a algoritmilor
- Utilizarea unui limbaj bine cunoscut
Particularități ale Keil C (față de ANSI C)
- Tipuri de date
o Bit o char / unsigned char 8 bits
o int / unsigned int 16 bits
o long / unsigned long 32 bits
o float / double 32 bits
o generic pointer 24 bits
- SFR
o sfr SCON = 0x98;
o sbit TI = 0x99;
Zone de memorie
- DATA – Partea inferioară a memoriei de date internă. Adresare directă într-un ciclul
mașină.
- BDATA – Cei șase octeți adresabili la nivel de bit din memoria internă de date.
- IDATA – Partea superioară a memoriei interne de date (la dispozitive de tip 8x52).
Adresare indirectă.
- PDATA – Memorie externă de date (până în 256 bytes) adresabilă indirect pe baza unui
registru de uz general (MOVX @Rn). Durează două cicluri mașină.
- XDATA – Memorie externă de date la care se face accesul pe baza lui DPTR.
- CODE – Memorie externă program la care accesul se face pe baza lui DPTR:
Dimensiunea pointerilor
- generic pointer 3 bytes
- XDATA pointer 2 bytes
- CODE pointer 2 bytes
- DATA pointer 1 byte
- IDATA pointer 1 byte
- PDATA pointer 1 byte
Exemple
unsigned char idata system_status=0;
float pdata outp_value;
unsigned int code unit_id;
char *generic_ptr;
char data *xd_ptr;
inp_byte=XBYTE[0x8500];
inp_word=XWORD[0x4000];
c=*((char xdata *) 0x0000);
XBYTE[0x7500]=out_val;
Exemplu de translatare
#include <reg51.h>
unsigned char pdata inp_reg1;
unsigned char xdata inp_reg2;
void main(void) {
inp_reg1=P1;
inp_reg2=P3;
}
Întreruperi
void timer0(void) interrupt 1 using 0 {
TR0=0;
TH0=RELOADVALH;
TL0=RELOADVALL;
TR0=1;
tick_count++;
printf("tick_count=%05u\n", tick_count);}
„Lucruri” ce trebuie evitate în Keil C
- Declararea unor variabile de tipuri mai mari decât este necesar (se încurajează utilizarea
variabilelor de tip bit)
- Utilizarea unor variabile cu semn
- Utilizarea virgulei mobile (fpsave, fprestore)
- Declararea de variabile globale (regiștrii vs. XDATA; multitasking)
- Utilizarea memoriei externe pentru variabile des utilizare
- Utilizarea de pointeri generici
- Se recomandă utilizarea:
o funcțiilor intrinseci (_crol_, _cror_, _testbit_)
o Macrourilor în locul funcțiilor
#define led_on() {\
led_state=LED_ON; \
XBYTE[LED_CNTRL] = 0x01;}
Modele de alocare a memoriei
Small memory model – alocarea implicită se face în DATA
Compact memory model – alocarea implicită se face în PDATA
Large memory model – alocarea implicită se face în XDATA
MOV R0,#inp_reg1
MOV A,P1
MOVX @R0,A
MOV DPTR,#inp_reg2
MOV A,P3
MOVX @DPTR,A
Librării nereentrante
Alocarea dinamică a memoriei
- Nu este indicată
- E posibilă în XDATA
typedef struct entry_str {
struct entry_str xdata *next;
char text[33];
}
entry xdata *newptr;
newptr=malloc(sizeof(entry));
sprintf(newptr->text, "entry number one");
Declararea adresei unei variabile
unsigned char data byteval _at_ 0x32;
unsigned char xdata inpreg _at_ 0x4500;
unsigned char inpval;
inpval=inpreg;
inpval=XBYTE[0x4500];
Mixarea codului ASM și C
#include <reg51.h>
extern unsigned char code newval[256];
void func1(unsigned char param) {
unsigned char temp;
temp=newval[param];
temp*=2;
temp/=3;
#pragma asm
MOV P1, R7 ; write the value of temp out
MOV P1, #0 ; clear P1
#pragma endasm
}
11. Sisteme de operare specializate:
Funcțiile unui sistem de operare
- Gestionează task-urile
- Face legătura între hardware și utilizator
- Realizează anumite sarcini specifice
- Gestionează resursele sistem
Sisteme operare embedded
- Rulează pe platforme de tip embedded
- Permit multitasking (funcții complexe)
- Permit scrierea de software mai rapid (datorită interfațării cu hardware-ul – funcții sistem)
- Pot fi hard RTOS / soft RTOS / uz general
- Pot fi proprietar sau open-source
Criterii de evaluare în alegerea SO
- Categoria din care face parte sistemul
- Resursele hardware
- Timpul de proiectare/producție/lansare
- Cost
- Competențe necesare
Categoria sistemului
- sisteme din industria auto
- industria aeronautică / sisteme militare
- categorii de larg consum
- sisteme medicale
- dispozitive de rețea
- sisteme din industrie
Resurse hardware
- procesorul: acest aspect limitează foarte mult alegerea SO deoarece majoritatea
sistemelor de operare sunt gândite pentru anumite arhitecturi.
- Memoria - necesarul de interconectare: lucrul cu hardware-ul. SO trebuie să poată include
capacitatea de comunicare TCP/IP, bluetooth etc. dacă se dorește disponibilitatea
anumitor metode de transmitere de date.
- perifericele
Cost
- Dacă se notează cu:
o P = prețul produsului final cu care se dorește a fi dat cumpărătorului
o Ch = costul hardware-ului
o CS = costul software-ului (taxă pentru fiecare bucată vândută)
o Nh = costul de proiectare hardware
o NS = costul de proiectare software
o D = numărul de dispozitive vândute
- Se obține următoarea formulă:
D
N
D
NCCP Sh
Sh
- Ch se amortizează în funcție de numărul de dispozitive vândute. NS – este un cost care
ține de software-ul dezvoltat de producător sau în cazul în care software-ul este cumpărat.
Acest cost se platește o singură dată , nu pentru fiecare bucată dispozitiv în parte. De
obicei NS este inclus în Cs.
Timpul de proiectare/producție/lansare
Timpul de realizare este timpul necesar pentru ca produsul(dispozitivul) să fie lansat pe
piață. Acest timp nu trebuie să fie prea mare, dar el depinde de tipul produsului.
Competențe necesare / suport
- Competențele reprezintă gradul de cunoștințe necesare pentru a utiliza și dezvolta
sistemul de operare. Ele sunt competențele pe care trebuie să le aibă echipa de dezvoltare
pentru a lucra cu sistemul de operare.
- Un SO mai cunoscut dispune de o comunitate de utilizatori mai mare, lucru care face SO
mai puternic deoarece documentația pentru suport se găsește mai rapid și în cantități mari.
Cumpărarea unui sistem de operare
- Prin cumpărarea unui SO cumpărăm un produs optimizat, timpul de lansare pe piață este
scurt, beneficiem de suport. În cazul produselor comerciale – timpul de viață al
produsului este asigurat. De obicei, produsele comerciale sunt bine documentate.
- Aspecte negative:
– cost mare : poate exista o taxă pe dispozitiv; orice soft nu este perfect și pot apărea
bug-uri de aceea trebuie văzut modul de realizare al contractului de cumpărare
– trebuie să se cunoască de la început necesarul hardware
– suntem nevoiți să învățăm produsul dezvoltat de altcineva
Dezvoltarea unui SO propriu
- Aspecte pozitive:
– nu depindem de produsul altuia (care în timp poate da faliment și în acest caz nu
am mai avea suportul necesar)
– avem independență față de această piață
– ținem sub control costurile
- Aspecte negative:
– competențe: greu de găsit persoane suficiente pentru a lucra la componente
– depindem de persoanele care dezvoltă aplicația (poate exista cazul în care
concediem persoanele care au dezvoltat softul)
– durează mai mult dezvoltarea softului
– documentația depinde de persoanele care au dezvoltat produsul
– trebuie asigurată mentenanța produsului
Soluție hibridă
Când plecăm de la o soluție open-source și dezvoltăm ceva nou. O suluție hibridă
presupune un cost inițial, dar costurile totale sunt mai mici. Aceasta este o soluție care
realizează un compromis între primele două variante.
Exemple de sisteme de operare
- Cisco OS; - S60; - Symbian; - eCos (open sourse RTOS);
- Windows CE (Pocket PC, Windows Mobile);
- BlackBerry OS; - Embedded Linux (Android, µCLinux);
12. Sisteme industriale de tip PC:
Ce este un PC industrial?
Un sistem de tip PC (x86) destinat aplicațiilor industriale
Caracteristici:
- Solid (carcasă metalică robustă)
- Formă standard (rack-abilă)
- Răcire optimizată (filtru de aer, răcire cu lichid)
- Extensibilitate mai simplă
- Ecranare magnetică și electrică
- Consum redus
- Watchdog de sistem
Avantaje
- Viteza de dezvoltare a sistemului (time to market): sunt luate în considerare prețul
(costul) și timpul de dezvoltare
- Cost proiectare / dezvoltare redus pentru cazul unor sisteme produse în serie mică.
- Timpul în care hardware-ul este disponibil e minim.
- Capacitate de stocare a datelor
- Software standard (familiar): există deja foarte mulți oameni instruiți pe aceste sisteme
- Hardware standard: componentele sunt relativ ușor de găsit pe piață
- Interfața utilizator
- Tool-uri: de la cele gratis la cele comerciale; partea de instruire nu este necesară
- CPU (procesorul): de obicei, procesoarele care se găsesc pe aceste sisteme sunt standard.
Dezavantaje
- Cost mare: când produsul este optimizat, dar deja a fost produs în serie.
- Dezvoltare hardware: când avem de interfațat sistemul cu un dispozitiv non-standard. În
acest caz costul e si dezavantaj și avantaj.
- Necesitatea unei tastaturi și display: lucru care poate fi evitat prin modificarea BIOS-ului,
astfel încât să permită pornirea sistemului de operare și fără aceste periferice sau să
permită redirecționarea acestor dispozitive către portul serial etc.
- Disponibilitatea componentelor: lumea PC-urilor are o dezvoltare foarte rapidă; dacă
luăm azi un PC, peste 3 ani dacă ni s-a ars o componentă există posibilitatea să nu mai
găsim pe piață înlocuitor.
- SO nu sunt real time: dacă utilizăm SO uzuale (DOS, Windows) nu ne oferă performanțe
în timp real. Putem să alegem în acest caz soluții mai scumpe în ceea ce privește sistemul
de operare.
- disponibilitatea de stocare: personalizări ale sistemului: unele sisteme nu dispun de HDD
- partea de proiectare este executată de alte persoane și nu echipa proprie de dezvoltare,
idem testare: nu avem siguranța că proprietățile declarate sunt și cele reale.
Standarde industriale
- PC/104
- STD Bus (Z80)
- VME Bus (Motorola)
PC/104 - Stabilește forma și magistrala de interconectare:
– PC/104 – ISA
– PC/104-Plus – ISA & PCI
– PC-104 – PCI
– PC/104 Express – PCI & PCIe
– PCIe/104 - PCIe