Die Entwicklungsumgebung Labor Technische Informatik

Werbung
Die Entwicklungsumgebung
Labor Technische Informatik
Prof. Dr.-Ing. F. Kesel
Dipl.-Ing. (FH) A. Reber
19.04.2011
Inhalt
1
Das Keil MCB1700 Board.......................................................................................2
2
Keil ARM MDK Toolchain .......................................................................................3
2.1
Projekterstellung..............................................................................................3
3
Download und Debugging ......................................................................................4
4
Neues Filekonzept beim Cortex .............................................................................5
4.1
4.1.1
4.1.2
Die Datei stdint.h und das Integerproblem ......................................................5
Hintergrund.......................................................................................................................5
Lösung..............................................................................................................................6
5
Grundstruktur für das Hauptfile ..............................................................................6
6
Nützliche Links .......................................................................................................7
__________________________________________________________________________________________
-1-
1
Das Keil MCB1700 Board
Abbildung 1 zeigt das MCB1700 Board mit der im Labor genutzten Orientierung. Das bedeutet, das sich
die Begriffe „oben, unten, links und rechts“ in den Anleitungen auf diese Ansicht beziehen.
Abbildung 1: Das MCB 1700 mit LPC1758
Weitere Leistungsmerkmale des Eval-Boards sind:

32 Bit LPC1758 Cortex-M3 mit 512 kB Flash und 64 kB SRAM

2 x serielle Schnittstellen

2 x CAN

QVGA Color LCD

Poti, LED-Reihe, Joystick und 2 Taster

100Mbit Ethernet

USB Interface
__________________________________________________________________________________________
-2-
2
Keil ARM MDK Toolchain
Im Labor arbeiten Sie unter Windows mit der aus dem Mikrocontroller-Labor bekannten µVision Oberfläche, in die der Compiler für den Controller eingebettet ist.
Abbildung 2: µVision4 mit dem Blinky von Keil
Für die Laborversuche verwenden Sie die Files von der Laborseite und nicht die Dateien, die in den
Verzeichnissen von Keil zu finden sind. Die Gründe sind unter Anderem folgende:



