Jste zde

Simulátor ADuC812, ale i celé rodiny 8051

Rád bych vás seznámil s volně šiřitelným simulátorem jednočipového mikroprocesoru ADuC812, který lze použít k ladění programů celé řady mikroprocesorů rodiny 8x51. Firma Analog Devices dává na svých www stránkách k dispozici celý komplet vývojového prostředí k mikrokonvertoru ADuC812, jedním ze zástupců je i simulátor jednočipů řadu 8x51.

Co všechno v „balíku“ získáme
Při instalaci samorozbalovacího souboru ADuCQSDSv30www.exe (cca 8,3 MB) se nám na zvoleném disku vytvoří podadresář ADuC a v něm celá řada dalších podadresářů. V nich jsou především umístněny spustitelné soubory: 

  • ADSIM s již zmíněným simulátorem, 
  • ASM51 s DOS kompilátorem assembleru na INTEL HEXA formát, 
  • DeBugV2, což je novější  verze debugeru pro mikrokonvertory ADuC812/816/824 s využitím sérové linky RS-232, 
  • WASP - program pro analýzu software pro mikrokonvertoru ADuC812/816/824,
  • WSD - DownLoad pod windows k zavedení zkompilovaného programu do mikrokonvertoru ADuC812/816/824 po sériové lince.

Co je třeba stáhnout

  • ADuC_docs_V30.zip - kompletní a bohatou dokumentaci ke všem mikrokonvertorům řady ADuC.
  • ADuC_code_V30.zip - několik podadresářů, kde jsou uvedeny assemblerovské rutiny na obsluhu všech periferií, které mikrokonvertor řadu ADuC obsahuje.

Mikroprocesorové jádro jednapadesátky jako na talíři
Spuštěním simulátoru ADsim812 získáme velmi komfortní vývojový simulátor intelovské řady 8051 a jeho dalších nadstaveb. Mimo základní menu se v horní časti okna zobrazí dvě lišty, které umožňují vyvolat celou řadu funkcí a událostí v „běhu“ laděného programu. 
Na ostatní volné ploše obrazovky lze zobrazit pomocná okna následujících funkcí a významů:

  • disasemblerovaný laděný program, v němž jsou uvedeny také odkazy a návěští jako ve zdrojovém textu programu,
  • obsah interní, případně externí paměti RAM pro data,
  • paměťovou lokaci SFR registrů, tedy jen těch, co používá základní 8x51,
  • všechny čtyři I/O porty včetně zobrazení po bitech,
  • všechny tři časovače, tedy včetně Timer2 u 8x52
  • a specialitky pro ADuC812:
    • paměťovou lokaci SFR registrů pro A/D a D/A převodníky,
    • paměťovou lokaci pro I2C a SPI rozhraní,
    • paměťovou lokaci pro obsluhu flash EEPROM paměti včetně této flash paměti, 
    • paměťovou lokaci vnitřního WDT monitoru a monitoru napájení včetně možnosti simulace poklesu tohoto napájení.

Ve všech oknech lze provádět modifikaci paměťového místa nebo registru. Jedině v okně disasemblerovaného programu to samozřejmě možné není. 
 

Pro vlastní ladění programu lze využít krokové simulace, simulace po procedurách, běhu programu do nastavených breakpointů a také možnost vynechání následující instrukce při krokování programu, což se tak často v simulátorech nevidí.

Zajímavé a velmi užitečné je okno analýzy programu, kde je možné získat informace o vnějším chování laděného programu, tj. zjistit počet provedených cyklů, instrukcí a vlastní doby trvání programu, pro zvolený kmitočet krystalu. Zvlášť se registruje potřebná velikost zásobníku, jeho případná inicializace a počet přístupů do externí paměti RAM. Užitečné jsou dolní dvě menší okna - levé slouží k registraci návratových adres při volání podprogramů, čímž je zde vidět i výše vnoření podprogramů. V pravém okně je zobrazována historie vykonávaných příkazů.

