Changes for page LPC11xx ARM Entwicklung

Last modified by Florian Völzke on 2020/09/27 10:55

From version 20.1
edited by Christian B.
on 2018/02/06 23:10
Change comment: There is no comment for this version
To version 9.1
edited by Stefan Taferner
on 2016/02/28 19:56
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.Doumanix
1 +xwiki:XWiki.StefanT
Content
... ... @@ -1,107 +1,34 @@
1 -(% class="row" %)
2 -(((
3 -(% class="col-xs-12 col-sm-8" %)
4 -(((
5 -(% class="jumbotron" %)
6 -(((
7 -(% class="container" %)
8 -(((
9 -Überblick über die ARM-Entwicklung mit LPCXpresso
10 -
11 -)))
12 -)))
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.
13 13  
14 -(% class="wikigeneratedid" %)
15 -Die Selfbus ARM Plattform ist die Plattform für zukünftige Selfbus-Projekte. Über viele Jahre waren der LP922FN bzw. der LP922FDH die gesetzten Prozessoren der Selfbusgeräte. Da diese jedoch schon lange nicht mehr produziert werden und immer schwerer zu beschaffen sind (Verfügbarkeit, Lieferdauer, Qualität (Teilweise Fakes, teilweise ohne Bootloader)), muss der ARM **LPC1115** bzw. **LPC1114** in den Fokus rücken.
3 +Für Interessierte gibt es hier eine Sammlung des bisherigen Wissens.
16 16  
17 -= Quickstart mit einem fertigen VirtualBox Image =
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.
18 18  
19 -(% class="box warningmessage" %)
20 -(((
21 -Aktuell befindet sich ein kleiner Fehler im Selfbus-Code, der mit dem Image ausgeliefert wird. Wer nicht mit dem Git abgleicht, müsste in der ##sblib/src/main.cpp## folgendes stehen haben: ##if (!bcu.applicationRunning())##
22 -Richtig wäre aber:## if (bcu.applicationRunning())##
23 -)))
7 +=== Prozessor ===
24 24  
25 -Wer seine Entwicklungsumgebung sauber getrennt betreiben will oder wer einfach so schnell wie mögllich einen Blick in die Selfbus-Entwicklung mit dem ARM werfen will, kann mit diesem Image vom 29.01.2018 recht schnell los legen.
26 -
27 -Das image beinhaltet
28 -
29 -* Ubuntu 16.04 LTS
30 -* LPCXpresso 8.2.2 mit installiertem Git Client
31 -* GitKraken zur visuell unterstützten Sourcecode-Verwaltung
32 -
33 -Man kann sich also [[VirtualBox herunterladen>>https://www.virtualbox.org/wiki/Downloads]], das [[Selfbus ARM Developer Image (Selfbus Dev LPC11xx.ova)>>https://www.amazon.de/clouddrive/share/DrtE0xuvLclr7FxfR0KVj41ZiOwnxKHJ9pNwVsecX20]] herunterladen (3,41GB), extrahieren und in VirtualBox importieren. Ggf. sollte man noch die Einstellungen zu CPU (1 Kern) und Arbeitsspeicher (2GB) in der virtuellen Maschine anpassen.
34 -
35 -Nach dem Starten der Maschine wird man automatisch mit dem **Benutzer// //**//sbdeveloper //angemeldet. Das **Passwort **des Users ist //selfbus//. Die Entwicklungsumgebung kann mit einem Doppelklick auf das Symbol auf dem Desktop gestartet werden.
36 -
37 -Der** Eclipse Workspace** liegt im Verzeichnis des Benutzers unter //sb_development/sb_LPC11xx_workspace//
38 -Der aus Git geklonte **Selfbus Quellcode** liegt im Verzeichnis des Benutzers unter //sb_development/sb_sourcecode/lpc11xx//. Dort wiederum gibt es entsprechend der Github-Struktur ein Verzeichnis für die sblib und eines für software-arm-incubation.
39 -
40 -Das übersetzen der ersten Programme (Details siehe unten) sollte mit dem Image auf Anhieb funktionieren.
41 -
42 -(% class="box infomessage" %)
43 -(((
44 -**LPCXpresso aktivieren**
45 -\\Ohne Aktivierung könnt ihr weder Programme größer 8k debuggen, noch (und das ist schlimmer) kann man direkt aus der Entwicklungsumgebung ein Programm auf einen Prozessor spielen (z.B. das Entwicklungsboard).
46 -\\**Hinweis zur Aktivierung der LPCXpresso Umgebung auf nxp.com:** es gibt aktuell (Februar 2018) wohl immer noch Probleme auf der NXP Seite, so dass man manchmal in einer ENdlosschleife landet und der Browser eine Fehlermeldung ausgibt. Am besten nutzt ihr nicht die Links direkt aus dem Programm heraus sondern meldet euch "zu Fuß" auf [[https:~~/~~/www.nxp.com an>>url:https://www.nxp.com]], geht dann auf "**MY ACCOUNT**" -> **My LPCXpresso activations **und dann auf den Reiter "**Activate**". So kann man Händisch die generierte Seriennummer eingeben und den Aktivierungsschlüssel abrufen.
47 -)))
48 -
49 -
50 -= Schritt für Schritt Anleitung =
51 -
52 -[[[[image:arm_proto.jpg||style="float:right" width="200"]]>>attach:arm_proto.jpg||rel="__blank"]]
53 -
54 -Im Bild sieht man den Testaufbau von StefanT mit dem LPCxpresso Board. Rechts im Bild: das Gira Rauchmelder Modul (ohne LPC922), das für den Bus Zugang verwendet wird.
55 -
56 -== Prozessor ==
57 -
58 58  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.
59 59  
60 -== Abkürzungen ==
11 +=== Abkürzungen ===
61 61  
62 62  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.
63 63  
64 -== Entwicklungsplattform ==
15 +=== Entwicklungsplattform ===
65 65  
66 66  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"]].
67 67  
68 -Zum LPCxpresso gibt es ein fertiges Eclipse mit passendem Compiler und Debugger. Die Entwicklungsumgebung ist kostenlos (bis 256k Flash) und kann [[auf dieser Seite>>http://nxp.com/lpcxpresso||rel="__blank"]] heruntergeladen werden.
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.
69 69  
70 -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:
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.
71 71  
72 -**Geänderte Vorgangsweise die es erlaubt einfach Änderungen aus dem GIT Repositories in die Projekte zu bekommen bzw. auch Änderungen wieder ins GIT zurück zu bekommen.**
23 +Wichtig ist, dass man den CMSIS Core in den Workspace importiert. Der wird mit LPCxpresso mitgeliefert und kann über Quickstart / Import projects importiert werden. Der Pfad ist: Examples/Legacy/CMSIS_CORE/CMSIS_CORE_Latest.zip
73 73  
74 -Die unten beschrieben Methode "kopiert" allen Sourcen in das Workspace Verzeichnis. Das hat zur Folge das man den Bezug zu GIT verliert. Die hier beschriebene Method verweist von dem Workspace zu dem ausgecheckten Repositories. Daher reicht ein **git pull** um die aktuellen Änderungen in sein Projekt zu übernehmen.
25 +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.
75 75  
76 -1. Ist das Quickstart panel sichtbar? Wenn nicht, dann unter Window> Open Perspective> Other > C/C++ klicken.
77 -1. Es muss die CMIS Library für den LPC11xx importiert weren:
78 -1*. CMSIS Core in den Workspace importieren. Der wird mit LPCxpresso mitgeliefert.Nutzt das feld 'archive'
79 -Der Pfad ist: C:\NXP\LPCXpresso_7.9.2_493\lpcxpresso\Examples\Legacy\CMSIS_CORE\CMSIS_CORE_Latest.zip. <next>klicken. Man kann sich hier getrost nur die LPC11xx anhaken. 'finisch' klicken.
80 -1. Die **sblib **aus dem git checkout Verzeichns importieren:
81 -11. Unter "**File**" den Menüpunkt "**Import **" auswählen
82 -11. Im folgenden Fenster unter dem Ordner "**General**" "**Existing Projects into Workspace**" auswählen und "**Next**" klicken
83 -11. Im folgenden Fenster "**Select root directory**" anwählen und als Pfad das Verzeichnis in das ihr das "//software-arm-lib//" Repository ausgecheckt habt auswählen.
84 -11. Denn alle Projekte Abwählen und nur das **sblib **Projekt auswählen und "**Finish**" klicken
85 -11. Damit sollte nun das **sblib **Projekt im "Projekt Explorer" auftauchen.
86 -1. Nun das(die eigentlich(en) Applikationsprojekt in den Workspace importieren. Das geht ähnlich wie das Importieren der sblib, nur diesmal das software-arm-incubation Repository auswählen:
87 -11. Unter "**File**" den Menüpunkt "**Import **" auswählen
88 -11. Im folgenden Fenster unter dem Ordner "**General**" "**Existing Projects into Workspace**" auswählen und "**Next**" klicken
89 -11. Im folgenden Fenster "**Select root directory**" anwählen und als Pfad das Verzeichnis in das ihr das "//software-arm-incubation//" Repository ausgecheckt habt auswählen.
90 -11. Dann alle Projekte Abwählen und nur die Projekte der Applikationen die ihr kompilieren wollt auswählen und "**Finish**" klicken.
91 -1. Nun muss die **sblib **für das richtige Target kompiliert werden (//BCU1 //oder //BIM112//):
92 -11. Das **sblib **Projekt im "**Projekt Explorer**" markieren.
93 -11. Auf den Pfeil neben dem Hammer Symbol klicken und im Drop-Down Menü das richtige Build-Target auswählen (BCU1_Debug oder BIM112_Debug)
94 -1. Nun kann die Applikation gebaut werden. Dazu wieder das Projekt im "**Projekt Explorer"** selektieren und über das Hammer Symbol das entsprechende Target auswählen und bauen.
95 -1. Ihr solltet nun eine Debug fähige Applikation haben.
27 +=== Hardware Aufbau ===
96 96  
97 -Weiter Infos bzgl. der Einstellungen der Kompile Optionen findet ihr hier: [[Eigenes Selfbus ARM-Projekt anlegen.>>doc:Eclipse_ARM_Projekt]]
98 -\\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.
99 -
100 -== Hardware Aufbau ==
101 -
102 102  Wir verwenden ein LPCxpresso 1115 Board.
103 103  
104 -Für die Verbindung zum Bus wird eine normale Controller Schaltung verwendet, wie zum Beispiel der [[4TE Controller>>doc:Technik.Controller_922_4TE]]. Es wird der Teil mit der Bus Anbindung benötigt. Der LPC922 wird nicht eingesetzt.
31 +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.
105 105  
106 106  Dann werden folgende Verbindungen zwischen dem LPCxpresso und dem** LPC922 Sockel **im Controller Board hergestellt:
107 107  
... ... @@ -116,7 +116,7 @@
116 116  Im folgenden die Anschlußzuordnung von der LPCXpresso-Schnittstelle zur Programmierschnistelle der ARM Platine:
117 117  
118 118  
119 -(% style="height:222px; width:526px" %)
46 +(% height="222" width="526" %)
120 120  |=LPC-Expresso (JP4)|=Selfbus ISP LPC111x
121 121  | 1|1
122 122  | 2|2
... ... @@ -126,29 +126,29 @@
126 126  
127 127  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.
128 128  
129 -== Software Repository ==
56 +=== Software Repository ===
130 130  
131 131  Für die ARM Entwicklung zuständig ist das Github Repository [[software-arm-incubation>>url:https://github.com/selfbus/software-arm-incubation||rel="__blank"]].
132 132  
133 133  Dort interessieren derzeit folgende Projekte:
134 134  
135 -* [[sblib>>https://github.com/selfbus/software-arm-lib||rel="__blank"]] enthält unsere Selfbus ARM Library, mit der die Geräte aufgebaut werden. Die Library ist zu 90% komplett. Details siehe unten.
136 -
137 -* [[sblib/examples>>https://github.com/selfbus/software-arm-lib/tree/master/examples||rel="__blank"]] enthält Beispiele zur Verwendung der Selfbus ARM Library.
138 -
139 -* [[out8-bcu1>>https://github.com/selfbus/software-arm-incubation/tree/master/actuators/outputs/out8-bcu1||rel="__blank"]] ist eine Portierung der out8 Software für den [[8fach Binärausgang>>doc:Geräte.Ausgänge.Binärausgang_8x230_4TE]].
140 -
141 -* [[in8-bcu1>>https://github.com/selfbus/software-arm-incubation/tree/master/sensors/binary-inputs/in8-bcu1||rel="__blank"]] ist der Anfang einer Portierung der in8 Softwäre für den [[8fach Binäreingang>>doc:Geräte.Eingänge.Binäreingang_8x230_4TE]].
142 -
143 -* [[in4-bcu2>>https://github.com/selfbus/software-arm-incubation/tree/master/sensors/binary-inputs/in4-bcu2||rel="__blank"]] ist der Anfang eines in4 im BCU2 Modus der Library. Es soll ein ABB TS/U4.2 emuliert werden.
62 +* [[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.
63 +\\
64 +* [[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.
65 +\\
66 +* [[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]].
67 +\\
68 +* [[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]].
69 +\\
70 +* [[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.
144 144  
145 -== Die Selfbus ARM Library ==
72 +=== Die Selfbus ARM Library ===
146 146  
147 -=== Arduino like ===
74 +====== Arduino like ======
148 148  
149 149  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.
150 150  
151 -=== BCU2 Geräte ===
78 +====== BCU2 Geräte ======
152 152  
153 153  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.
154 154  
... ... @@ -155,19 +155,9 @@
155 155  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.
156 156  
157 157  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.
158 -)))
159 159  
86 +=== Work in Progress ===
160 160  
88 +Derzeit sind wir dabei die Selfbus ARM Library fertig zu schreiben und zu testen. Wer mitmachen möchte spricht bitte Stefan Taferner oder Martin Glück an.
161 161  
162 -(% class="col-xs-12 col-sm-4" %)
163 -(((
164 -(% class="box" %)
165 -(((
166 -**Contents**
167 -
168 -{{toc/}}
169 -)))
170 -)))
171 -)))
172 -
173 -
90 +Es gibt passende Controller Platinen in 4TE Gehäusebreite. Die Entwicklung der Schaltung steckt noch in den Kinderschuhen. Auch hier ist jeder willkommen der mitmachen möchte. Ansprechpartner sind Andreas "oldcoolman" Krieger und Stefan Taferner.