Sie sollen etwas lernen
In der Keil-Variante sind zum Teil Fehler enthalten
Die Hardware soll überleben
Wie schon bekannt, werden Sie keinen automatisch erzeugten Startup Code einbinden.
2.1
Projekterstellung
Die Erstellung eines neuen Projektes erfolgt wie die im Mikrocontroller-Labor. Als Prozessor wird unter
„Device -> NXP“ ein LPC1758 ausgewählt. Einzig unter „Target“ wird noch eine Checkbox selektiert, der
Rest ist schon korrekt eingestellt.
__________________________________________________________________________________________
-3-
Abbildung 3: Target Options
Die Speichereinstellungen sollten wie oben aussehen, das Häkchen für die MicroLib muss noch gesetzt
werden.
3
Download und Debugging
Beides findet mit Hilfe des ULINK-ME Adapters statt. Dazu muss unter „Options->Debug“ der ULINK
Cortex Debugger ausgewählt werden.
Abbildung 4: Options Debug
__________________________________________________________________________________________
-4-
4
Neues Filekonzept beim Cortex
ARM hat bei der Einführung der Cortex-Familie einen neuen Standard
eingeführt, CMSIS genannt. Das Kürzel bedeutet Cortex Microcontroller
Software Interface Standard und soll die Möglichkeit bieten, portable
Software für die unterschiedlichen Derivate zu schreiben. Dazu wird ein
herstellerunabhängiger Hardware Abstraktion Layer eingeführt.
system_LPC17xx.c
Enthält neben Definitionen nur die Funktion SystemInit(), die alle
zum Programmstart alle notwendigen Clock- und PLL-Register setzt.
stdint.h
Hier sind Typdefinitionen für die Variablen zu finden, siehe 4.1.
lpc17xx.h
Dies ist der controllerabhängige Teil der Definitionen. Die Datei besteht
zum großen Teil aus Strukturen, die im eigenen Programm einen
einfachen Zugriff auf die Peripherie ermöglichen.
core_cm3.h
Hier sind die Definitionen zu finden, die für alle Cortex-M3 gelten.
system_lpc17xx.h
Damit werden projektbezogenen Einstellungen für die Peripherie
gemacht. Diese Datei sollte nicht verändert werden.
startup_lpc17xx.s
Normaler Startup-Code für den µC.
Abbildung 5: Die neue Filestruktur
4.1
4.1.1
Die Datei stdint.h und das Integerproblem
Hintergrund
Bei der Erzeugung von plattformunabhängigem Code taucht ein Problem auf: Die Länge von Integervariablen. Um dieses Problem zu umgehen, wird immer mehr auf die Methode gesetzt, im Sourcecode
anstelle normaler Variablentypen spezielle Definitionen zu verwenden.
Kleines Beispiel:
Für einen 8051 hat ein short int die gleiche Länge wie eine int Variable, nämlich 16 Bit. In der Welt der
Cortex µCs ist der int aber doppelt so groß. Wird nun ein Cortex Modul auf einem 8051 genutzt, können
Probleme auftauchen. Wer nun der Meinung ist, das kommt nicht vor, sei auf die Datei GLCD verwiesen. Damit kann von verschiedenen µCs auf die unterschiedlichsten Grafik-LCDs zugegriffen werden.
__________________________________________________________________________________________
-5-
4.1.2
Lösung
Anstatt die Variablen wie folgt zu deklarieren:
unsigned int
unsigned char
uiZeilenLaenge;
ucBuchstabe;
// Anzahl Buchstaben pro Zeile
// Charakter
ZeilenLaenge;
Buchstabe;
// Anzahl Buchstaben pro Zeile
// Charakter
wird jetzt die Notation
uint32_t
uint8_t
verwendet.
In der stdint.h ist folgende Definition zu finden:
typedef unsigned int
typedef unsigned char
uint32_t;
uint8_t;
Damit kann nun im eigenen Sourcecode eine konkrete Länge angegeben werden, die für jede Plattform
auf den korrekten Typ umgesetzt werden kann, da der Compiler die Typdefinitionen aus der stdint.h
verwendet.
5
Grundstruktur für das Hauptfile
Neben dem schon bekannten Kopf aus dem Mikrocontrollerlabor
/*******************************************************************************
*
Projektname:
Lauflicht
*
Prozessor:
LPC1758 100 MHZ CPU / 25 MHz Peripherie
*
Funktion:
Lauflicht mit SYSTICK
*
Erstellungsdatum:
12.04.11
*
Bearbeiter:
AR
*
History:
*******************************************************************************/
#include "Lauflicht.h"
/* Definitions
*/
ist folgender Code wichtig, da der Compiler sonst einen Fehler meldet und die Peripherie nicht korrekt
initialisiert ist:
/*---------------------------------------------------------------------------Main Program
*----------------------------------------------------------------------------*/
int main (void)
{
SystemInit();
/* Init the LPC1758
*/
}
Die SystemInit() ist in system_LPC17xx.c zu finden und stellt alle internen Clockpfade und PLLs
korrekt ein. Im Gegensatz zu den originalen Dateien von Keil ist eine grafische Bearbeitung des Files
abgeschaltet.
__________________________________________________________________________________________
-6-
6
[1]
Nützliche Links
CMSIS:
http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
[2]
MCB1700:
http://www.keil.com/support/man/docs/mcb1700/mcb1700_intro.htm
[3]
LPC1758
http://www.nxp.com/documents/data_sheet/LPC1758_56_54_52_51.pdf
[4]
LPC1700 User Manual
http://ics.nxp.com/support/documents/microcontrollers/pdf/user.manual.lpc17xx.pdf
[5]
ARM Cortex-M3, Second Edition, Joseph Yiu, ISBN: 978-1-85617-963-8
__________________________________________________________________________________________
-7-
Herunterladen