Pierwsze kroki
źródło:/ Tools User’s Guide / uVision Getting Started
źródło: ../ Chapter 4 (Creating Aplications) /
- /Project / New Project
- sugestia: każdy projekt umieszczaj w oddzielnej kartotece
- zmiana CPU - /Project / Select Device for Target
- /File / New
- /File / Save as - pliki c (np. plikc1.c), pliki asm (np. plika1.asm)
- Project Window: Source Group 1, prawy przycisk, Add Files to Group, …
- plik startup.a51 – pasuje do większości CPU
- sugestia: w pierwszych ćwiczeniach plik startup nie jest potrzebny
- /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
- jeśli w /Project / Options for Target/ Output jest włączona opcja Create Executable, to zawszy po Build jest wykonywana konwersja na HEX
ź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
ź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
ź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)
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, …
- 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
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
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
źródło::/ Tools User’s Guide / Assembler Utilities
ź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
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
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
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 „...
Oferus