KeilFirstStep.doc

(71 KB) Pobierz

 

Pierwsze kroki

1          Wprowadzenie

źródło:/ Tools User’s Guide / uVision Getting Started

1.1         Tworzenie projektu

źródło: ../ Chapter 4 (Creating Aplications) /

  1. Utwórz plik projektu (np. projekt) i wybierz CPU (np. Atmel/AT89C52, Infineon/SAB80C535)

-          /Project / New Project

-          sugestia: każdy projekt umieszczaj w oddzielnej kartotece

-          zmiana CPU - /Project / Select Device for Target

  1. Utwórz pliki źródłowe:

-          /File / New

-          /File / Save as - pliki c (np. plikc1.c), pliki asm (np. plika1.asm)

  1. Dodaj pliki źródłowe do projektu

              - Project Window: Source Group 1, prawy przycisk, Add Files to Group, …

  1. [Dodaj i skofiguruj startup code dla danego urządzenia]

-          plik startup.a51 – pasuje do większości CPU

-          sugestia: w pierwszych ćwiczeniach plik startup nie jest potrzebny

  1. Ustaw opcje narzędzi dla projektu

              - /Project / Options for Target – domyślnie są wpisane zasoby wybranego CPU

              - Xtal (MHz): 11.0592; Memory model: Small; Code Rom Size: Large

              - np.Off-chip Code memory (eprom), Off-chip Xdata memory (ram)

6.      Kompilacja, linkowanie,

-          Project / Build Target

7.      Testowanie (debug)

-          /Debug / Start Stop Debug Session

  1. Konwersja na HEX

-          jeśli w /Project / Options for Target/ Output jest włączona opcja Create Executable, to zawszy po Build jest wykonywana konwersja na HEX

1.2         Narzędzia

źródło: ../ Chapter 3 (Development Tools) /

-          Integrated Development Environment uVision2 (IDE)

-          C51 ANSI Optimizing C Cross Compiler – z kodu C tworzy relokowalne moduły object

o       plikc1.c -> plikc1.obj, oraz tekstowy plikc1.lst

-          A51 Macro Assembler – z kodu asemblera tworzy relokowalne moduły object

o       plika1.asm -> plika1.obj, oraz tekstowy plika1.lst

-          BL51 Linker/Locator – z relokowalnych modułów object tworzy absolutne moduły object

o       plik*.obj -> plik MAP projekt.M51

-          LIB51 Library Manager – z modułów object tworzy biblioteki dla linkera

-          OH51 Object-HEX Converter – z absolutnych modułów object tworzy pliki Intel HEX

-          RTX-51 Real-time Operating Systems – wspomaganie projektów realtime

1.3         Architektura

źródło: :/ Tools User’s Guide / Assembler Utilities / Chapter 2 (Architecture Overwiew)

1. Program Memory (ROM)

- klasycznie 64kB ROM na program i stałe (można rozszerzyć o 32 banki po 64kB)

2. Internal Data Memory (IRAM)

- klasycznie 256B RAM wewnętrznego – banki rejestrów, bity, DATA, IDATA

- zawiera 3 oddzielne obszary pamięci (po128B): a) lower RAM, b) upper RAM, c) SFR

3. External Data Memory (XRAM)

- zewnętrzna RAM

- dostęp przez instrukcje używające 16- lub 8-bitowych adresów

 

2          Uruchamianie programu – menu Debug

źródło: :/ Tools User’s Guide / uVision Getting Started / Chapter 5 (Testings Programms) /

źródło: /Tools User’s Guide / uVision2 Debug Command

 

1. Do wyboru dwa tryby testowania (wybór /Project / Options for Target / Debug):

-          Simulator – testowanie z symulatorem programowym (łącznie z serial port, external I/O, timers)

-          Keil Monitor 51 – połączenie z emulatorem lub programem monitora

-          Settings: Port, Baudrate, RTS (Active), DTR (Active), Seral Interrupt (on)

2. Mapowanie pamięci

- /Debug / Memory Map (zwykle wystarczają ustawienia domyślne)

2.1         Symulator

Włączanie/wyłączanie trybu debug: /Debug/Start Stop Debug Session

- włączenie trybu debug ustawia następujące okna:

-          Disassembly Window (/View/Disassembly Window) - kod programu

