Vývojové prostředí Keil a ladicí program NoICE

Použití s vývojovou deskou MIK552


Tento návod obsahuje stručný popis postupu práce při použití vývojového prostředí Keil uVision v.3 a ladicího programu NoICE pro práci s vývojovou deskou MIK552. Návod se týká jen postupů, které bezprostředně souvisí s použitím uvedených nástrojů. Nezabývá se proto obecnými záležitostmi ohledně programování mikrokontrolérů řady 80C552 a použití vývojového prostředí uVision v.3.


1. Vývojová deska MIK552

Základní popis desky MIK552 a mikrokontroléru Philips 80C552 lze najít v příslušné dokumentaci.

Pro použití s ladicím programem NoICE je deska upravena následujícím způsobem:

Protože mikrokontroléry řady 8051 mají Harwardskou architekturu, je dekodér adres naprogramován tak, aby mapa paměti umožňovala zavádění programu do SRAM v datovém adresním prostoru a jeho provádění v kódovém adresním prostoru. SRAM o kapacitě 32 kB je proto mapována do obou adresních prostorů na adresách 0x8000 - 0xFFFF. V kódovém adresním prostoru je od adresy 0x0000 paměť EPROM (16 nebo 32 kB) obsahující monitor KMON. Ve vnějším datovém adresním prostoru (XDATA) je na adresách 0x0000 - 0x1FFF paměť SRAM M48T08 o kapacitě 8 kB, zálohovaná vestavěnou baterií. Tato paměť současně obsahuje obvody RTC, jejichž registry jsou mapovány do adresního prostoru SRAM (viz manuál).

Obr. 1: Mapa paměti MIK552 pro práci s NoICE.


2. Program NoICE a monitor KMON

Program NoICE spolupracuje s monitorem KMON, který je uložen v paměti EPROM na desce MIK552. Vazbu znázorňuje následující obrázek.

Obr. 2: Vztah mezi NoICE a KMON.

Po připojení napájení k desce MIK552 a spuštění programu NoICE naváže spojení prostřednictvím rozhraní RS232. Potom je možné zavést do paměti mikrokontroléru přeložený aplikační program a ladit jej běžnými postupy.

Monitor KMON je pro použití s deskou MIK552 konfigurován následujícím způsobem:


3. Nastavení vývojového prostředí Keil uVision3

Při překladu a sestavení programu pro práci s programem NoICE je nutné respektovat mapu adresního prostoru na desce MIK552 (viz výše). V menu Project - Options for Target 'Target 1' je proto nutné nastavit hodnoty podle následujících obrázků.

Obr. 3: Menu Project - Options for Target 'Target 1'

Na záložce Target je nutné zvolit typ, umístění a velikost jednotlivých pamětí.

Obr. 4: Záložka Target

Pro překlad a sestavení programů, které se budou ladit pod programem NoICE, by neměla být na záložce Output vybrána volba Create HEX File.

Obr. 5: Záložka Output.

 


4. Překlad a sestavení programu pro NoICE

Po překladu a sestavení vygeneruje sestavovací program binární soubor s aplikačním programem. Tento soubor má stejné jméno jako zpracovávaný projekt, bez přípony. Kromě samotného binárního kódu obsahuje též ladicí informace pro debugger. Pro práci s NoICE je nutné binární soubor dále zpracovat programem omf51noi.exe, který jej převede do formátu Intel HEX a ladicí informace uloží do souboru s příponou .noi .

Program omf51noi lze spustit řádkovým příkazem (parametrem je jméno binárního souboru), pohodlnější je ale využití vlastností vývojového prostředí uVision3. Na záložce Output lze vybrat volbu Run User Program #1 a do vkládacího pole vyplnit název programu, který má být spuštěn po sestavení projektu. Na Obr. 5 je zachyceno nastavení pro převod souboru s názvem NoICE_demo.

Binární soubor ve formátu Intel HEX je nutné ještě dále upravit. Protože sestavovací program automaticky doplňuje do programu na adresu 0x0000 přerušovací vektor pro spuštění aplikace po resetu, dochází při zavádění aplikačního programu pomocí NoICE ke kolizi (výše zmíněný přerušovací vektor se pokouší přepsat obsah EPROM, ve které je monitor KMON). Příslušná část binárního souboru se proto musí odstranit, což lze provést v souboru Intel HEX pomocí libovolného textového editoru. Je nutné najít příslušnou řádku v souboru (podle ukládací adresy 0x0000, často to bývá první řádka v souboru) a vymazat ji. Před vymazáním lze z této řádky zjistit startovací adresu aplikace (odvozenou z přerušovacího vektoru), což je užitečné pro spuštění pod NoICE.

Na Obr. 6. je příklad souboru Intel HEX s vyznačenou řádkou, kterou je nutné odstranit. Ukládací adresa (0000) je vyznačena žlutě, startovací adresa aplikace (821B) je vyznačena zeleně. Viz též podrobnosti o formátu Intel HEX.

Popsanou operaci lze urychlit tak, že se v záložce Output vybere volba Run User Program #2 a do vkládacího pole se napíše příkaz pro otevření souboru .hex editorem Notepad (viz Obr. 5).

Obr. 6: Příklad souboru Intel HEX.

Popsaným postupem jsme vytvořili soubory .hex a .noi , které zpracovává program NoICE.

Po spuštění NoICE je někdy nutné v okně Options - Target Communications nastavit číslo sériového portu a přenosovou rychlost (Obr. 7). MIK552 se zapnutým napájením musí být připojen na příslušný sériový port. Potom můžeme zavést do paměti mikrokontroléru aplikační program příkazem File - Play .

Obr. 7: Nastavení v okně Target Communications.

 

Program spustíme příkazem Run - Go From , přičemž musíme zadat startovací adresu. Tu lze zjistit výše uvedeným postupem ze souboru .hex, případně z mapy paměti v souboru .m51 (startovací adresa odpovídá hodnotě symbolické adresy ?C_C51STARTUP ). Další možností je otevřít pomocí tlačítka 1 okno Select Symbol, kde vyhledáme vstupní bod programu - odpovádá symbolické adrese ?C_C51STARTUP - viz 2 na Obr. 8). Dále lze program ladit běžnými prostředky.

Obr. 8: Okno Select Symbol .

 


5. Obsluha přerušení pod NoICE

Paměť EPROM s monitorem KMON je v kódovém adresním prostoru umístěna od adresy 0x0000. Jedním z důsledků je skutečnost, že aplikační program nemůže měnit přerušovací vektory, které jsou standardně umístěny na začátku adresního prostoru. KMON proto standardně přesměrovává přerušovací vektory na adresy 0x8000 + adresa vektoru. Na těchto adresách, které jsou v rozsahu adres pokrytém pamětí RAM 1, musí být umístěny "stínové" přerušovací vektory, směřující do jednotlivých obslužných programů přerušení (viz Obr. 9). Umístění přerušovacích vektorů na zvolenou adresu lze zajistit direktivou #pragma INTVECTOR vloženou do jednotlivých modulů programu.

Obr. 9: Přerušovací vektory pod KMON.

Pro správnou funkci přerušovacího systému je nutné provést následující kroky:

  1. V jednotlivých modulech programu nastavit generování přerušovacích vektorů od adresy 0x8000 direktivou #pragma INTVECTOR(0x8000) (Obr. 10).

Obr. 10: Direktiva #pragma INTVECTOR(0x8000).


Další informace:


Poslední změna stránky byla provedena 17.02.2009