Ausarbeitung

Inhaltsverzeichnis:

1. Einführung
2. Spezifikation
3. Durchführung
    3.1 Umsetzung mit dem Demoprojekt "LwIP_HTTP_Server_Netconn_RTOS" von STM
    3.2 Umsetzung mit VisualGDB
4. Erkenntnisgewinn des Projektteams
5. Ergebnis und Ausblick
6. Weitere Projektunterlagen

 

Im folgenden wird die Vorgehensweise des Projekts dargestellt, um die Durchführung nachvollziehen zu können und um zukünfigen Projektgruppen, die an ähnlichen Themen arbeiten, den Einstieg in das Projekt zu erleichtern. Es werden zum einen theoretische Grundlagen für das leichtere Verständnis der Thematik dargestellt und zum anderen verwendete Hard- und Software beschrieben.

 

1. Einführung

Zur Bearbeitung des Projekts wurden verschiedene Materialen zur Verfügung gestellt:

Da für das "Microcontroller development kit for ARM®" (MDK-ARM) von Keil® keine Lizenzen vorhanden waren, fiel die Entscheidung auf die "System Workbench for STM32", welche auf der Internetseite von STM frei zugänglich ist.


2. Spezifikation

Zum Erstellen eines Webservers, auf dem Cocktails bestellt werden können, wird ein lwIP TCP/IP Stack verwendet, basierend auf einer Netconn API.

TCP/IP

Zur Kommunikation einzelner Komponenten eines Netzwerks muss ein Kommunikationsprotokoll (Protokoll) ähnlich zu Verhaltensregeln festgelegt werden. Hierbei werden Format der Nachrichten und Aktionen spezifiziert. Für verschiedene Teilprobleme werden unterschiedliche Protokolle verwendet, deshalb muss für die Gesamtaufgabe ein Protokollstapel eingesetzt werden. (Quelle: Christoph Meinel, Harald Sack: Internetworking - Technische Grundlagen und Anwendungen, Kapitel 2, pp 31-67, Springer Berlin Heidelberg) Die verschiedenen Protokolle sind in Schichten organisiert, dabei ist jeder Schicht ein eigenes Protokoll zugeordnet. Diese sind in Schichtmodellen für Netzwerke (ISO-OSI-Referenzmodell, DoD-Referenzmodell) zusammengefasst. Im DoD-Referenzmodell bilden die Schichten gemeinsam die TCP/IP-Protokollfamilie (Protokollstapel).

TCP/IP steht für "Transmission Control Protocol/Internet Protocol" und stellt den Standard-Protokollstapel für Anbindungen an das Internet dar, wodurch Datenpakete zwischen Netzwerkteilnehmern ausgetauscht werden können. Dieser Stapel besteht ebenfalls aus vier aufeinander aufbauenden Schichten, siehe Abbildung.

In der Netzzugangsschicht und in der Internetschicht werden das IP-Protokoll verwendet, in der Transportschicht wird per TCP und UDP (User Datagram Protocol) übertragen. IP hat dabei die Hauptaufgabe Daten zwischen Netzwerken zu übertragen. Jedes Betriebssystem hat seinen eigenen TCP/IP-Stack, welcher für die Verarbeitung von von ein- und ausgehenden IP-Paketen und deren Weiterleitung zuständig ist. (Quelle: codeplanet.eu)

IP-Adressen und Ports

IP(v4)-Adressen sind aus vier durch Punkte getrennten Zahlen zwischen 0 und 255 aufgebaut. Die Adresse besteht aus der Netzadresse und der Adresse des Rechners (des Hosts) im Netz. Damit übermittelte Daten am Zielrechner der richtigen Anwendung zugeordnet werden können, muss außerdem der entsprechende Port (mittels einer Portnummer aus 16 Bit) angegeben werden. Diese Kombination aus IP-Adresse und Portnummer wird als Socket bezeichnet. (Quelle: codeplanet.eu)

lwIP

Light-weight IP ist eine "leichtgewichtige" Implementierung des TCP/IP-Stacks, welcher auf die begrenzten Ressourcen von Embedded Systems angepasst ist. Es werden unter anderem IP, DHCP clientes und APIs unterstützt.  (Quelle: lwIP von Adam Dunkels)

Subnetting

