24
Integrisani raˇ cunarski sistemi Advanced v0.5 Odsek za elektroniku Univerzitet u Beogradu - Elektrotehniˇ cki fakultet poslednja izmena 28. mart 2019 Odsek za elektroniku 13E044IRS ETF Beograd 1 / 24

Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

  • Upload
    others

  • View
    17

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Integrisani racunarski sistemiAdvanced

v0.5

Odsek za elektroniku

Univerzitet u Beogradu - Elektrotehnicki fakultet

poslednja izmena 28. mart 2019

Odsek za elektroniku 13E044IRS ETF Beograd 1 / 24

Page 2: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 2 / 24

Page 3: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 3 / 24

Page 4: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

C ili asembler?

Jezik C omogucava struktuirano programiranje. Kompajler sam vodiracuna o popunjavanju memorije i osnovnim inicijalizacijama. Kod jeportabilan i na druge mikrokontrolerske platforme

Asembler je efikasan po pitanju brzine izvrsavanja. Kod pisan uasembleru nije portabilan na druge platforme i mnogo je manje citljivod C koda

Odsek za elektroniku 13E044IRS ETF Beograd 4 / 24

Page 5: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Kako kombinovati dobre stranje C-a i asemblera

Glavni program treba pisati u C-u

Sve promenljive i konstante treba pisati u C-u

Delove koda koji odslikavaju sustinu algoritma (strukturu) treba pisatiu C-u

Vremenski kriticne funkcije i prekidne rutine treba pisati u asembleru

Odsek za elektroniku 13E044IRS ETF Beograd 5 / 24

Page 6: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

C calling convention - nacin na koji C funkcije dobijaju ivracaju parametre

http://www.ti.com/lit/an/slaa140/slaa140.pdf

Parametri C funkcija se prenose preko registara R12-R15

Povratne vrednosti se prenose preko registara R12-R13

Unutar C funkcija registri R4-R11 se koriste za lokalne promenljive i Ckompajler ih automatski cuva na steku pri pozivu funkcije

Odsek za elektroniku 13E044IRS ETF Beograd 6 / 24

Page 7: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Primer

Primer funkcije f (w, x, y, z)

Odsek za elektroniku 13E044IRS ETF Beograd 7 / 24

Page 8: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Fajl function.h jepotreban da bi Ckompajler imao prototipfunkcije

Parametar se funkcijiprenosi preko nizeg bajtaregistra R12, jer je upitanju tip CHAR

Funkcija WriteLednapisana u asembleru.Direktiva .def jeneophodna da bi sefunkcija mogla pozvatiiz drugih delova koda

Odsek za elektroniku 13E044IRS ETF Beograd 8 / 24

Page 9: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Standardan poziv funkcijeiz asemblera

C prekidi pored standardnogkonteksta automatski cuvajui registre R4-R11 na steku.Asemblerske prekidne rutine kaosto su ove nekad nemaju potrebuza cuvanjem svih registara. Na tajnacin se dobija na brzini

Odsek za elektroniku 13E044IRS ETF Beograd 9 / 24

Page 10: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 10 / 24

Page 11: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Coding style

https://barrgroup.com/Embedded-Systems/Books/Embedded-C-Coding-Standard

https://www.kernel.org/doc/Documentation/process/coding-style.rst

Odsek za elektroniku 13E044IRS ETF Beograd 11 / 24

Page 12: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 12 / 24

Page 13: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Doxygen

Instalacijahttp://www.stack.nl/~dimitri/doxygen/download.html#srcbin

Konfiguracija za CCShttps://anb0s.github.io/eclox/

Dokumentacijahttp://www.stack.nl/~dimitri/doxygen/manual/index.html

Advancedhttp://mcuoneclipse.com/2012/06/25/5-best-eclipse-plugins-1-eclox-with-doxygen-graphviz-and-mscgen/

Odsek za elektroniku 13E044IRS ETF Beograd 13 / 24

Page 14: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 14 / 24

Page 15: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Finite State Machine

Funkcionalnost se implementira u vidu masina stanja

Dogadaji uticu na izvrsavanje programa

