BI-SAP.21 Struktura a architektura počítačů
Jdi na navigaci předmětu

Vývojové prostředí MPLAB X IDE - Vytvoření projektu, práce se simulátorem

1. Založení nového projektu

  1. V MPLAB vyberte položku File > New Project…​ nebo ikonu New Project…​
  2. V prvním okně ponechte volby Microchip Embedded a Standalone Project
    Založení nového projektu - Okno 1
  3. Ve druhém okně vyberte:
    • Family: 8-bit AVR MCUs (XMega/Mega/Tiny/AVR),
    • Device: ATmega328P,
    • Tool: Simulator.
      Založení nového projektu - Okno 2
  4. Ve třetím okně vyberte kompilátor avrasm2 a jeho (jedinou) variantu avrasm2 (<verze>) [<umisteni>]
    Založení nového projektu - Okno 3
    Pokud kompilátor v okně nevidíte, pak jste jej nejspíše nenainstalovali (viz Instalace a nastavení - Kompilátor).
  5. Ve čtvrtém okně:
    • Zadejte jméno projektu a umístění (nejlépe nějakou složku na síťovém disku X:, která neobsahuje žádné speciální znaky).
    • Zkontrolujte, že je zaškrtnutá volba Set as main project.
      Založení nového projektu - Okno 4

2. Přidání souboru se zdrojovým kódem a jeho simulace

  1. V levé části (karta Projects) klikněte pravým tlačítkem na složku Source Files > New > Other…​
    Přidání nového souboru - Menu Other
  2. V prvním okně vyberte:
    • Categories: Assembler
    • File Types: AssemblyFile.asm
      Přidání nového souboru - Výběr typu
  3. Ve druhém okně vyberte jméno zdrojového souboru, složku můžete ponechat beze změny.
Varování:

MPLAB může hlásit chyby při překladu ve chvíli, kdy z projektu odeberete soubor. V takovém případě vymažte soubor Makefile-default.mk, který je v adresáři <adresar_projektu>\nbproject. MPLAB si vymazaný soubor při dalším pokusu o překlad vygeneruje znovu.

2.1. Ukázkový kód pro otestování simulátoru

V pravé části okna MPLAB lze nyní editovat zdrojový kód. Následující ukázka přiřadí dvě konstanty do dvou různých registrů

; Zacatek programu - po resetu
.org 0 ; 1
jmp start

; Zacatek programu - hlavni program
.org 0x100 ; 2
start:

    ldi r16, 42
    ldi r17, 100

end: jmp end ; Zastavime program - nekonecna smycka 3
  1. Zpracování kódu po resetu zařízení začíná vždy na adrese 0, za kterou ale následuje oblast paměti, kde mohou být návratové adresy přerušení (v této ukázce přerušení nepoužíváme, ale jedná o jednu ze základních programovacích technik a proto je dobré na něj pamatovat již od začátku). Z tohoto důvodu se prvních 256 bajtů paměti přeskakuje.
  2. Na adrese 256 (0x100 šestnáctkově) začíná program.
  3. Konec programu (důležité – jinak program běží dál skrze celou paměť, kde může být uložený kód podprogramů - v této ukázce nepoužíváme ani podprogramy, ale i ty se v reálných programech používají velmi často).

3. Simulace

3.1. Spuštění a řízení

Zdrojový kód se překládá/sestavuje pomocí tlačítka Build Project, resp. Build Main Project MPLAB - Build

Toto tlačítko přeloží aktuální projekt. Pokud už máte vytvořených/otevřených projektů více, pak přeloží projekt, který je označen jako hlavní. Pokud potřebujete změnit hlavní projekt, klikněte pravým tlačítkem na název projektu v levé části Projects a vyberte Set as Main Project.
MPLAB - Main project

V případě, že by překlad skončil chybou, tak se ve spodní části (karta Output > karta s názvem projektu) objeví chybové hlášení a ve výpisu lze dohledat jednotlivé chybové zprávy.
MPLAB - Build error

Varování:

Známé chyby prostředí MPLAB při překladu:

  • MPLAB může hlásit chyby při překladu ve chvíli, kdy z projektu odeberete soubor. V takovém případě vymažte soubor Makefile-default.mk, který je v adresáři <adresar_projektu>\nbproject. MPLAB si vymazaný soubor při dalším pokusu o překlad vygeneruje znovu.
  • MPLAB může hlásit chyby při překladu v souvislosti s chybějícím souborem v adresáři <adresar_projektu>\dist\default\production. V takovém případě zkontrolujte, jestli se překlad podařil (ve spodní části - karta Output > karta s názvem projektu) a pokud ano, tak chybu ignorujte. Pokud chyba přetrvává, zkontrolujte, zda nemáte v cestě k projektu nějaké speciální znaky.

Pokud byl překlad úspěšný, tak lze spustit simulaci pomocí tlačítka Debug Project, resp. Debug Main Project. MPLAB - Debug

