Elektroda.pl
Elektroda.pl
X
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF

MrKsawery 14 Lis 2016 21:27 3759 5
  • Od pewnego czasu zauważyłem na forum zainteresowanie tematyką programowania mikrokontrolerów i mikroprocesorów ARM w języku C# z wykorzystaniem platformy .NETMF będącej córką słynnej platformy Microsoft .NET Framework, którą zna chyba każdy. Niedawno wpadła mi do rąk nowa książka wydawnictwa BTC na ten temat. Zauważyłem wiele nowych zestawów uruchomieniowych dedykowanych na tą platformę, więc postanowiłem wprowadzić Was w szczegóły.

    Czym jest .NET Micro Framework?

    Założenia .NETMF (.NET Micro Framework) są takie same jak matki .NET. Ma umożliwiać pisanie programów na bardzo wysokim poziomie abstrakcji w języku obiektowym, ma być łatwo przenośna na dowolne platformy sprzętowe oraz ma być uniwersalna. Dodatkową zaletą samej platformy .NETMF jest możliwość bardzo proste oprogramowywania dość złożonych zadań poprzez możliwość wykorzystania bibliotek wbudowanych (mam tu na myśli obsługę kolorowego wyświetlacza TFT w sposób równie łatwy jak w Bascomie). Z powyższego opisu można odnieść podobieństwo omawianej platformy do systemu operacyjnego Linux. Wniosek taki jest w pewnym sensie racjonalny, ale platforma .NETMF nie jest pochodną systemu operacyjnego, ponieważ posiada dużo prostszy sposób dostępu do sprzętu, nie wymaga tak dużej liczby zasobów, dlatego można ją zaklasyfikować pomiędzy pisaniem programów w języku C a pisaniem programów pod linuksem. Wspomniałem jeszcze wcześniej o analogii do Bascoma. Myślę, że dużo z Was pisało lub dalej pisze w nim swoje programy. Niewątpliwą zaletą jest fakt, że posiada dużo zaimplementowanych bibliotek umożliwiających prostą obsługę peryferii. Tak samo jest również tutaj, dlatego wielu z fanów Bascoma z pewnością powinno zainteresować się tematyką. Fani programowania w języku C nie będą mieć praktycznie żadnego kłopotu z pisaniem programów w C# ponieważ bazuje on składnio na języku C (pomijając aspekty programowania obiektowego). Tak jak już wielokrotnie wspominałem C# jest językiem obiektowym, dzięki czemu umożliwia znacznie lepsze wykorzystanie czasu pisania aplikacji jak również umożliwia znacznie lepsze panowanie nad zaawansowanymi programami (nie mam tu na myśli programu posiadającego dużą liczbę linijek a raczej trudność samej koncepcji, którą wykonuje). Jeśli mowa o realizacji złożonych zadań w bardzo prostu i przyjemny sposób przedstawię pewien przykład. Każdy z Was oprogramowywał pewnie alfanumeryczny wyświetlacz LCD, dla programistów Bascomowych była to rzecz trywialna, jednak do programistów C trzeba było trochę przesiedzieć nad stworzeniem biblioteki. Proszę zauważyć, że jest to tylko zwykły wyświetlacz alfanumeryczny, na którym można przedstawić kilkanaście znaków w jednym kolorze. Idąc dalej można pokusić się o obsługę wyświetlacza graficznego LCD. Robi się już trochę gorzej. Bascomowcy nadal posiadają gotowe biblioteki jednak są już ograniczone tylko do kilku sterowników a cała zabawa staje się nieco trudniejsza. A teraz spróbujmy wyobrazić sobie oprogramowanie wyświetlacza kolorowego TFT. Z pewnością dużo osób (nie umniejszając niczyich zdolności) powie, że jest to prawie niemożliwe z poziomu AVR a jeśli już nawet to jest to bardzo trudne. W tym momencie dla porównania pokażę Wam prosty przykład jak łatwo można oprogramować wyświetlacz TFT pod platformą .NETMF.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Jak łatwo zauważyć program zawiera raptem 20 linijek kodu a wyświetla na kolorowym wyświetlaczu kolorowy obraz oraz rysuje linie. Dodatkowo w prosty sposób można dodać tekst za pomocą kilku dodatkowych linijek kodu. Napisany program można łatwo przenieść na dowolny procesor posiadający odpowiedni rozmiar pamięci Flash oraz RAM montując wcześniej obraz platformy .NETMF. Oczywiście każdy zestaw, który można kupić ma już zmontowany obraz platformy, który wystarczy tylko wgrać do układu. Może to być mikrokontroler STM32 a może to być ARM7 lub ARM9. Dodatkowo może to być produkt firmy STmicroelectronics, NXP czy Atmel. Jesteśmy w pełni zwolnieni z konieczności znania szczegółowej architektury danego procesora, wystarczy wiedzieć, co zawiera.

    Zalety i ograniczenia

    Pewnie wiele z Was pomyśli sobie: „tak fajnie nie może być pewnie jest w tym jakiś haczyk”. Owszem żadne rozwiązanie nie jest pozbawione ograniczeń tak samo jest z .NETMF dla procesorów. Na przykład w przypadku, kiedy zakupimy mikrokontroler, wlutujemy układu w zaprojektowany układ i chcemy uruchomić .NETMF możemy napotkać pewien problem a mianowicie musimy ręcznie dokonać montowania platformy pod ten mikrokontroler. Takie utrudnienie nigdy nie spotka nas wykorzystując gotowy zestaw uruchomieniowy. Jeśli pomyślimy o tym dłużej to co nazwałem utrudnieniem nie jest nim wcale, ponieważ istnieją specjalne moduły tzw. SOM, które zawierając w swej strukturze mikrokontroler z dodatkową pamięcią RAM lub/ i FLASH i często jeszcze dodatkowo jakimś sprzętowym rozwiązaniem. W tą myśl lepiej kupić moduł SOM (który wygląda jak moduł Bluetooth) za nieduże pieniądze, na którym mamy wszystko zaprojektowanie wraz z przygotowanym montażem platformy niż bawieniem się w ręczne projektowanie systemu. Od lewej G120E od prawej G400-S firmy GHIelectronics.

    Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF

    Oczywiście warto jeszcze wspomnieć, że wybierając tworzenie oprogramowania w .NETMF nie mamy już pełnej kontroli nad sprzętem, program jest z pewnością nieco wolniejszy kosztem łatwej obsługi wielowątkowości i pełną przenośnością.

    Poniżej przedstawiam zdjęcia kilku zestawów, które można kupić i zacząć przygodę z .NETMF. Kolejno 32F429IDISCOVERY, FEZ Panda III, G400 Development Bard.

    Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF

    Dodatkowo pragnę powiedzieć, że równolegle z rozwojem Arduino rozwija się Netduino, które jest mniej popularne w naszym kraju, ale myślę, że z czasem stanie się tak samo popularne. Netduino wykorzystuje właśnie platformę .NETMF a dodatkowo posiada swoje dodatkowe biblioteki.

    Skąd czerpać wiedzę?

    Tak jak już wspomniałem zaprezentowany przykład pochodzi z nowej polskiej książki pt. „Podstawy .NET Micro Framework dla mikrokontrolerów STM32 w języku C#” wydawnictwa BTC.

    Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF

    Książka omawia pełną ideę wykorzystania .NETMF dla procesorów, wyjaśnia ideę programowania obiektowego, zawiera cały rozdział poświęcony językowi C#, dzięki czemu nie trzeba dodatkowo korzystać z innych. Wykorzystane przykłady są przedstawione na mikrokontrolerach STM32 (będących obecnie najtańszym i najkorzystniejszym rozwiązaniem) a konkretnie zestawie STM32F429IDISCOVERY zawierającym kolorowy wyświetlacz TFT. Pewnie niektórzy z Was posiadają ten zestaw, można go kupić za ponad 100zł. W książce można znaleźć wiele ciekawych aplikacji napisanych pod .NETMF omówionych bardzo praktycznie bez niepotrzebnego lania wody i wywodach teoretycznych. Choć przykłady są napisane pod mikrokontrolery STM32 można je spokojnie przenieść na każdą inną platformę sprzętową.

    Istnieje również anglojęzyczna książka „Getting Started with .NET Gadgeteer”. Jest z kolei nastawiona na zestawy Netduino w naszym kraju ciągle stosunkowo drogie.

    Programowania mikrokontrolerów/ mikroprocesorów w języku C# pod .NETMF

    Dodatkowo można znaleźć sporo informacji w supporcie Microsoft i na zagranicznych forach, jednak w języku angielskim.

    Podsumowanie

    Reasumując chciałem naświetlić ideę, programowania procesorów w .NETMF, przedstawić zalety i ograniczenia takiego podejścia oraz pomóc Wam zacząć swoją przygodę .NETMF. Na pewno nie ma sensu ładować dużego procesora, aby migać diodami, ale w momencie, kiedy chcemy wykorzystać wyświetlacz graficzny lub potrzebujemy większej mocy obliczeniowej i zasobów a przy okazji uprościć własną pracę (lub uczynić ją bardziej wydajną i przyjemniejszą) warto wziąć pod uwagę takie rozwiązanie. Myślę, że wbudowanie takiego modułu do robota jest ciekawym podejściem. Nie ma też żadnych ograniczeń by zostawić sobie drugi mikrokontroler, który będzie obsługiwał podstawowe peryferia robota i komunikował się z głównym procesorem.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    MrKsawery
    Poziom 13  
    Offline 
    Specjalizuje się w: elektronika i programowanie
    MrKsawery napisał 167 postów o ocenie 4, pomógł 1 razy. Jest z nami od 2009 roku.
  • Computer ControlsComputer Controls
  • #2
    bialy
    Poziom 15  
    Mając biblioteki tak samo prosto będzie oprogramować to w C/C++ w zasadzie nawet kod zostanie praktycznie w nie zmienionej postaci.

    Btw.
    A na jakich prockach to chodzi i dlaczego potrzebuje prawie 300kb FLASH'a i ponad 60kb RAM'u do programu typu "Hello World" ?
  • Computer ControlsComputer Controls
  • #3
    MrKsawery
    Poziom 13  
    bialy napisał:
    Mając biblioteki tak samo prosto będzie oprogramować to w C/C++ w zasadzie nawet kod zostanie praktycznie w nie zmienionej postaci.

    Btw.
    A na jakich prockach to chodzi i dlaczego potrzebuje prawie 300kb FLASH'a i ponad 60kb RAM'u do programu typu "Hello World" ?


    A jaki związek ma omawiany tamat z C/C++? .NETMF wspiera jedynie C# i Visual Basic.

    Taki sposób programowania nie wykorzystuje się do wyświetlania "Hello world" tylko do dość zaawansowanych aplikacji. I samo uruchomienie jądra wymaga trochę pamięci co wynika z zasady działania.
  • #4
    xamrex
    Poziom 28  
    A da się tak jak w przypadku WinForms graficznie umieszczać jakieś np. buttony w VisualStudio i oprogramować dla niego akcje np. Click i wgrać coś takiego na jakis zestaw?
  • #5
    MrKsawery
    Poziom 13  
    xamrex napisał:
    A da się tak jak w przypadku WinForms graficznie umieszczać jakieś np. buttony w VisualStudio i oprogramować dla niego akcje np. Click i wgrać coś takiego na jakis zestaw?


    Środowiskiem dla .NETMF jest Visual Studio w podstawowej wersji darmowe również dla zastosowań komercyjnych. .NETMF posiada większość funkcjonalności .NET, więc istnieje możliwość tworzenia aplikacji w ten sposób.
  • #6
    Zalewski Pawel
    Poziom 2  
    Witam ....Proszę o kontakt z Panem MrKsawery .Pozdrawiam PZ