Forum: Mikrocontroller und Digitale Elektronik Meadow F7: Dateisystem, neue I2C / SPI-API, Refactorings für neue Zielplattformen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

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:

1
        void EnumerateNamedDirectories()
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:

1
Weve fixed nearly all of the leaks on web requests. Weve successfully tested 200k+ requests without blowing mem.

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.


: Bearbeitet durch NewsPoster
von Paul (Gast)


Lesenswert?

Das liest sich wie Buzzword-Bingo.
Schade daß geute keiner mehr verständliches Deutsch kann.

von gnuopfer (Gast)


Lesenswert?

Tam H. schrieb:
> einen kombinatorischen Prozessrechner

Den Begriff hast du doch beim alten Zuse geklaut, oder ?

von Andy (Gast)


Lesenswert?

Macht mal bitte folgendes:

Setzt euch zu Hause mal ins Eck auf eure Couch und zieht den Kopf 
geneigt ein. Dann sprecht das Wort "Meadow" drei mal aus.

An was erinnert euch das?

von XX (Gast)


Lesenswert?

Tam H. schrieb:
> 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:
> We’ve fixed nearly all of the leaks on web requests. We’ve successfully
> tested 200k+ requests without blowing mem.

"zur Gänze" != "nearly all"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.