Subnetting bezeichnet die Aufteilung eines zusammenhängenden Adressraums von IP-Adressen in mehrere kleine Adressräume, um die Vergabe von IP-Adressen einzugrenzen. Zur Abgrenzung wird die Subnetmask, beispielsweise 255.255.255.0 eingestellt. Hiermit könnten in einem Adressbereich IP-Adressen von 192.168.0.0 bis 192.168.0.255 vergeben werden. Die erste IP-Adresse des Adressbereichs (.0) kennzeichnet die Netzwerk-Adresse, die letzte (.255) die Broadcast-Adresse, damit bleiben 254 Host-Adressen. Bei einer Subnetmask 255.255.0.0 können 65.534 Host-Adressen vergeben werden usw. (Quelle: www.elektronik-kompendium.de)

RTOS

Ein RTOS (Real Time Operating System) ist ein Betriebssystem, das speziell auf die Bedürfnisse eines Embedded Systems angepasst ist. Hierbei ist vor allem das deterministische Verhalten des Schedulers wichtig, sodass die Echtzeitanforderungen an Systeme gewährleistet werden können (was häufig dadurch umgesetzt wird, dass der Benutzer den Threads eine Priorität zuordnen kann). (Quelle: freertos.org) ...

API, Netconn API

Ein API (Application Program Interface, "Schnittstelle zur Anwendungsprogrammierung") ist eine Sammlug von Funktionen zur Verwendung eines Fremdsystems. Diese wird vom Softwarehersteller veröffentlicht, um es anderen Entwicklern zu ermöglichen, Produkte für die Software zu implementieren. So gibt es viele verschiedene APIs, z.B. eine Amazon API, YouTube APIs, Google Maps API, usw. (Quelle: HowStuffWorks) Das Netconn API ist eine sequenzielle API zur Ermöglichung von Multithread-Prozessen und erfordert ein RTOS. (Quelle: UM1713)

 

3. Durchführung

3.1 Umsetzung mit dem Demoprojekt "LwIP_HTTP_Server_Netconn_RTOS" von STM

Als erster Ansatz zur Umsetzung des Projekts wird das entsprechende Demoprojekt von STM aus dem STM32CubeFW für die "System Workbench for STM32" verwendet. Das STM32CubeFW ist ein Paket, das zum einen den STM32CubeMX beinhaltet, mit welcher ein Projekt mit Hife eines Wizards neu erstellt werden kann, außerdem ist eine Embedded Software Plattform vorhanden, die von STM je Board-Serie ausgeliefert wird. Sie umfasst die Hardware Abstraction Layer (HAL), die Middleware (mit Betriebssystem RTOS, Grafik usw.) und verschiedene Projektbespiele, siehe Abbildung. Das STM32CubeMX wird im weiteren Projektverlauf nicht verwendet, da auf ein bestehendes Demo-Projekt zurückgegriffen wird, wodurch die Nutzung des Wizards entfällt. (Quelle: UM1713, Doku zu STM32Cube)

 

Nun soll die html-Seite, die standardmäßig eingebunden ist, durch eine eigene Seite ersetzt werden, welche eine Cocktailkarte anzeigt, siehe Abbildung. Per Klick auf den jeweiligen "Bestellen"-Text soll über WLAN eine Nachricht (ein Byte) an das STM-Board gesendet werden, in der die IP-Adresse und die Bestellung übermittelt wird. Diese Informationen sollen auf dem STM-Board verarbeitet werden und entsprechend der Anforderungsliste auf eine Bestellliste hinzugefügt werden. Die Internetseite (siehe Abbildung) wurde im Microsoft Expression Web in Version 4.0.20705.0 erstellt.

 

Bei der Bearbeitung des Projekts ergaben sich verschiedene Probleme. Zum einen fehlten den Gruppenmitgliedern wesentliche Vorkenntnisse im Bereich der Netzwerk- und Bustechnik, was die Herstellung einer funktionsfähige Verbindung von dem STM-Board, Router und eigenem PC erschwerte. Dieses Problem konnte gelöst werden, indem auf ein Demoprojekt von STM zurückgegriffen wurde.

Vorschlag zur Modifikation der Aufgabenstellung