Simulátor obsahuje běžné volby:

  • Finish Debugger Session: ukončení simulace,
  • Pause: Pozastavení simulace na aktuální instrukci,
  • Reset: Návrat na adresu 0,
  • Continue: Pokračování pozastavené simulace,
  • Step Over: Vykonání jedné instrukce (neskáče dovnitř podprogramů),
  • Step Into: Vykonání jedné instrukce (skáče dovnitř podprogramů),
  • …​

Breakpointy lze nastavit/zrušit kliknutím na číslo řádku.

3.2. Prohlížení aktuálních dat

Simulátor umožňuje prohlížet následující položky (při první simulaci je nejprve nutno tyto položky zobrazit):

  • Obsah programové paměti včetně aktuálně zpracovávané instrukce (Window > Target Memory Views > Program Memory). Doporučený Format: Code (volba ve spodní části karty Program Memory),
  • Obsah datové paměti (Window > Target Memory Views > SRAM Data Memory). Doporučený Format: Symbol,
  • Obsah obecných i speciálních registrů (Window > Target Memory Views > I/O Memory (SFRs)). Doporučený Format: Individual,
  • Simulátor displeje a tlačítek (Tools > Arduino > Arduino Display Kit).

Pozice jednotlivých karet lze měnit a zobrazit si jich tak více najednou.
MPLAB - Okna simulace

Pokud jste ukázkový kód odsimulovali úspěšně, pak na kartě Program Memory bude šipka u řádku end: JMP 0x102 a na kartě I/O Memory (SFRs) budou v registrech r16 a r17 hodnoty 42 a 100 (viz předchozí screen). Datová paměť, displej ani tlačítka nebyly v ukázce použity - na jejich kartách tedy nebude nic k vidění.

Varování:

Okna zobrazující obsah paměti občas ukazují nesmyslná data (zejména po spuštění IDE a změně hlavního projektu). Pokud máte podezření, že data nedávají smysl (nejčastěji rozpoznatelné podle toho, že adresy v tabulce nejdou postupně za sebou), tak ve spodní části panelu znovu vyberte stejné hodnoty v položkách Memory a Format - to by mělo obsah tabulky aktualizovat.

4. Programování vývojového kitu Arduino Uno + LCD Keypad Shield

Nejprve přeložte zdrojový kód pomocí tlačítka Build Project, resp. Build Main Project. MPLAB - Build

Varování:

Známé chyby prostředí MPLAB při překladu:

  • Pokud MPLAB při překladu nevygeneruje soubor .hex, tak klikněte pravým tlačítkem na název projektu v levé části na kartě Projects a vyberte volbu Properties. V levé části pak vyberte řádek AVR Asm (Global Options) a v pravé části pak odškrtněte a znovu zaškrtněte volbu Generate HEX file. Poté okno potvrďte a znovu projekt přeložte.
  • MPLAB může hlásit chyby při překladu ve chvíli, kdy z projektu odeberete soubor. V takovém případě vymažte soubor Makefile-default.mk, který je v adresáři <adresar_projektu>\nbproject. MPLAB si vymazaný soubor při dalším pokusu o překlad vygeneruje znovu.
  • MPLAB může hlásit chyby při překladu v souvislosti s chybějícím souborem v adresáři <adresar_projektu>\dist\default\production. V takovém případě zkontrolujte, jestli se překlad podařil (ve spodní části - karta Output > karta s názvem projektu) a pokud ano, tak chybu ignorujte. Pokud chyba přetrvává, zkontrolujte, zda nemáte v cestě k projektu nějaké speciální znaky.

Nahrávací SW lze spouštět pomocí příkazové řádky

avrdude -P <nazev_portu> -p m328p -b 115200 -c arduino -U f:w:<hex_soubor_vcetne_cesty>:i

ale je i možnost využít GUI v panelu Tools > Arduino > ArduinoProgrammer.

Okno GUI programovacího SW

Vyberte .hex soubor, zvolte COM port, na kterém je vývojový kit připojen (na školních PC typicky COM port s nejvyšším číslem) a stiskněte Program device. Výsledek programování lze vyčíst v části Log.

Varování:

V adresáři projektu jsou typicky dva .hex soubory.

  • V kořenovém adresáři s názvem <jmeno_projektu>.hex. Ten vzniká během spouštění simulace.
  • V adresáři <adresar_projektu>\dist\default\production s názvem <jmeno_projektu>.X.production.hex. Ten vzniká během překladu tlačítkem Build Project, resp. Build Main Project.

Důrazně doporučujeme, abyste si v okně výběru .hex souboru zobrazili detaily souborů a při výběru souboru důsledně kontrolovali, zda nevybíráte nějakou starší verzi.

Detaily .hex souboru

Program ve vývojovém kitu běží bez jakékoli vazby na PC, tzn. nedá se v něm krokovat, a běží plnou rychlostí (tj. 16 MHz). To znamená, že když chcete, aby program čekal, musíte na příslušné místo v programu umístit čekací smyčku (např. jmp PC – nekonečnou smyčku).