Wiki source code of LPC11xx ARM Entwicklung

Version 13.1 by Andreas Krieger on 2016/03/01 20:38

Show last authors
1 [[[[image:arm_proto.jpg||style="float: right;" width="200"]]>>attach:arm_proto.jpg||rel="__blank"]]Die Selfbus ARM Plattform ist gerade in Entwicklung. Der LPC1115 soll unsere Produktpalette dort ergänzen wo der bisherige LPC922 nicht genug Resourcen bietet.
2
3 Für Interessierte gibt es hier eine Sammlung des bisherigen Wissens.
4
5 Im Bild rechts sieht man meinen (StefanT) Test Aufbau mit dem LPCxpresso Board und rechts dem Gira Rauchmelder Modul das ich ohne LPC922 für den Bus Zugang verwende.
6
7 === Prozessor ===
8
9 Es wird die Prozessor-Familie LPC11xx von NXP verwendet. Zum Einsatz kommt der [[LPC1115>>url:http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC1115FBD48.html||rel="__blank"]]. Er hat 64k Flash und 8k RAM und viele nette Features. Die ARM Plattform von NXP gibt es nach oben hin mit Prozessoren die weit mehr Resourcen bieten. Wir sollten damit also auch für die Zukunft gut gerüstet sein.
10
11 === Abkürzungen ===
12
13 Da es sich bei unserem altbeliebten LPC922 und beim LPC1115 um NXP LPC Prozessoren handelt, hat es sich eingebürgert vom LPC922 als "LPC" zu reden und vom LPC11xx als "ARM". Damit braucht man nicht immer den Typ dazu schreiben und es ist klar was gemeint ist.
14
15 === Entwicklungsplattform ===
16
17 Entwickelt wird mit LPCxpresso. Um ca. 20 EUR bekommt man bei Embedded Artists ein Prototyping Board mit Programmer, mit dem auch debuggt werden kann: [[Link zu LPCxpresso 1115 bei Embedded Artists>>url:http://www.embeddedartists.com/products/lpcxpresso/lpc1115_xpr.php||rel="__blank"]].
18
19 Zum LPCxpresso gibt es ein fertiges Eclipse mit passendem Compiler und Debugger. Die Entwicklungsumgebung ist kostenlos (bis 256k Flash) und kann [[auf dieser Seite>>url:http://www.lpcware.com/lpcxpresso/download||rel="__blank"]] heruntergeladen werden.
20
21 Nach einem reboot legt man einen Workspace an. In diesen werden dann die SBLIB und die Sourcen für die Projekte aus dem Repository importiert. Geht dabei so vor:
22
23 ~1. Ist das Quickstart panel sichtbar? Wenn nicht, dann unter Window> Open Perspective> Other > C/C++ klicken.
24
25 2. Dann müssen 3 Sachen importiert werden. Hierzu jeweils im Quickstart panel rider 'start here' Menüpunkt 'import project(s)' klicken.
26
27 3. CMSIS Core in den Workspace importieren. Der wird mit LPCxpresso mitgeliefert.Nutzt das feld 'archive'
28
29 Der Pfad ist: C:\NXP\LPCXpresso_7.9.2_493\lpcxpresso\Examples\Legacy\CMSIS_CORE\CMSIS_CORE_Latest.zip. Man kann sich hier getrost nur die LPC11xx anhaken. 'finisch' klicken.
30
31 4. Die SBLIB importieren. Wie unter 3 beschrieben, quickstart>start here>import project(s), dann das untere feld(root directory) 'browse' und das GIT Verzeichnis software-arm-lib auswählen, wo auch immer bei euch das liegt.
32
33 5. Die Projekte importieren. Wie unter 3 beschrieben, quickstart>start here>import project(s), dann das untere feld(root directory) 'browse' und das GIT Verzeichnis software-arm-incubation auswählen, wo auch immer bei euch das liegt.
34
35
36 Für den normalen Benutzer wird der Programmer/Debugger, der beim LPCxpresso dabei ist, nicht nötig sein. Man kann den ARM auch mit einem einfachen seriellen Programmer programmieren. Ich kann aber nur jedem Entwickler die Anschaffung empfehlen. Der LPCxpresso ist nicht teuer, und der Hardware Debugger, den man dadurch bekommt, ist das Geld auf jeden Fall wert.
37
38 === Hardware Aufbau ===
39
40 Wir verwenden ein LPCxpresso 1115 Board.
41
42 Für die Verbindung zum Bus wird eine normale Controller Schaltung verwendet, wie zum Beispiel der [[4TE Controller>>doc:Controller_922_4TE]]. Es wird der Teil mit der Bus Anbindung benötigt. Der LPC922 wird nicht eingesetzt.
43
44 Dann werden folgende Verbindungen zwischen dem LPCxpresso und dem** LPC922 Sockel **im Controller Board hergestellt:
45
46 |=LPCxpresso Board|=Selfbus Controller Board
47 |P1.5|LPC922 Sockel Pin 2
48 |P1.10|LPC922 Sockel Pin 3
49 |GND|LPC922 Sockel Pin 5
50 |P1.8|LPC922 Sockel Pin 8
51
52 Weiters empfiehlt es sich einen 100pF Kondensator zwischen P1.8 und GND einzusetzen. Das hat in Tests sporadisch auftretende Spikes auf dem Bus Eingang beseitigt.
53
54 Im folgenden die Anschlußzuordnung von der LPCXpresso-Schnittstelle zur Programmierschnistelle der ARM Platine:
55
56
57 (% height="222" width="526" %)
58 |=LPC-Expresso (JP4)|=Selfbus ISP LPC111x
59 | 1|1
60 | 2|2
61 | 3|4
62 | 8|9
63 | 6|10
64
65 Weiterhin kann der selfbus Programmer zum Programmieren verwendung finden. Hierfür wird ein 10poliges 1:1 Kabel gefertigt. flashmagic verlangt allerdings *.hex Dateien, diese werden bereitgestellt.
66
67 === Software Repository ===
68
69 Für die ARM Entwicklung zuständig ist das Github Repository [[software-arm-incubation>>url:https://github.com/selfbus/software-arm-incubation||rel="__blank"]].
70
71 Dort interessieren derzeit folgende Projekte:
72
73 * [[sblib-cpp>>url:https://github.com/selfbus/software-arm-incubation/tree/master/sblib-cpp||rel="__blank"]] enthält unsere Selfbus ARM Library, mit der die Geräte aufgebaut werden. Die Library ist zu 90% komplett. Details siehe unten.
74 \\
75 * [[sblib-examples>>url:https://github.com/selfbus/software-arm-incubation/tree/master/sblib-examples||rel="__blank"]] enthält Beispiele zur Verwendung der Selfbus ARM Library.
76 \\
77 * [[out8-bcu1>>url:https://github.com/selfbus/software-arm-incubation/tree/master/out8-bcu1||rel="__blank"]] ist eine Portierung der out8 Software für den [[8fach Binärausgang>>doc:Binärausgang_8x230_4TE]].
78 \\
79 * [[in8-bcu1>>url:https://github.com/selfbus/software-arm-incubation/tree/master/in8-bcu1||rel="__blank"]] ist der Anfang einer Portierung der in8 Softwäre für den [[8fach Binäreingang>>doc:Binäreingang_8x230_4TE]].
80 \\
81 * [[in4-bcu2>>url:https://github.com/selfbus/software-arm-incubation/tree/master/in4-bcu2||rel="__blank"]] ist der Anfang eines in4 im BCU2 Modus der Library. Es soll ein ABB TS/U4.2 emuliert werden.
82
83 === Die Selfbus ARM Library ===
84
85 ====== Arduino like ======
86
87 Die ARM Library ist stark an die [[Arduino Library>>url:http://arduino.cc/en/Reference/HomePage||rel="__blank"]] angelehnt. Unterschiede zur Arduino Library sind dort zu finden wo unser Prozessor mehr bietet, da wir die Funktionen für unsere Applikations Programme auch benötigen werden. Speziell die Timer sind sehr universell einsetzbar.
88
89 ====== BCU2 Geräte ======
90
91 Neu ist auch das wir ab jetzt BCU2 Geräte emulieren können. Für den Programmierer unterscheiden sich die BCU2 Programme nicht großartig zu den bisherigen BCU1 Programmen. Es ist jedoch so dass auf Seiten ETS und der VD mehr Platz zur Verfügung steht. Wir können also jetzt dann mehr als - wie bisher - 31 Com Objekte verwenden.
92
93 Die Library kann dazu auf zwei Arten übersetzt werden. Entweder im BCU1 Modus oder im BCU2 Modus. Im BCU1 Modus ist sie etwas kleiner. Da sich BCU1 und BCU2 unterschiedlich verhalten sollte der BCU2 Modus nur für BCU2 Geräte verwendet werden und entsprechend BCU1 Modus für BCU1 Geräte.
94
95 Es muss bei der Verwendung im Projekt der Applikation das richtige BCU_TYPE Define gesetzt werden, und die passende Library eingebunden werden. Sonst lässt sich der Code am Ende nicht linken. WIe es in beiden Fällen (BCU1 und BCU2) funktioniert kann man sich bei den Beispielen out8-bcu1 und in4-bcu2 ansehen.