Jak budowane jest oprogramowanie do maszyn takich jak bankomaty lub telewizory?

14

Jako początkujący programista pracowałem tylko z programowaniem aplikacji komputerowych, ale od czasu, gdy zacząłem programować, bardzo często przychodzi mi do głowy pytanie i nie mogę uzyskać prawidłowej odpowiedzi.

Maszyny nie działają same z siebie, to jest praca programisty, mówi mu, co i kiedy robić, ale moja ciekawość tkwi w komputerach. Wezmę przykłady oprogramowania ATM w tym poście, ale pamiętaj, że istnieje wiele innych, takich jak wyświetlacz pralki lub telewizor, telefon komórkowy, nazwij to.

Jak dokładnie zbudowane jest oprogramowanie dla tego rodzaju maszyn? Wyobrażam sobie, że nie może być identyczny z programowaniem komputerowym. Jakiego języka używają, aby takie rzeczy działały i jak można wykonać pracę? Czy są programiści specjalizujący się w tego rodzaju programowaniu? Jak wygląda proces ożywiania tych maszyn?

Bugster
źródło
Dziękuję za link. Nie miałem o tym pojęcia, dopóki nie znalazłem twojego linku. Także dlaczego to zostało odrzucone? Co jest z tym nie tak?
Bugster,
3
@ ThePlan People ma tendencję do głosowania na pytania, które nie są typu „Jak rozwiązać ten konkretny problem?”
CFL_Jeff
3
Chociaż ludzie mogą głosować z kilku powodów i nie muszą się tłumaczyć, w opisie na strzałce głosowania brzmi: „To pytanie nie pokazuje żadnego wysiłku badawczego; jest niejasne lub nieużyteczne” - myślę, że pierwsze zdanie jest bardzo zbliżone wystarczające wyjaśnienie dla otrzymanej oceny, proszę przynajmniej przeprowadzić kilka drobnych badań, zanim zapytasz programistów.
yannis
9
Mówię, obciąć go trochę luzem. Trudno jest znaleźć programowanie osadzone, jeśli nie znasz tego terminu.
Karl Bielefeldt,

Odpowiedzi:

15

Jest znany jako Embedded Systems lub Embedded Software Development. Poleciłbym tę książkę jeśli chcesz dowiedzieć się więcej na temat ogólnego procesu, nie przechodząc zbytnio do żadnej architektury. Daje ci nawet system operacyjny w czasie rzeczywistym do zabawy.

Programowanie wbudowane jest bardzo zależne od architektury. Zazwyczaj pracujesz z poważną reakcją, rozmiarem programu, odzyskiwaniem błędów i ograniczeniami kosztów. Na przykład możesz mieć Z80 (8-bitowy procesor, są wszędzie) i być może kilka kilobajtów pamięci do zabawy. Możesz mieć tylko pamięć ROM, aby powiedzieć systemowi, co robić i jak skonfigurować program. Może to również być tylko kilka kilobajtów. Dlaczego tak mało pamięci? Cóż, jeśli wyprodukujesz 15 milionów małych przyssawek; każdy grosz staje się 150 000 $.

Sugerowałbym majstrowanie przy czymś takim jak Arduino lub Scribbler Robots, jeśli chcesz dowiedzieć się więcej. Jeśli chodzi o języki, C, C ++ i asembler są typowym zestawem, chociaż Java może być używana (i tak naprawdę została pierwotnie zaprojektowana dla tej domeny, jeśli potrafisz znieść tę myśl). Inne zdecydowanie mogłyby być również użyte, o których wiem Wdrażane są zarówno Lisp, jak i ML.

Dowiedz się jak najwięcej o architekturze, ponieważ, jak powiedziałem, przydział pamięci i operacje bitowe stają się naprawdę ważne.

Inżynier świata
źródło
Dzięki, ta odpowiedź jest moim wyborem odpowiedzi zaakceptowanej, ponieważ wyjaśnia w skrócie systemy osadzone i daje mi opcję książki.
Bugster,
4
@ThePlan - miłą cechą osadzonych jest to, że możesz je przetestować. Jeśli masz tylko 3 wejścia i 3 wyjścia, dość łatwo jest potwierdzić, co działa. Nie musisz sprawdzać, co się stanie, jeśli uruchomią Twój kod pod hebrajskim Windows XP na tureckiej klawiaturze z uzbekistanową wersją Flasha.
Martin Beckett,
@MartinBeckett: Trochę trywializowałeś trudność rozwoju systemów wbudowanych. Ten ostatni mierzył wymóg reakcji w czasie rzeczywistym w nano sekundach. To było nie do przetestowania - jedynym sposobem, aby dowiedzieć się, że było poprawne, było udowodnienie, że kod był poprawny przez projekt i sprawdzenie. W przeciwieństwie do kowbojów, którzy kodują aplikacje użytkowników, których wady zostały naprawione przez aktualizację online.
mattnz
Ponadto systemy te mogą wymagać działania przez lata lub nawet dziesięciolecia bez dostępu ludzi lub innych osób.
Inżynier świata
@mattnz - nie zawsze jest to łatwe, ale przynajmniej możliwe. W kowbojskim kodzie pulpitu, poza systemem operacyjnym, którego nie można w pełni przetestować, napisanym za pomocą zestawu narzędzi, którego nie można w pełni przetestować z tysiącami innych aplikacji potencjalnie wchodzących w interakcję z nim, a także przypadkowymi działaniami użytkowników - jest to prawie beznadziejne.
Martin Beckett,
5

Jest tu zdecydowanie osadzony kąt. Ale obecnie widzisz coraz bardziej zaawansowane platformy na tak zwanych urządzeniach wbudowanych. Na przykład telewizory LG i Samsung mają teraz interfejsy API i sklepy z aplikacjami. Telewizory Sony będą miały system Android.

Wyatt Barnett
źródło
3
... a niektóre bankomaty działają w systemie Windows. Kiedy pojawiają się na niebieskim ekranie, zdjęcia zwykle trafiają na stronę thedailywtf.com . A w moim mieście lokalny transport publiczny sprzedaje miesięczne bilety z kiosków. Kiedyś widziałem taki, który utknął podczas uruchamiania - działał system Windows 2000 (to było około 6 miesięcy temu)!
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner - dzięki, nie rób tutaj bankomatów, więc nie wiem, co robią. . .
Wyatt Barnett,
ATM = bankomat. Bankomat AKA. AKA Maszyna, która pozwala Ci pobierać pieniądze z konta zamiast iść do bankomatu.
FrustratedWithFormsDesigner
Wiem o tym, po prostu nie pracuj z nimi jak z klientem. . .
Wyatt Barnett,
4

Widziałem dwa bankomaty otwarte w Denver w Kolorado. Oba były (wówczas) bankomatami Compass Bank i oba były Windows XP w zahartowanej obudowie. Zapytałem technika, co konkretnie jeden z nich prowadził, a on powiedział coś w stylu „XP Embedded”.

Założę się, że programowanie ATM jest mniej podobne do programowania wbudowanego, a bardziej do standardowego programowania systemu Windows.

Bruce Ediger
źródło
Nie tylko „te dni”. Bankomaty używane do uruchamiania systemu Windows NT 3 lub OS / 2. A wyświetlany interfejs użytkownika najprawdopodobniej to strony HTML wyświetlane w przeglądarce Internet Explorer. Językiem programowania może być wszystko - pracowałem nad systemem Java, który zastąpił jeden napisany w VB. Bankomaty to po prostu zwykłe komputery PC z nietypowymi urządzeniami peryferyjnymi i sterownikami.
Michael Borgwardt,
3

Urządzenia tego typu są programowane za pomocą programowania wbudowanego . Jest to programowanie na bardzo niskim poziomie, które w znacznym stopniu zajmuje się logiką i bramkami.

Jeśli jesteś zainteresowany nauczeniem się programowania wbudowanego, polecam zajrzeć do arduino .

CFL_Jeff
źródło