Chcę zacząć tworzyć urządzenia i czytam o mikrokontrolerach i innych rzeczach w Internecie. Zastanawiam się, czy są inne języki do programowania mikrokontrolerów oprócz C.
Chcę zacząć tworzyć urządzenia i czytam o mikrokontrolerach i innych rzeczach w Internecie. Zastanawiam się, czy są inne języki do programowania mikrokontrolerów oprócz C.
Żetony w ogóle nie używają bezpośrednio C. Mają zestawy instrukcji, które różnią się znacznie w zależności od różnych architektur.
Jako bardzo niski poziom abstrakcji tych zestawów instrukcji, większość producentów dostarcza assembler, za pomocą którego można tłumaczyć programy napisane w odpowiednim języku asemblerowym (który jest z grubsza bardziej czytelną formą instrukcji maszynowych ) do postaci binarnej, którą możesz przesłać na swój chip.
Na następnym wyższym poziomie są języki takie jak C. C jest zdecydowanie najbardziej dominującym językiem programowania mikrokontrolerów na tym poziomie. W przypadku niektórych architektur znajdziesz również dziwny kompilator Pascal, BASIC lub może Fortran.
Teoretycznie jedyną rzeczą, której potrzebujesz, aby użyć danego języka na danej architekturze, jest odpowiedni kompilator (chociaż niektóre , podobnie jak Java, C # itp., zwykle zależą od środowisk wykonawczych, a te są zbyt wymagające zasobów dla większości uC). W praktyce nie ma zbyt wielu dostępnych kompilatorów.
Jak powiedzieliśmy w us2012, µc w ogóle nie obsługuje języka C. Zamiast tego uruchamia język maszynowy, który jest binarną reprezentacją zestawu instrukcji µc, z polami na kod operacji (co robić) i albo specyfikatorami rejestru i / lub adresami (skąd dane są pobierane i / lub przechowywane). Asembler jest symboliczną reprezentacją tego binarnego języka maszynowego.
W przypadku języka C te instrukcje maszynowe są generowane przez kompilator C, który prawie zawsze działa na komputerze innym niż µc (wyjątkiem jest wbudowany Linux, który zawiera kompilator gcc, działający na µc z zasobami wystarczającymi do uruchomienia kompilatora).
Gdy kompilator jest uruchamiany na komputerze PC, nazywa się to kompilacją krzyżową. Każdy oddzielny plik źródłowy zawierający instrukcje języka C jest kompilowany osobno, a wynik każdego z nich jest łączony w jeden plik do pobrania przez program konsolidujący. Ten plik do pobrania zawiera instrukcje języka maszynowego wspomniane powyżej i można go uruchomić bezpośrednio na µc.
Jeśli chcesz uruchomić inny język na µc, potrzebujesz innego kompilatora dla tego języka. Jednak istnieje wiele języków, które nie są kompilowane do kodu maszynowego, ale zamiast tego są kompilowane do kodów bajtowych; nie mogą one być wykonywane bezpośrednio przez µc, ale zamiast tego muszą być wykonywane przez interpreter działający na µc (odmiana polega na kompilacji kodów bajtowych do języka maszynowego przy ich pierwszym wykonaniu przez interpreter).
Innym językiem kandydującym do programowania mikrokontrolerów jest Ada. Oferuje bardzo dobre udogodnienia do programowania niskopoziomowego, a także lepsze wykrywanie pewnych typów błędów przed przejściem do etapu uruchamiania programu, co pomaga mi rozwijać się znacznie szybciej niż w C. Wynikowy plik wykonywalny może być tak samo mały jak C, nie jest tak zaskakujący, gdy zdasz sobie sprawę, że większość kompilatora Gnat Ada jest tym samym optymalizatorem i generatorem kodu, co najpopularniejszy kompilator C (gcc).
Kolejną korzyścią jest to, że kod może być znacznie więcej czytelne niż C; inny sposób na ułatwienie eliminowania problemów.
Poza najmniejszymi mikrokontrolerami oferuje również dobre możliwości obiektowe i wielozadaniowe; odpowiednik RTOS jest wbudowany w język.
Dwie wady:
Ada ma niezasłużenie kiepską reputację odziedziczoną po 30-letniej wersji, z którą obecnie raczej się nie spotkasz - ty może usłyszeć przeciwko temu dość emocjonalne reakcje. Ada-2005 to zupełnie inny język ...
I nie każdy mikrokontroler ma kompilator i łańcuch narzędzi Ada. Dwa popularne, które to robią, to Atmel AVR (dzięki czemu można programować swoje płyty Arduino w Adzie) i seria Texas Instruments MSP430. Dostępne są również wersje Gnat dla wielu odmian procesorów ARM, w tym dla dystrybucji Debian Raspberry Pi.
Każdy inny cel GCC może potencjalnie wspierać Adę, chociaż tworzenie GCC zwykle nie jest trywialnym projektem ...
Jak mówią inne odpowiedzi, większość uC ma łańcuchy narzędzi, które obsługują C i kilka innych podobnych języków, ponieważ większe języki, szczególnie te z funkcją czyszczenia pamięci, są bardzo wymagające zasobów.
Ale w duchu Prawo Atwooda: „Wszystko ostatecznie zostanie przeniesione do Javascript”, daję Ci Espruino, „Pierwszy na świecie mikrokontroler JavaScript dla początkujących lub ekspertów”.:
Jak jeden z innych użytkowników skomentował poniżej Twoje pytanie, Arduino jest bardzo popularne i wszechstronne pod względem projektów i zastosowań. Ma swój własny język, który jest bardzo podobny do C ... na przykład deklarowanie bibliotek, zmiennych i wykonywanie wywołań funkcji. Ma jednak swoje własne nieodłączne funkcje, dla których będziesz musiał nauczyć się składni.