25. aprila, 2017

Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?

Revija 252 252 47 1 - Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?Revija logo se - Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?

Programsko kodo za mikrokontrolerje lahko pišemo v različnih programskih jezikih. Med njimi je danes še zmeraj dominanten jezik C, vendar se včasih pojavi potreba po programiranju nekaterih delov programske kode v nizkonivojskem zbirniškem jeziku, ki je jezik procesorja oziroma jedra mikrokontrolerja.

Revija 252 252 47 2 - Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?Ti deli zbirniške kode ponavadi opravljajo časovno kritične naloge in jih kličemo iz jezika C. V nadaljevanju bomo predstavili komunikacijo med deli programa, napisanimi v jeziku C, in deli v zbirniku za mikrokontrolerje z jedrom ARM Cortex-M. Za prikaz delovanja bomo uporabili razvojno okolje KEIL µVision in prevajalnik istega proizvajalca.

Čeprav je večina programske kode za projekte, ki temeljijo na mikrokontrolerjih, napisana samo v enem od višjih programskih jezikov (npr. v jeziku C), se v praksi večkrat pokaže potreba po vključitvi kode v zbirniku (angl. Assembly Language). Obstaja vrsta orodij za učinkovito zaznavanje programskih odsekov (funkcij), ki za svoje izvajanje potrošijo največ časa. Težava pa je v tem, da prevajalniki nimajo znanja, kako te odseke optimizirati. Da ne bi bili odvisni od iznajdljivosti prevajalnikov, lahko v tem primeru poskušamo te dele programske opreme kar ročno optimalno zapisati v zbirniku. Standardni prevajalniki jezika C tudi ne uporabljajo določenih ukazov, ki jih podpira procesor Cortex-M (npr. ROR – ROtate Right in RRX – Rotate Right eXtended). Pri pisanju gonilnikov in zagonske kode za mikrokontrolerje ima zbirnik še posebno pomembno vlogo, saj omogoča neposredni dostop do strojne opreme. Velja pa tudi, da programerji, vešči pisanja programske kode v zbirniku, pišejo optimalnejšo kodo v jeziku C [3].

Revija 252 252 47 3 - Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?Za razvoj programov smo uporabili programsko razvojno okolje Keil µVision z nameščenima prevajalnikoma za C in zbirnik istega proizvajalca. Toku izvajanja programa smo sledili z vgrajenim razhroščevalnikom. Za testiranje delovanja smo uporabili razvojno ploščo STM32L4 Discovery proizvajalca ST Microelectronics, na kateri je nameščen mikrokontroler STM32L476VG z jedrom ARM-Cortex-M4. Lahko bi uporabili tudi mikrokontroler kateregakoli drugega proizvajalca z vgrajenim jedrom ARM-Cortex-M.

Celotni članek

Program

Kako se pogovarjata C in zbirnik za mikrokontrolerje ARM?

2017_SE252_47