Als neues Ziel kann anvisiert werden, dass ein Webserver zur Verfügung gestellt wird, auf dem eine eigene Website mit der Cocktailkarte geöffnet werden kann. Es wird vorgeschlagen, die Verarbeitung der Bestellung und die Warteschlange (welche die Gruppe bereits von Herrn Ewert erhalten hat) in einem weiteren Projekt im folgenden Semester zu bearbeiten, siehe "Verbesserungen".

Neu formuliertes Ziel

Da die zu Anfangs gestellte Aufgabe in dem verfügbaren Zeitraum nicht erfüllt werden kann, formuliert die Gruppe folgendes neues Ziel:

 

Um die eigene Website im Code einzubinden und aufzurufen, war eine intensive Einarbeitung in den Quellcode erforderlich. Es wurde zunächst versucht, die aufgerufene html-Seite zu verändern. Anschließend wurde der Aufruf der Internetseite angepasst, sowie versucht die Bilder zu ändern. Da diese Ansätze fehlschlugen, wurde vermutet, dass die Startwebsite von einer anderen Index-Datei aus aufgerufen wird. Dementsprechend wurden verschiedene mögliche Dateien untersucht. Weiterhin wurden auf dem STM-Board (im Explorer) nach versteckten Dateien gesucht, ob die Websites hier gespeichert werden. Nachdem auch hier keine Lösung gefunden werden konnte, wurde eine Anfrage im Anfrage im ST-Forum gestellt, um Hilfe von anderen STM32F7xx-Entwicklern zu bekommen. Daraufhin erhielt die Gruppe folgende Antwort:

Daraufhin beschloss die Gruppe, diesen Ansatz nicht weiterzuverfolgen, da es in der verbleibenden Zeit nicht möglich gewesen wäre, das Projekt auf diesem Weg abzuschließen.

3.2 Umsetzung mit VisualGDB

Als alternativer Ansatz wurde die Umsetzung mithilfe des cross-platform Tools "Visual GDB" für embedded Systeme in Visual Studio gewählt. Hierfür wurde "Visual Studio Enterprise 2015 With Update 1" verwendet und die Optionen für C++ nachinstalliert. Anschließend wurde "VisualGDB" (V 5.2) in der 30 Tage Testversion von visualgdb.com gedownloadet und installiert. Die Inbetriebnahme wurde nach der Anleitung für den STM32F46NG von VisualGDB durchgeführt und der Webserver erfolgreich im Browser aufgerufen. Im "static const char Startpage" (im Originalcode ursprünglich "HelloWorld") wird die Website per http festgelegt, siehe Abbildung.  

Hier wurden Änderungen vorgenommen, die nach erneutem Build und Debuggen auf dem Webserver sichtbar wurden. Somit konnte erstmals eine eigene Website dargestellt werden. Folglich wird dieser Ansatz als machbar bewertet und könnte in zukünftigen Bearbeitungen weiter verfolgt werden. Es wäre noch zu prüfen, wie hier eine bestehende html-Site (die beispielsweise in Expression Web erstellt wird) aufgerufen und wie die Bestellung versendet werden kann (ob dies beispielsweise über den Aufruf einer weiteren internen Website realiserbar ist). Aufgrund des zeitlichen Rahmens kann dies in diesem Projekt nicht mehr durchegeführt werden.

 

4. Erkenntnisgewinn des Projektteams

 

5. Ergebnis und Ausblick

Bei Abschluss des Projekts ist es der Gruppe gelungen, mit zwei verschiedenen Ansätzen einen Webserver auf dem STM32F746NG-Board zu erstellen. Die Verwendung des Projekts für die SW4STM32 wird allerdings als sehr schwieirg und wenig erfolgsversprechend für die Weiterarbeit bewertet. Die Erweiterung VisualGDB für Visual Studio könnte für die Implementierung einer Warteschlange besser geeignet sein, da der Projektaufbau Modifikationen einfacher zulässt.

Das Projekt konnte wegen unerwarteter Komplikationen im Zeitrahmen nicht fertiggestellt werden, weshalb eine Weiterführung in folgenden Semestern empfohlen wird. Weiterentwicklungs- und Verbesserungsvorschläge sind unter "Verbesserungen" beschrieben.

 

6. Weitere Projektunterlagen

Struktogramm

 

Anschlussplan

 

Schaltplan

 

Layout

 

Quellcode

 

Bedienungsanleitung