Vývojové prostredie Keil je komplexný nástroj umožňujúci tvorbu programu pre mikropočítače založené na jadre 8051. Obsahuje všetky potrebné nástroje od vytvorenia projektu, čo je súbor obsahujúci informácie o voľbe typu mikropočítača, súborov, ktoré súvisia s vytváraným programom ako sú knižnice a podobne. Ďalej obsahuje C51 - optimalizovaný kompilátor jazyka C a A51 – makro asembler priamo vytvárajúci premiestniteľný objektový súbor. BL51 – linker a lokátor spája a kombinuje objektové súbory vytvorené pomocou A51 a C51. LIB51 – knihovník vytvára z objektových modulov knižničné súbory použiteľné linkerom. Súčasťou vývojového prostredia je uVision2, nástroj na ladenie a simuláciu programu umožňujúci simuláciu celého mikropočítača vrátane jeho periférií umiestnených na čipe ako aj externého hárdveru s podporou veľkého množstva mikropočítačov. Atribúty pre daný mikropočítač sú vyberané automaticky z databázy mikropočítačov pri vytváraní nového projektu.
Rozšírenou možnosťou uVision2 je Monitor-51, program umiestnený v pamäti mikropočítača umiestneného na vývojovej doske. Mikropočítač a PC sú prepojené cez sériové rozhranie a umožňuje tak pomocou uVision2 ladenie aplikácie priamo na hardvere.
V našom prípade je použitá demo verzia vývojového prostredia Keil, ktorá je plne funkčná s obmedzením na veľkosť kódu programu do 2 kB, navyše je umiestňovaný do pamäte s posunom o 2 kB. Ďalším obmedzením je absencia podpory aritmetiky v pohyblivej rádovej čiarke. Pomocou uVision2 je umožnená simulácia ako softverovo, tak aj na vývojovej doske ADuC836EB pripojenej sériovou linkou k PC. V EPROM externej pamäti pripojenej k mikropočítaču je umiestnený monitor umožňujúci simuláciu programu na vývojovej doske. Na demonštráciu funkcií dosky a uVision2 sú vytvorené v rámci diplomovej práce príklady v jazyku C a asembleri.
V nasledujúcich bodoch sú v krátkosti uvedené základné kroky pri tvorbe programu.
vytvorenie projektu – nový projekt je vytvorený pomocou položky v menu Project/New Project, súčastne sa ponúkne databáza mikropočítačov s možnosťou voľby konkrétneho typu mikropočítača, ktorý je zvolený podľa požiadaviek
vytvorenie zdrojového súboru – v menu File/New je potrebné vytvoriť nový súbor, implicitne sa jedná o textový súbor, vzhľadom na použitý programovací jazyk (asembler alebo v jazyk C) je daný súbor nutné uložiť (Save as) ako názov_súboru.c alebo názov_súboru.asm. Súbor je následne nutné pripojiť k projektu. Súbor je pripojený ku projektu prostredníctvom okna Project Workspace otvorením položky Target 1 a pridaním do Source Group 1. V prípade nutnosti je možné podobným spôsobom pripojiť k projektu aj iné potrebné súbory
editácia a kompilácia – vytvorený kód programu je pomocou Project/Build target skompilovaný. Kompilátor poskytne protokol o kompilácii a prípadných chybách syntaxe a varovaniach v Output Window umiestnenom implicitne v dolnej časti okna. Po oprave prípadných chýb je nutné kompiláciu opakovať
ladenie a simulácia – po oprave syntaktických chýb kódu je možné pristúpiť k overeniu správnosti funkcie programu pomocou simulácie ako softvérovej, tak aj pomocou pripojenej vývojovej dosky. Prostredie uVision2 disponuje možnosťami zobrazenia obsahu pamäte, periférnych zariadení, dát poslaných na sériovú linku prostredníctvom položky Peripherals v menu programu, ďalšou možnosťou je krokovanie programu, prípadne beh od určitého miesta po umiestnenú značku nazývanú breakpoint
Keil MONITOR-51 je program umiestnený v dolnej časti externej EPROM do adresy 8000H pripojenej k mikropočítaču ADuC836 na vývojovej doske ADuC836EB.
Funkciou monitora je umožnenie komunikácie mikropočítača umiestneného na vývojovej s uVision2 a odlaďovanie aplikácie v reálnom čase priamo na mikropočítači. Pomocou monitora je možné krokovať program, sledovať obsah pamäte a registrov mikropočítača, nastavovať breakpoint-y a iné funkcie.
V prípade použitia simulácie programu na vývojovej doske je nutné oproti programu určenému pre simuláciu v uVision2 vykonať určité zmeny.
1. nastavenie projektu – v nastaveniach pre Target1 v zložke Debug je zvolené použitie Keil Monitor-51 Driver a ako Initialization File je nastavený súbor Debug.ini, ktorý slúži na nastavenie PC po spustení aplikácie, čím sa preskočíme oblasť externej EPROM pamäte v ktorej je od adresy 0000H do 8000H umiestnený monitor. Program ktorý sa testuje je umiestený od adresy 8000H vyššie
2. pripojenie súboru Startup.A51 – tento súbor je spustený bezprostredne po resete mikropočítača. Slúži na vykonanie počiatočných inicializácii mikropočítača skôr ako sa riadenie systému odovzdá main funkcii. Typickými operáciami sú inicializácia hardverového zásobníka, inicializácia zásobníka a ukazateľa zásobníka niektorého s pamäťových modelov (small, compact, large), nulovanie obsahu internej/externej/stránkovanej externej dátovej pamäte prípadne iné nastavenia potrebné v závislosti od konkrétneho použitého mikropočítača
3. nastavenie vektora prerušenia – pre správnu funkciu v prípade použitia prerušení mikropočítača je nutné nastaviť ofset pre vektor prerušenia na 8000H, takže napríklad prerušenie od externého zdroja INT0 je po takomto nastavení uložené na adrese 0003H + ofset = 8003H
Vývojové prostredie Keil disponuje možnosťou inštalácie dodatočných DLL knižníc zvyšujúcich komfort ladenia aplikácie a to možnosťou priamej simulácie externe pripojených zariadení ako je LCD displej, generátora signálu, pripojenia I2C rozhrania a podobne.
Príslušné knižnice je nutné skopírovať do podadresára keil/c51/bin. Inicializačný súbor TOOLS.ini je doplnený v odstavci označenom [c51]: o tento text:
[C51]:
AGSI1=SCOPE.DLL
("Scope simulation")
AGSI2=LCD.DLL
("LCD simulation")
AGSI2=LED.DLL
("LED simulation")
AGSI3=I2C.DLL
("I2C simulation")
AGSI4=Statemachine.dll
("8051 statemachine")
AGSI5=Signalgenerator.dll
("Signal generator")
Po štarte vývojového prostredia sú už tieto doplnky k dispozícii.
Táto knižnica s názvom lcd.dll umožňuje simuláciu pripojenia LCD displeja s radičom kompatibilným s obvodom HD44780. Radič fyzicky umožňuje prevádzku v 4-bitovom a 8-bitovom režime, čiže môže byť ovládaný 4-bitovým aj 8-bitovým mikropočítačom. Daná knižnica je demo verziou s obmedzením na simuláciu prevádzky iba v 4-bitovom režime. Plná verzia knižnice poskytuje simuláciu aj v 8-bitovom režime.
Pomocou konečného stavového automatu je možné sledovať graficky znázornené priebehy signálov CLK, ALE, PSEN, RD/WR a indikácia prístupov do jednotlivých typov pamätí. Disponuje možnosťou krokovať program a sledovať stavy výstupov P0 a P2, PC, operačného kódu inštrukcie a dekódovanej inštrukcie.
Konečný stavový automat je vhodnou učebnou pomôckou pre cvičenia z predmetu Rádioelektronické meranie, slúžiac na demonštráciu činnosti a merania na mikropočítači 8051.
Vývojové prostredie je možné doplniť o ďalšie knižnice rozširujúce možnosti ladenia programu. Knižnice sú po nainštalovaní prístupné položkou Peripherals v režime ladenia aplikácie. Následne si ich v krátkosti uvedieme:
Signal Generator – generátor signálu, umožňuje generovanie troch základných priebehov ( trojuholník, sínus, píla) a ich privedenie na ľubovoľný zo vstupov mikropočítača, kontrolovať môžeme frekvenciu, amplitúdu, ofset a štartovacie napätie
I2C-Simul – simulátor pripojenia zariadenia na rozhranie I2C, knižnica disponuje databázou niekoľkých zariadení vybavených týmto rozhraním, nastavujeme SCL, SDA a adresu zariadenia
LED – disponuje možnosťou pripojenia LED diód z databázy na ľubovoľný z výstupov mikropočítača
Scope - funkciou je podobný logickému analyzátoru, je možné nastaviť si sledovanie dát (napríklad dáta v akumulátore), čím je môžné vyhodnocovať určité udalosti. Ďalšou možnosťou je nastavenie časovej základne v závislosti od potrieb
Vývojové prostredie Keil disponuje ďalšími možnosťami rozširujúcimi jeho možnosti pri ladení aplikácie.
Ďalšou funkciou uVision2 je využitie špeciálneho jazyka podobného programovaciemu jazyku C. Pomocou tohto jazyka je možné opísať správanie sa externých zariadení pripojených k mikropočítaču s možnosťou vytvárať takzvané signálové funkcie. Signálové funkcie rozširujú možnosti softverového ladenia aplikácie a uľahčujú tak tvorbu programov.
Signálové funkcie bežia v pozadí simultánne so simulovaným programom.
9.4.1.1 Tvorba signálovej funkcie
Pomocou niektorého s textových editorov (NOTEPAD a pod.) je potrebné vytvoriť súbor s príponou *.ini (napríklad s názvom adc.ini), do ktorého je umiestnený kód signálovej funkcie. Podmienkou je definícia funkcie začínajúca sa ako SIGNAL. Jednoduchým príkladom je nasledujúci kód:
SIGNAL void adc_input (void)
{
float x;
while(1)
{
x=DAC;
AIN3 = x;
twatch(1);
}
}
Funkcia realizuje cyklické čítanie hodnoty napätia z výstupu DAC prevodníka v nekonečnej sľučke a jeho zápis do premennej "x". Hodnota premennej "x" je následne zapísaná na vstup AIN3 ADC prevodníka. Volaním špeciálnej funkcie "twatch(1)" sa dosiahne vytvorenie čakania 1 takt mikropočítača.
Ďalším krokom je je vytvorenie skriptu "debug.ini" opäť za pomoci textového editora do ktorého je umiestnený nasledovný kód:
include "ADC.ini"
adc_input()
Daný kód zabezpečí zahrnutie skriptu do projektu a spustenie signálovej funkcie "adc_input()". Súbor "debug.ini" je nutné pripojiť k projektu v položke /Project/Options for target`Target1`/Debug - Initialization file nastavenia projektu.
V súbore "debug.ini" je možné zahrnúť aj viacero skriptov a funkcií.
Pri tvorbe signálových funkcií sú použité niektoré špeciálne funkcie, ktoré sa v jazyku C štandardne nevyskytujú. Príkladom sú funkcie vytvárajúce oneskorenie ako je napr. twatch(), swatch() a iné.
Dodatočné informácie je možné nájsť na stránke www.keil.com.
V prípade potreby zisťovania doby výkonu jednotlivých funkcií je k dispozícii analyzátor výkonu počas spustenia ladenia aplikácie (položka View/Performance Analyzer Window). Pomocou grafického znázornenia je zisťovaná dĺžka trvania výkonu jednotlivých funkcií na ktoré je tak možné zamerať sa podľa potrieb a vykonať ich optimalizáciu.