V samostatném konfiguračním okně aktivního projektu je možné nastavit další, společné vlastnosti prostředí. Lze ovlivnit hlídání definovaného vrcholu zásobníku. Simulátor při „přetečení“ nastavené velikosti zásobníku ohlásí chybu. Hlídá také použití zakázaného přerušovacího vektoru a kontroluje správné zakončení přerušovací rutiny. Lze také zvolit možnost vzniku varovného hlášení při špatné instrukci nebo obsluhy neexistujícího SFR registru. 
Přesto, že mikrokonvertor ADuC812 může používat krystal maximálně 16 MHz, lze zde nastavit hodnotu krystalu prakticky libovolnou, mimo předinstalovaných 11,0592 a 12 MHz. Úspěšně zde byl odladěn a podroben časové analýze program pro mikroprocesor AT89C2051 s 24 MHz krystalem.

Rychlé ovládání přes tlačítka

Nejběžnější funkce simulátoru jsou umístněny ve dvou lištách. První z nich obsahuje klasické funkce otevření a uložení simulovaného projektu. Běžné funkce Reset programu, spuštění a zastavení programu. „Ruka“ naznačuje možnost vložení „breakpointů“ - míst, kde se běžící program zastaví. Trojice tlačítek se stopou intuitivně naznačují krokování programu, krokování po procedurách a obejití, tedy vynechání instrukce. Předposlední tlačítko umožňuje otevřít okno analýzy programu a poslední ukončení simulačního programu. 

Druhá lišta obsahuje tlačítka nulování programové paměti, nulování externí RAM paměti a nulování interní RAM paměti. Další tlačítka slouží pro vyvolání následujících událostí:

  • přetečení časovače T0, T1 případně T2, včetně typu autoreload,
  • vyvolání externího přerušení na E0 a E1,
  • vyvolání přerušení od sériového kanálu RI, TI.

Díky těmto tlačítkům je možné odladit programové sekvence, které zajišťují zpracování všech přerušení. Všechny tyto události je možné vyvolat jak při běhu simulovaného programu, tak i při krokování programu. 
 

Také něco navíc

Představovaný simulátor má také něco navíc, co asi běžné simulátory nemají. 
V simulátoru je možné otevřít dvě terminálová okna. První umožňuje simulovat komunikaci na sériové lince. Přičemž v okně konfigurace simulátoru lze navíc zvolit možnost simulovat sériovou linku RS-232 v terminálovém okně nebo použit existujícího COM portu (všech čtyř) na PC při zvolené komunikační rychlosti od 300 Bd až do 19200 Bd. Druhé terminálové okno pak umožňuje simulovat přenos dat na rozhraních I2C nebo SPI.
Vzhledem k plné podpoře mikrokonvertoru ADuC812 je v simulátoru také pamatováno na simulaci vstupních a výstupních dat pro A/D a D/A převodníky. Data jsou čtena nebo zapisována do běžného textového souboru s příponami *.adc nebo *.dac v podobě čtyř hexa čísel v jednom řádku, tedy jako plná 16-ti bitová informace.

Velice příjemná je možnost simulace „maticové klávesnice“ 4x5 tlačítek. V konfiguračním okně je možné nastavit připojení této simulované klávesnice na libovolné porty a to jak vstupní tak i výstupní. Druhé okno pak simuluje tuto klávesnici tak, že zmáčknutí tlačítka se projeví takovým způsobem na zvolených portech, jako by byla připojena skutečná klávesnice. Poměrně lehce tak lze odladit rutiny obsluhy klávesnice,  a to jak klasické, tak i ty, které budou využívat přerušení.
 

Závěr 

Uvedený simulátor, který je volně k dispozici všem programátorům a zájemcům o jednočipové mikroprocesory řady 8x51 nebo 8x52, patří do vyšší třídy z hlediska komfortu poskytovaných funkcí a simulačních možností. Firma tak dává najevo úplnou volnost při ladění programového vybavení a to nejen na úrovni PC simulace, ale i následně při HW simulaci s využitím HW simulátorů přímo vestavěných do mikrokonvertoru ADuC812. Firma bezesporu razí heslo, vše si nejprve vyzkoušejte a když by se vám to líbilo a fungovalo, tak teprve investujte do zařízení. Možná i proto je cena vlastního mikrokonvertoru ADuC812 o něco vyšší, než by se dalo očekávat.
 
 

Odkazy na internetu

 

Hodnocení článku: