Jak programowane są codzienne maszyny?

Jak programowane są codzienne maszyny (nie tyle Komputery i urządzenia mobilne, co urządzenia, zegarki Cyfrowe itp.)? Jaki kod wchodzi do programowania automatu z Coca-Colą? Jak mój ekspres do kawy przyjmuje zaprogramowany czas i zaczyna parzyć dzbanek kawy kilka godzin później, kiedy ten czas nadejdzie?

Czy tego typu maszyny mają w sobie systemy operacyjne, czy jest to coś jeszcze bardziej podstawowego? Czy są napisane w Assembly, C, czy jakieś inne język?

I naprawdę chciałbym znaleźć jakiś zasób, który wymienia te systemy operacyjne lub podstawowe systemy kodu, być może nawet z kodem źródłowym, jeśli to możliwe. Jeśli ktoś zna taki zasób (wyszukiwanie nic dla mnie nie dało), to byłoby fantastycznie.

Author: Josh Leitzel, 2011-04-11

13 answers

Większość z tego, o czym mówisz, to systemy wbudowane, w których C jest luksusem często niedostępnym. Nie mają oprogramowania w tradycyjnym znaczeniu. Większość czasu oprogramowanie jest napisane w języku C, assembly, a nawet kod maszynowy. C i ASM wymagają pisania kompilatorów, aby używać ich dla tej platformy. Kod maszynowy jest zapisywany jako binarny bez kompilatora.

Twój dzbanek do kawy i większość prostych systemów tego typu nie posiadają systemu operacyjnego. Po prostu ładują się od początku adres w pamięci i umieszczasz tam swój kod. Często systemy te mają swój" kod " spalony do EEPROM, które działają jako dysk twardy systemu. Spieprz kod po wypaleniu balu, wyrzuć żetony ponownie wypal kod na żetonie i zacznij od nowa. Istnieją nowsze układy FPGA, których wyższe urządzenia końcowe używają do testowania, wdrażania itp.

Coca-cola maszyny, routery, itp. zazwyczaj używaj systemu operacyjnego w czasie rzeczywistym, takiego jak QNX, EMBOS lub czasami RTlinux jeśli masz szczęście. Większość z nich to własnościowy system operacyjny, na który udzielasz licencji za dużo pieniędzy, ale mają kompilatory C, sterowniki do pracy ze sprzętem itp.

Http://www.qnx.com/

Http://www.segger.com/cms/embos.html

Http://www.microsoft.com/windowsembedded/en-us/campaigns/compact7/default.aspx?WT.srch=1&WT.mc_ID=SEARCH

RTLinux

 44
Author: chubbsondubs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 01:34:11

Używają mikrokontrolerów, 8051 jest klasycznym. Są to rdzenie 8-bitowe lub 16-bitowe, rzadko mają system operacyjny. Programista pisze kod, aby zainicjować urządzenia peryferyjne i zaimplementować programy obsługi przerwań. Używane języki to assembly i C. trudne zadania debugowania wymagają wbudowanego emulatora.

Jest dużo miejsca poza tym, z 32-bitowymi wbudowanymi rdzeniami (ARM to 100 funtowy goryl), które uruchamiają wbudowaną wersję Linuksa i / lub Java JVM.

 29
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:39:56

Są to systemy wbudowane i mogą być zaprogramowane przy użyciu języka bardzo niskiego poziomu, takiego jak C lub assembly. Ogólnie taki system będzie działał bez systemu operacyjnego, chociaż niektóre nowsze "maszyny codziennego użytku", takie jak odtwarzacze DVD blue-ray i routery bezprzewodowe, uruchamiają swój kod na systemie operacyjnym opartym na Uniksie.


Update

Zgodnie z tym, co powiedzieli inni, wiele nowoczesnych systemów wbudowanych również działa w stylu windows. To zależy na wniosek. Ponadto w wielu miejscach istnieje tendencja do uruchamiania na bardziej wydajnej platformie z systemem operacyjnym, do obsługi przypadków, takich jak odtwarzacze Blue-ray wymagające obsługi Javy, i innych przypadków, w których użytkownik końcowy pragnie większej funkcjonalności.

 24
Author: Justin Ethier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-23 14:36:09

Pomyślmy o procesorze w Twoim pulpicie. Wszystko, co robi, to uruchamianie instrukcji maszynowych i samo w sobie nie jest tak naprawdę zaniepokojony "systemami operacyjnymi"lub " programami".

Włączasz komputer, procesor wskazuje na pierwszą instrukcję i zaczyna wykonywać.

Na Twoim pulpicie uruchamia się "system operacyjny". Ale nie ma powodu, aby procesor nie mógł wykonać żadnego zestawu instrukcji, które wybrałeś. (Może to nie być zbyt przydatne, ponieważ nadal chcesz wyświetlać wyniki na ekranie, a ta funkcja znajduje się w systemie operacyjnym.) W tym samym czasie, jeśli twoje instrukcje maszynowe składały się z odpowiednich opcodów, aby procesor wypuścił prawidłową sekwencję sygnałów, aby namalować obraz na monitorze, tym lepiej. Nie jest potrzebny SYSTEM OPERACYJNY.

Pulpity robią tak wiele rzeczy , że generalnie wymagamy abstrakcji systemu operacyjnego. Ale w jego rdzeniu, wszystko, co robi procesor, to wykonywanie instrukcji.

To samo dla procesor w maszynach Koksowniczych i ekspresach do kawy. Wykonuje tylko instrukcje.

Cóż, pisanie instrukcji maszynowych krok po kroku jest żmudne. Tak więc, podobnie jak w przypadku komputerów stacjonarnych, Zwykle piszemy kod w języku C, który jest następnie kompilowany do kodu maszynowego. Ten kod maszynowy jest ładowany na wbudowany procesor i działa.

Systemy wbudowane robią tak mało , że nie potrzebują pełnego systemu operacyjnego. Mikrokontroler może mieć 8 lub 16 pinów na chipie-w porównaniu do wielu pinów w Twoim zwykłe gniazdo PROCESORA.

Więc workflow jest napisać jakiś kod (powiedzmy, w C), skompilować go na komputerze stacjonarnym. Kompilator ten generuje kod maszynowy dla wbudowanego Chipa. Następnie kod jest ładowany do mikroprocesora (a do tego potrzebny jest specjalny sprzęt.) Następnie zasilasz chip i zaczyna wykonywać instrukcje. Proste!

 17
Author: poundifdef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 03:03:31

Wiele urządzeń, które wykonują określoną funkcję, nie zawiera żadnego "kodu". Pełnią one swoje funkcje dzięki właściwościom komponentów elektronicznych. Bardziej zaawansowane systemy, które mogą wykonywać wiele różnych funkcji lub wymagają łatwej aktualizacji, będą zawierały mikrokontroler i jakiś rodzaj "systemu operacyjnego". Ponieważ nadal mają pewne ograniczenia dotyczące ich funkcjonalności, system operacyjny będzie prosty i specjalnie zaprojektowany. Coraz bardziej zaawansowane, urządzenie będzie zawierać coś podobnego do komputera. Będzie miał bardziej skomplikowany system operacyjny, który może komunikować się z różnymi częściami systemu. Wreszcie docierasz do urządzeń takich jak smartfony, które zawierają pełny system operacyjny, który może uruchamiać kod poziomu użytkownika i mieć znacznie więcej danych wejściowych niż prostsze urządzenia. Jednak nawet nowoczesne procesory są zasadniczo bardzo dużymi obwodami elektrycznymi. Każda instrukcja rozpoznana przez procesor spowoduje, że do jej wykonania zostanie użyty inny obwód funkcja.

Oto kilka stron Wikipedii, które mogą Cię zainteresować:

Http://en.wikipedia.org/wiki/Electrical_engineering
http://en.wikipedia.org/wiki/Integrated_circuits
http://en.wikipedia.org/wiki/Electronic_engineering
http://en.wikipedia.org/wiki/Computer_engineering
http://en.wikipedia.org/wiki/Microcontroller

 12
Author: ughoavgfhw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:54:23

To bardzo szerokie pytanie i to w dużej mierze zależy od maszyny. Mogę się tylko domyślać, że większość tych automatów jest sterowana przez mikrokontrolery (8051, PIC, ARM7, aby wymienić niektóre z najczęściej używanych) i rzadko mają system operacyjny, a jeśli ma, byłby to jakiś rodzaj RTO, taki jak FreeRTOS.

Bardziej złożone maszyny, takie jak odtwarzacze DVD / BluRay lub telefony komórkowe działają na platformach sofistycznych, takich jak OMAP4 . Zazwyczaj działa na nich System operacyjny Unix.

 7
Author: Thiago Cardoso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:43:31

Mikrokontrolery niskiej klasy występujące w urządzeniach codziennego użytku zazwyczaj nie uruchamiają systemu operacyjnego. Są one wybierane ze względu na niski koszt, a głównymi czynnikami napędzającymi ten koszt są Liczba pinów na chipie (od kilkunastu do kilkuset) i ilość pamięci wewnątrz (od kilku kilobajtów do megabajtów pamięci ROM, od kilku bajtów do stu kilobajtów pamięci RAM).

Ponieważ pełzanie funkcji działa magicznie, zdarza się, że mikrofalówka może wymagać wielozadaniowości. W tym przypadku programista przypomina swoje systemy operacyjne kurs i implementuje przekazywanie wiadomości, harmonogramowanie zadań, asynchroniczne I / O, itp w razie potrzeby!

Oczywiście, ze względu na celowość, prostotę, rozmiar kodu itp., Funkcje są zazwyczaj wykonywane w prymitywny sposób. Często zależy to od tego, jak analizujesz program, aby znaleźć uogólnioną funkcjonalność systemu operacyjnego w kodzie specyficznym dla zadania. Ale to długa droga od ciężko zakodowanego harmonogramu zadań do systemu operacyjnego, a gdy masz tylko kilka kilobajtów do pracy, system operacyjny off-the-shelf jest Nie rozwiązaniem.

Spójrz na DigiKey, popularną stronę wyboru części elektronicznych, aby dowiedzieć się o low-endowych MCU. tutaj jest ich informacja o bardzo tanim MCU z kontrolerem LCD, takim jak można znaleźć w ekspresie do kawy. Łatwo jest zdobyć instrukcję programowania i w ogóle.

 7
Author: Potatoswatter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-12 16:34:27

Zadaniem systemu operacyjnego jest zapewnienie współdzielonego dostępu do zasobów-czasu wykonania procesora, pamięci RAM, I / O itp. Większość prostych systemów wbudowanych opartych na mikrokontrolerach ma tylko JEDEN program uruchomiony na raz, i mają dostęp (i zarządzać) tymi Zasobami samodzielnie, dlatego nie potrzebują systemu operacyjnego.

Systemy wbudowane są zazwyczaj programowane w języku C, a czasami w assembly w celu ekstremalnej optymalizacji czasu lub pamięci. Niektóre wbudowane Kompilatory pozwalają na przeplatanie montażu w obrębie języka wyższego poziomu.

 5
Author: Nick Forge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:47:27

Ostatnio natknąłem się na automat z papierosami, który uruchomił Ubuntu(maszyna była restartowana, więc mogłem zobaczyć logo).

 4
Author: ryyst,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-24 18:08:13
 2
Author: Doug Currie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:39:25

Jeśli szukasz ogólnych informacji w googlach, poszukaj rzeczy takich jak" systemy wbudowane"," soc " (system-on-a-chip). Powiedziałbym, że duża część tego typu urządzeń działa w językach niskiego poziomu, takich jak C.

Ciekawostka: Java została pierwotnie pomyślana jako rozwiązanie do programowania systemów wbudowanych: http://en.wikipedia.org/wiki/Oak_ (programming_language )

 1
Author: Travis Webb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 02:41:32

Większość kiosków, rejestrów, ekranów drive-thru, a nawet wysokiej klasy ekspresy do kawy i kuchenki mikrofalowe faktycznie działają z systemem Windows XP lub Linux, jak maszyny z serii "Jura Impressa"; można SSH do nich i parzyć kawę.

Oto skrypt Githuba pracy crona z ekspresem do kawy: https://github.com/NARKOZ/hacker-scripts/blob/master/fucking_coffee.rb

Większość routerów, nowsze piekarniki, nowsze lodówki, samochody, odtwarzacze DVD, różne elektroniki, nowsze produkty automatyki domowej wraz z żarówkami uruchom wersję ARM linux lub embedded Linux.

Większość tańszych urządzeń, poniżej 20$, jeśli są nowsze, działa na ESP8266 lub podobnym urządzeniu (może uruchomić LUA lub serwer o obniżonej cenie za 2 $luzem - szalenie tanio)

Http://nodemcu.com/index_en.html

Korzystanie z FPGA i systemów wbudowanych, takich jak 8051, Z80 lub innych urządzeń wbudowanych, takich jak PICC, AVR i Arduino zostaną wkrótce zastąpione przez systemy all-in-one / Soc (System On Chip), takie jak ESP8266. Są po prostu zbyt łatwe do zaprogramowania i są kompletnym systemem na chipie, który uruchamia własny serwer WWW; po prostu je zasilasz, przesyłasz kod źródłowy i masz serwer sieciowy za 2$.

Dorastałem kodowanie PICC i AVR i 8051, i jestem smutny, aby zobaczyć je przejść, ale nie dotknąłem niczego innego niż ESP8266es od lat, ponieważ są 1/10 ceny i są rząd wielkości łatwiejsze do pracy. Możesz je zdobyć na płytach deweloperskich z pakietami baterii i eksplodował pin układy za $5 na ebay lub $10 na adafruit.

 1
Author: Nick Steele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-24 23:05:07

Słyszałem od inżyniera, że pociągi podmiejskie Siemens Light-Rail jeżdżą na 386.]}

 -2
Author: luser droog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-01 06:29:08