Forum: Mikrocontroller und Digitale Elektronik Starthilfe für Cortex M3


von Monem (Gast)


Lesenswert?

Hallo Leute,
Ich versuche einen Einstieg in die MC-Programmierung mit dem Cortex M3 
zu finden. Bei meinem System Handelt es sich um einen LPC1768 Chip von 
NXP und die Programmierumgebung MDK-µVision von Keil. Ich kann bereits 
in C Programmieren. Was ich brauche ist eine Starthilfe darüber, wie man 
ein Projekt mit µVision für speziel NXP-1768 anliegt um z.B ein 
einfaches "Hello World" Programm zu erzeugen und simulieren. Auch für 
weitere Tips bezüglich Bibliothek, Simulation am PC, Programmbeispiele 
u.s.w bin ich euch sehr dankbar.

mfg Monem

von N. Müller (Gast)


Lesenswert?

Hallo,

ich habe vor einer Woche angefangen mit dem LPC1769 LPCXpresso-Board und 
der kostenlos zur Verfügung gestellten Entwicklungsumgebung von CodeRED.

Als erstes würde ich mir mal die ganzen Beispiele und PDFs herunterladen 
(siehe ganz unten):
http://www.nxp.com/#/pip/pip=[pip=LPC1768FBD100]|pp=[t=pip,i=LPC1768FBD100]

Da hat es auch Beispielprojekte für KEIL dabei soweit ich weis 
(zumindest beim LPC1769). Dann noch ein paar praktische Anwendungen wie 
BLDC-Motor-Controller usw.

Dann noch das  LPC17xx User Manual  :
http://www.nxp.com/documents/user_manual/UM10360.pdf

Und Du hast alles wichtige zusammen.

Hab jetzt in der ersten Woche die GPIO/INT, UART, PWM, Timer, ADC & DAC 
hinbekommen und für mein Projekt erweitert / ergänzt.
Ein Tutorial wie hier für die ATMELs habe ich noch keins finden können.

Grüße
N.Müller

von N. Müller (Gast)


Lesenswert?

Achso...solltest Du Dich noch umentscheiden was die IDE angeht, im 
Getting_Started_PDF [1] ist das anlegen eines Projektes, debugging 
usw. für die CodeRed IDE beschrieben.

Grüße

[1] 
http://ics.nxp.com/support/documents/microcontrollers/pdf/lpcxpresso.getting.started.pdf

von elmsfeuer (Gast)


Lesenswert?

Hi,

Dort findest alle benötigten Dokumente, Treiber, etc.:
http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1768

Direktlink zur aktuellen CMSIS-Bibliothek:
http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip

In der CMSIS-Lib. findest du die aktuellen Treiber für die LPC17xx uCs, 
sowie Beispiele zu allen Peripherien für Keil und andere IDEs.

Am besten holst du dir ein fertiges Board um den Hardwareproblemen 
ersteinmal aus dem Weg zu gehen, z.B. 
Beitrag "ARM LPC1768 Cortex M3 LCD Board - Einstieg in die Welt der ARMs"

Viel spass...

MfG

von Monem (Gast)


Lesenswert?

Danke euch, Es geht mir ersteinmal um die Simulation am PC. Konkret will 
ich ersmal wissen wie ich ein Hello World für LPC17XX erzeugen und 
ausgeben kann (ohne Hardware), und was ich für das Projekt brauche. Also 
zum testen gehe ich wie folgt vor:
1-µVision4 starten;
2-Project->New µProject;
3-den LPC1768 aus der Liste als Zielgerät auswählen;
4-ein C-Dati anlegen und dem Projekt hinzufügen;
5-Danach folgende Code eingeben:

#include "LPC17XX.h"
#include "stdio.h"
int main(void){
   printf("Hello World\n");
}

So, nun könnte man meinen alles sei doch richtig, aber ich bekomme den 
Fehler: Hallo.axf: Error: L6411E: No compatible library exists with a 
definition of startup symbol __main.

Naja ich schau mir nochmal die Links an.