-          Project Workspace = Regs (podgląd rejestrów)

-          Output Window = Command (do wprowadzania komend)

-          Memory Window (/View/Memory Window) – pogląd pamięci

Skróty do komend (Command Window)

- execution: g (go), p (pstep), o (ostep), t (tstep)

- memory: asm, define, d (display), e (enter), eval (evaluate) map, u (unassemble), ws (watchset)

- breakpoint: bd (break disable), be (break enable), bk (break kill), bl (break list), bs (break set)

- general, np: dir, exit, reset, set, …

2.2         Memory – wyświetlanie i zmiana zawartości pamięci

-          display – wyświetla zawartość pamięci

o       w oknie Memory

o       w oknie Command – komenda d, np. d c:0x10 (wyświetla kody i znaki)

o       adresy pamięci wg wzoru: c:0x100, d:0x200, x:0x100

o       wł/wył odświeżanie okna: /View / Periodic Window Update

enter – wprowadza wartość do pamięci

2.3         Breakpoint – tworzenie i usuwanie pułapek

Typy (/Debug / Breakpoints):

- Execution Break (E) – osiągnięcie zadanego adresu

- Access Break (A) – przed read or write do wskazanego miejsca w pamięci

- Conditional Break – gdy zadane wyrażenie jest prawdą (więcej niż osiągnięcie adresu)

Poza tym zmienna _break_ - do zatrzymania programu od symulatorem

2.4         Watchpoint – definiowanie obszarów pamięci i symboli do obserwacji

2.5         Ogólne operacje

 

3          Edycja

1. Help – Tools User Guide – Asembler / Architecture Overwiew: np. opis rozkazów

2. Zmiana opcji – Project / Option for (zależnie od bieżącego ustawienia kursora)

-          project

-          source group

-          wybranego pliku

4         
Dyrektywy kompilatora i linkera

źródło::/ Tools User’s Guide / Assembler Utilities

4.1         Struktura plików źródłowych

źródło: …/ Chapter1 (Introduction)

Wzorcowa struktura pliku źródłowego: \keil\c51\asm\template.a51

 

Oznaczenia klasycznych obszarów pamięci:

- CODE               – C:0000 ÷ C:FFFF

- DATA              - D:00 ÷ D:7F

- BIT                            - D:20 ÷ D:2F

- IDATA              - I:00 ÷ I:FF

- XDATA              - X:0000 ÷ X:FFFF

4.2         Symbole

Definicja symboli: EQU, SET

cos1                EQU 5                                          ; EQU nie pozwala zmieniać symbolu

cos2               SET  12                            ; SET pozwala definiować a także zmieniać

cos2               SET cos / 2

 

Rezerwacja miejsca: DS, DBIT              : define

Rezerwacja i inicjacja: DB, DW              ; define byte / word

 

W segmencie danych można zadeklarować:

label, np.:                            zm1:              DS              1                            ; rezerwuje 1 byte w przestrzeni DATA (label)

symbol              , np.:                            add1              DATA              20h                            ; adres w pamięci

4.3         Segmenty relokowalne: RSEG

1. Segmenty w pamięci ROM – kod programu i stałe:

prog              SEGMENT CODE                            ; definicja segmentu typu CODE (do programu)

stala              SEGMENT CODE                            ; definicja segmentu typu CODE (do stałych)

              RSEG              prog                                          ; przełącznik segmentów

             

2. Segmenty w IRAM

Relokowalny segment danych DATA jest umieszczany od adresu 8h (za bankiem 0)

dane1              SEGMENT              DATA                            ;definicja segmentu typu DATA

              RSEG              dane1

dane2              SEGMENT              IDATA              ;definicja segmentu typu IDATA

              RSEG              dane2

 

3. Segmenty w XRAM

danex               SEGMENT XDATA

              RSEG danex

4.4         Segmenty absolutne: CSEG, DSEG, BSEG, ISEG, XSEG

1. Segment DSEG umieszczać od adresu 8h:              DSEG at 8h

-          bez offsetu DSEG zaczyna się o adresu 0, co pokrywa się z rejestrami banku 0 (wpis do pamięci 00h-07h powoduje jednocześnie zmianę zawartości rejestrów)

-          linker generuje ostrzeżenie „...

Zgłoś jeśli naruszono regulamin