2016-06-01 14 views
9

Nie pyta o <string>, ale o standardową bibliotekę jako całość do użytku na mikrokontrolerach.Czy biblioteka standardowa C++ jest w pełni obsługiwana w Arduino?

Nie posiadam jeszcze tablicy Arduino do uruchomienia kodu, a jak mówi tytuł, jestem ciekawy, czy standardowa biblioteka C++ jest w pełni obsługiwana na Arduino i już jest częścią Arduino IDE. Naprawdę oczywiste jest, że Standard-Library jest prawdopodobnie najbardziej wydajnym, w pełni przetestowanym i minimalnym zasobem (co jest lekko zwartą frazą, jak już wspomniałem), publicznie dostępnym kodem C++ i znacznie ułatwiłoby życie kodować mikrokontrolery takie jak Arduino.

Czy w jakiś sposób brakuje mi punktu Arduino/mikrokontrolerów? Że, ponieważ ich zasoby są tak ograniczone, większość kodu musi być całkowicie dostosowana do konkretnej funkcji, a nie generyczna czy szablonowa?

Jeśli Standard-biblioteka nie jest częścią Arduino IDE, to jak to konkretne bibliotek takich jak <algorithm> i <bitset> (jestem bardzo kusi zapytać „dlaczego nie jest to ujęte w pierwszej kolejności?”, Ale to wydaje się zbyt szerokie.)

+2

To nie wydaje się być duplikatem. W ogóle nie wspomina o bibliotece ciągów Arduino i ma zupełnie inny kontekst i zakres. – Vality

+0

@Angew Miałem na myśli bibliotekę standardową C++, aktualnie jestem w ruchu i poprawię moje pytanie, kiedy będę mógł. – NonCreature0714

+0

"Arduino" jest dość szeroki. To tak, jakby zapytać, czy standardowa biblioteka jest dostępna na mikrokontroler. Musisz się dowiedzieć, czy pakiet SDK jest dostępny lub czy ktoś przeportował standardową bibliotekę dla konkretnej platformy. –

Odpowiedz

4

Arduino różni się od innych projektów systemów wbudowanych. Po pierwsze, używa własnego language opartego na C/C++. Z drugiej strony masz do czynienia z niesamowitym oprogramowaniem specjalistycznym, w którym jest mało prawdopodobne, że będziesz potrzebował ciężkiej abstrakcji <string> lub <bitset>. Kontrastuj z powiedzeniem jądra homebrew, w którym masz do czynienia ze sprzętem klasy desktop i standardową pomocą bibliotek. Co więcej, jądra homebrew ostatecznie chcą zostać "hostowane samodzielnie", to znaczy mogą portować GCC i libstdC++ do przestrzeni użytkownika. Ponownie, jest to coś, czego nie zobaczysz w kontekście Arduino.

Teraz, gdy mówimy o libraries dostarczanych z Arduino, jest to zupełnie inna historia. Są one napisane w języku C lub C++, a mogą korzystać z przeniesionej biblioteki standardowej, ale jest mało prawdopodobne, aby były pomocne. Przeniesienie STL nie jest łatwym zadaniem i jest to very, very big. Większość funkcji jest znacznie bardziej potrzebna niż potrzeba - czy naprawdę potrzebujesz <string> lub <bitset> do odczytu lub zapisu bajtów do portu? Następnie pomyśl o kosztach i złożoności z punktu widzenia programistów: programiści Arduino wezmą na siebie to trudne (niezamierzone) zadanie, aby je wdrożyć, i obsługuje je, gdy większość z nich będzie niewykorzystana lub zgrana out (pomyśl niestandardowe podzielniki.)

I jeden ostatni punkt, istnieje mnóstwo Arduino na tablicach z różnymi specyfikacjami. Biblioteka standardowa to abstrakcja zbudowana na bazie istniejącej biblioteki C. W pewnym momencie będziecie musieli zabrudzić i napisać kod biblioteki C i środowiska wykonawczego, czyniąc standardową bibliotekę nieodłączną niepoprawną (think libstdC++ - arm-none-eabi-newlib).

Teraz, jeśli jesteś niezadowolony z tego, możesz nadal przesłać podzbiór STL, wykonując ich tutorial w sprawie pisania własnej biblioteki dla Arduino.

+0

Świetna odpowiedź, tego właśnie szukałem, dzięki! – NonCreature0714

+0

Jako komentarz dodany, nawet producenci mikrokontrolerów często nie dostarczają implementacji standardowej biblioteki C++. Gdyby tak było, łatwo byłoby włączyć je do środowiska programistycznego Arduino. Na przykład: mikrokontrolery Atmel są używane w wielu płytach Arduino, a oto post od firmy Atmel dotyczący braku obsługi różnych funkcji C++, w tym standardowej biblioteki korzystającej z infrastruktury programistycznej Atmel: http://www.atmel.com/webdoc /avrlibcreferencemanual/FAQ_1faq_cplusplus.html – statueuphemism

Powiązane problemy