mfg Monem

von Frank B. (f-baer)


Lesenswert?

Wohin soll deine printf() das denn schreiben? Die Verwendung solcher 
Funktionen auf einem Mikrocontroller ist am Anfang recht aufwändig, für 
einen Anfänger mit Sicherheit nicht das Richtige. Lass erst einmal ein 
paar LEDs blinken und lies den Zustand von ein paar Tastern ein. Als 
nächstes kannst du mit dem ADC spielen und dann die Timer und 
Interruptfunktionen ausprobieren.

Dein Fehler kommt vom Linker.
Irgendwo in der startup.s sollte etwas in der Richtung stehen:
1
IMPORT __main
2
LDR R0, __main
3
BX R0

Dieses Symbol kann der Linker nicht richtig zuordnen. Schau nochmal 
nach, ob die C-Datei wirklich Teil des Projektes ist.

von Monem (Gast)


Lesenswert?

@Frank,
Ja, hast recht in diesem Fall hatte ich tatsächlich vergessen die C 
datei hinzuzufügen,  allerdings wird jetzt eine neue Fehlermeldung 
ausgegeben:
Hallo.axf: Error: L6218E: Undefined symbol SystemInit (referred from 
startup_lpc17xx.o)
Ich dachte ich könnte das einfach an UART ausgeben oder so.
Gut, ich werd es dann ersmal mit LED's probieren. Wie gesagt, wenn auch 
hierbei einpaar Beispielprogramme oder Toutorials zu finden wären würde 
ich mich sehr darüber freuen.

besten Dank
monem

von Pete K. (pete77)


Lesenswert?

Wie wäre es mal mit dem Studieren des Datenblatts?

von Frank B. (f-baer)


Lesenswert?

Monem schrieb:
> Ich dachte ich könnte das einfach an UART ausgeben oder so.
> Gut, ich werd es dann ersmal mit LED's probieren. Wie gesagt, wenn auch
> hierbei einpaar Beispielprogramme oder Toutorials zu finden wären würde
> ich mich sehr darüber freuen.

Dafür brauchst du eine Funktion, die die Ausgaben von printf() auf die 
UART umlenkt. Deine eigene putc() eben.
In den Keil-Beispielen sollte ein Blinky-Programm sein, das hilft 
erstmal sehr weiter.
Darüber hinaus gibt es auch von NXP viele Beispiele. Such dir einfach 
das Passende heraus.

SystemInit() ist ein elementarer Bestandteil von CMSIS (google!). 
Entweder, du schreibst dir die Funktion selbst, dazu brauchst du ein 
ziemlich gute Kenntnisse über die Controller-HW und komplexe Strukturen 
in C. Wenn dir das erstmal zu viel ist, dann benutze die Datei 
system_LPC17xx.c aus den Keil-Beispielen, zum Beispiel für das 
MCB1700-Evalboard. Damit solltest du auf jeden Fall lange hinkommen.

Pete K. schrieb:
> Wie wäre es mal mit dem Studieren des Datenblatts?

Dein Getrolle kannst du getrost sein lassen. Im Datenblatt zum LPC17xx 
steht nichts zu dieser Funktion, oder dass sie Teil von CMSIS ist.
Die Informationen aus Handbuch und Datenblatt zu CMSIS sind sowieso 
recht übersichtlich.

von flex (Gast)


Lesenswert?

Hallo Zusammen,

ich möchte auch mit der Programmierung von solchen Cortex M3 Dingern 
beginnen.
Meine C Kenntnisse sind nach bald 20 Jahren doch schon recht 
eingerostet... Sollte aber mit etwas üben wieder gehen.

Gibt es auch Entwicklungstools für Mac OSX?
Und kennt jemand ein gutes Buch das quasi bei Null anfängt?

Ich hab mir ein STM32F103VE Board besorgt in der Hoffnung, dass ich 
damit schonmal etwas zum Anfangen hab.


Über Tips für Anfänger bin ich sehr dankbar.



viele Grüsse
Flex

von Frank B. (f-baer)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.