Razmatracemo dve varijante:SuperloopEvent queue

Odsek za elektroniku 13E044IRS ETF Beograd 15 / 24

Page 16: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Superloop

Kod je organizovan u vidu masina stanja koje su realizovane pomocuswitch-case naredbi

Jasno vidljiva funkcionalnost, citljivo

Nije pogodno za suvise komplikovane sisteme, posto treba biti izuzetnopazljiv prilikom implementacije, kao i ukoliko je potrebna razmenapodataka izmedu masina stanja

Odsek za elektroniku 13E044IRS ETF Beograd 16 / 24

Page 17: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Blocking primer

/* ... */

/* configure USCI, send start bit */

/* i2c isr will be sending group of bytes. After data is sent, tx_done flag is set */while (!tx_done);

/* check if STOP condition was successfully sent */while(UCB1CTL1 & UCTXSTP);

/* return appropriate value */if (success) {

return SUCCESS;} else {

return FAIL;}

/* ... */

Odsek za elektroniku 13E044IRS ETF Beograd 17 / 24

Page 18: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Superloop primer

/* i2c transmit machine state */typedef enum {I2C_INIT, I2C_WAIT_TX_DONE, I2C_WAIT_STOP, I2C_SUCCESS, I2C_FAIL} i2c_tx_state_t;i2c_tx_state_t i2c_state = I2C_INIT;/* ... */

switch (i2c_state){case I2C_INIT:

/* configure USCI, send start bit */i2c_state = I2C_WAIT_TX_DONE;break;

case I2C_WAIT_TX_DONE:/* i2c isr will be sending group of bytes. After data is sent, tx_done flag is set */if (tx_done == 1) {

i2c_state = I2C_WAIT_STOP;}break;

case I2C_WAIT_STOP:/* check if STOP condition was successfully sent */if (!(UCB1CTL1 & UCTXSTP)) {

if (success) {i2c_state = I2C_SUCCESS;

} else {i2c_state = I2C_FAIL;

}}break;

default:break;

}

Odsek za elektroniku 13E044IRS ETF Beograd 18 / 24

Page 19: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Event queue

Objasnjenjehttp://www.barrgroup.com/Embedded-Systems/How-To/State-Machines-Event-Driven-Systems

Poredenje sa Superloophttp://embeddedgurus.com/state-space/2012/05/superloop-vs-event-driven-framework/

Odsek za elektroniku 13E044IRS ETF Beograd 19 / 24

Page 20: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 20 / 24

Page 21: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Hardware Abstraction Layer

Razvoj kompleksnih softverskih stekova se radi u slojevima, da bi seomogucila jednostavnija podela posla, testiranje kao i laksi code reuse

Principi su isti za razlicite embedded sisteme, razlika je samo uhardveru

Apstrakcijom pristupa hardveru omogucava se da visi slojevi koda buduportabilni na druge arhitekture

Odsek za elektroniku 13E044IRS ETF Beograd 21 / 24

Page 22: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Drajveri

Drajveri nude interfejs za pristup hardverskoj komponenti

Autor aplikacije ne brine o tome KAKO hardver radi, vec samo STAhardver radi

Odredeni template za pisanje drajvera

Primeri:POSIX – open, close, read, write, ioctl. . .STM CUBE – init, deinit. . .

Odsek za elektroniku 13E044IRS ETF Beograd 22 / 24

Page 23: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

Pregled

1 Kombinovanje C-a i asemblera

2 Coding style

3 Doxygen

4 Event-driven programming

5 HALPrimer – 7seg driver

Odsek za elektroniku 13E044IRS ETF Beograd 23 / 24

Page 24: Integrisani racunarski sistemi Advanced v0tnt.etf.bg.ac.rs/~oe4irs/pdf/vezbe/advanced.pdf · Integrisani racunarski sistemi Advanced v0.5 Author: Odsek za elektroniku Created Date:

sevenseg-hal

Primer koji demonstrira HAL za koriscenje sedmosegmentnog displeja

Odsek za elektroniku 13E044IRS ETF Beograd 24 / 24