Mit Beta 5.2 führt das Entwicklerteam um Bryan Costanich diverse „Verbesserungen“ an der API ihres Embedded-.net-Systems durch.
Worum geht es hier?
Microsofts bisherige Versuche im Embedded-Bereich waren im allgemeinen wenig erfolgreich: der Gadgeteer war zu früh am Markt, während die NetDuino-Produktlinie aufgrund finanzieller Malversationen mit einem Smartwatch-Projekt über den Jordan ging.
Der einst bei Xamarin tätige Bryan Costanich entwickelt mit dem Meadow F7 einen kombinatorischen Prozessrechner, der einen für die Ausführung der .net-Payload zuständigen STM32-Kern und einen ESP32 als WLAN-und Bluetooth-Funkmodul einspannt. Das Produkt ist seit einiger Zeit am Markt (siehe Unboxing der ersten Variante unter https://www.youtube.com/watch?v=8uU0TFuvgis), und nähert sich nun der Fertigstellung.
Persistierung von Dateien.
Die Meadow-API bietet Entwicklern seit einiger Zeit die Möglichkeit, Dateien im Flashspeicher abzulegen. Bisher wurden diese von der IDE im Rahmen jeder Neu-Auslieferung des Programms zerstört, was den Langfristnutzen reduzierte. Ab Beta 5.1 lässt die IDE diese Dateien beim Deployment neuer Applikationsprogramme “in Ruhe“.
Die API verhält sich sonst im allgemeinen so, wie man es von anderen .net-Dateisystem-APIs erwartet:
2 {
3 Console.WriteLine(“The following named directories are available:”);
4 Console.WriteLine($“t MeadowOS.FileSystem.UserFileSystemRoot: {MeadowOS.FileSystem.UserFileSystemRoot}”);
5 Console.WriteLine($“t MeadowOS.FileSystem.CacheDirectory: {MeadowOS.FileSystem.CacheDirectory}”);
6 Console.WriteLine($“t MeadowOS.FileSystem.DataDirectory: {MeadowOS.FileSystem.DataDirectory}”);
7 Console.WriteLine($“t MeadowOS.FileSystem.DocumentsDirectory: {MeadowOS.FileSystem.DocumentsDirectory}”);
8 Console.WriteLine($“t MeadowOS.FileSystem.TempDirectory: {MeadowOS.FileSystem.TempDirectory}”);
9 }
10
11 private void CreateFile(string path, string filename)
12 {
13 Console.WriteLine($“Creating ‘{path}/{filename}’…”);
14
15 if (!Directory.Exists(path)) {
16 Console.WriteLine(“Directory doesn’t exist, creating.”);
17 Directory.CreateDirectory(path);
18 }
19
20 try {
21 using (var fs = File.CreateText(Path.Combine(path,filename))) {
22 fs.WriteLine(“Hello Meadow File!”);
23 }
24 } catch (Exception ex) {
25 Console.WriteLine(ex.Message);
26 }
27 }
Weitere Code-Snippet finden sich in der unter https://github.com/WildernessLabs/Meadow.Core.Samples/tree/main/Source/Meadow.Core.Samples/OS/FileSystem_Basics bereitstehenden Beispieldatei.
Bekämpfung von Speicherlecks.
Managed Memory-Programmiersprachen gelten als immun gegen Speicherlecks. Leider ist das in der Praxis nicht so – es ist möglich, dass Datenstrukturen Verweise auf „temporäre“ Speicherbereiche nicht freigeben, und den Garbage Collector so am Einsammeln hindern.
Der Meadow F7 litt bisher unter derartigen Problemen im Bereich der Verarbeitung von über die REST-Schnittstelle eingehenden Anfragen. Mit Beta 5.1 verspricht das Entwicklerteam um Bryan Costanich, dass die Speicherlecks zur Gänze beseitigt sind – in der Ankündigung spricht man sogar davon, dass mehr als 200 000 Requests in einer Session verarbeitet wurden:
Stramlineing im Bereich der I2C-und SPI-API ist
Das permanente Allozieren und Freigeben von Speichebereichen erweist sich als Performancebremse. Ein Redesign der APIs für die beiden seriellen Busse ermöglicht dem Meadow das Durchführen vieler Transaktionen, ohne dabei permanente Allokationen durchzuführen. Lohn der Mühen ist eine „Erhöhung der Performance“.
Hardware-Verfügbarkeit angekündigt
Als vergleichsweise kleine Lieferant ist Wilderness Labs von den Problemen im Hause STMicroelectronics betroffen. F7-Boards sind zum Zeitpunkt der Abfassung dieses Artikels nicht im Handel verfügbar, die Wilderness Labs-Gruppe verspricht allerdings, im Laufe eines Monats wieder „neue“ Boards und Module anbieten zu können.
Außerdem findet sich in der Dokumentation an mehrerlei Stelle, beispielsweise folgendermaßen, ein Zitat ein Hinweise darauf, dass bald „neue“ Hardware ante Portas steht.
Nach Ansicht des Autors – dies ist explizit eine Eigenmeinung und stellt keine irgendwie geartete offizielle Ankündigung aus dem Hause Costanich dar – ist ein „Targeting“ des ESP32 sehr wahrscheinlich.
Unterstützung für Visual Studio Code verbessert.
F7-Applikationen lassen sich seit längerer Zeit nicht nur unter einer Vollversion von Visual Studio, sondern auch mit der Spar-Variante Visual Studio Code realisieren. Die neue Version des Visual Studio Code-Plug-Ins bietet Projektskelette an, die die Erzeugung von auf C#, F# und Visual Basic.net basierenden Projekten ohne Umweg in GitHub und Co. ermöglichen.
Lohnt es sich?
Microsoft-Embedded-Entwickler Leben lange leben schon lange nach dem britischen Konzept des Beggars can’t be Choosers – spätestens seit der Abkündigung der IoT-Variante von Windows 10 gibt es, insbesondere für Klein-Bastler, nicht viel Spielzeug. Wer eine kleine Aufgabe zu realisieren hat, und auf.net-Technologien setzen möchte, wird mit dem Meadow F7 – unter Weglassung der Verfügbarkeitsproblematik – glücklich.
Vor einem „größeren“ Deployment, insbesondere wenn sie das Meadow-System nicht in Form der Platine in ihre Hardware einbinden möchten, sollten Sie allerdings Kontakt mit dem Entwicklerteam aufnehmen um eine „individuelle“ Vorgehensweise abzusprechen.
Zuerst erschienen bei Mikrocontroller.net News
Quelle: Read More