Come viene costruito il software per macchine come bancomat o TV?


14

Come programmatore principiante ho lavorato solo con la programmazione di applicazioni basate su computer, ma una domanda mi è venuta in mente molto spesso da quando ho iniziato a programmare e non riesco a ottenere una risposta corretta.

Le macchine non agiscono da sole, questo è il lavoro del programmatore, gli dice cosa fare e quando farlo, ma la mia curiosità sta sotto i computer. Prenderò gli esempi di un software ATM in questo post ma terrò presente che ce ne sono molti altri come un display per lavatrice, o una TV, un telefono cellulare, lo chiami.

Come viene costruito esattamente il software per questo tipo di macchine? Immagino che non possa essere identico alla programmazione basata su computer. Che lingua usano per far funzionare queste cose e come si fa a fare il lavoro? Esistono programmatori specializzati in questo tipo di programmazione? Qual è il processo per dare vita a queste macchine?



Grazie per il link. Non ne avevo idea fino a quando non ho trovato il tuo link. Anche perché questo è stato downvoted? Che cosa c'è che non va?
Bugster

3
@ThePlan Le persone tendono a sottovalutare le domande che non sono del tipo "Come posso risolvere questo particolare problema?"
CFL_Jeff

3
Sebbene le persone possano sottovalutare per diversi motivi e non siano tenute a spiegarsi, il suggerimento sulla freccia del downvote recita: "Questa domanda non mostra alcuno sforzo di ricerca; è poco chiara o non utile" - Penso che la prima frase sia molto vicina a una spiegazione sufficiente per il downvote che hai ricevuto, per favore fai almeno qualche piccola ricerca prima di chiedere ai programmatori.
yannis,

9
Dico che è un po 'lento. È difficile ricercare la programmazione integrata quando non si conosce il termine.
Karl Bielefeldt,

Risposte:


15

È noto come Embedded Systems o Embedded Software Development. Consiglierei questo libro se vuoi saperne di più sul processo generale senza andare troppo verso nessuna architettura. Ti dà anche un sistema operativo in tempo reale con cui giocare.

La programmazione integrata dipende molto dall'architettura. In genere si lavora con risposte serie, dimensioni del programma, ripristino degli errori e vincoli di costo. Ad esempio potresti avere uno z80 (processore a 8 bit, sono ovunque) e forse un paio di kilobyte di memoria con cui giocare. Potresti avere solo una ROM per dire al sistema cosa fare e come impostare il programma. Potrebbe anche essere solo un paio di kilobyte di dimensioni. Perché così poca memoria? Bene, se produci 15 milioni di ventose; ogni centesimo diventa $ 150.000.

Suggerirei di armeggiare con qualcosa come Arduino o Scribbler Robots se vuoi saperne di più facendo. Per quanto riguarda le lingue, C, C ++ e Assembly sono l'insieme tipico sebbene Java possa essere usato (ed è stato in effetti originariamente progettato per questo dominio se si può intuire quel pensiero) Altri potrebbero sicuramente essere usati anche, ho saputo di Lisp e ML sono entrambi schierati.

Impara quanto più puoi sull'architettura, perché come ho detto, l'allocazione della memoria e le operazioni bit a bit iniziano a diventare davvero importanti.


Grazie, questa risposta è la mia scelta di una risposta accettata perché spiega in breve i sistemi integrati e mi offre anche un'opzione libro.
Bugster

4
@ThePlan - la cosa bella di embedded è che puoi provarli. Se hai solo 3 ingressi e 3 uscite è abbastanza facile confermare cosa funziona. Non è necessario verificare cosa succede se eseguono il codice in Windows XP ebraico su una tastiera turca con una versione di Flash dell'Uzbekistan.
Martin Beckett,

@MartinBeckett: Hai in qualche modo banalizzato la difficoltà dello sviluppo di sistemi embedded. L'ultimo aveva un requisito di risposta in tempo reale inteso in nano secondi. Non era verificabile - l'unico modo per sapere che era corretto era dimostrare che il codice era corretto in base alla progettazione e alla revisione. A differenza dei cowboy che un giorno codificano le applicazioni utente, i cui difetti vengono corretti da un aggiornamento online.
Mattnz,

Inoltre, potrebbe essere necessario che questi sistemi funzionino per anni o addirittura decenni senza accesso umano o di altro tipo.
Ingegnere mondiale

@mattnz - non è sempre facile ma è almeno fattibile. Nel codice desktop da cowboy, oltre a un sistema operativo che non puoi testare completamente, scritto con un toolkit che non puoi testare completamente con migliaia di altre app potenzialmente interagenti con esso, oltre ad azioni casuali degli utenti - è praticamente senza speranza.
Martin Beckett,

5

C'è sicuramente un angolo incorporato qui. Ma in questi giorni stai vedendo piattaforme sempre più avanzate su quelli che sarebbero tradizionalmente chiamati dispositivi incorporati. Ad esempio, entrambi i televisori LG e Samsung dispongono ora di API e app store. I TV Sony eseguiranno Android.


3
... e alcuni bancomat eseguono Windows. Quando compaiono sullo schermo blu, le immagini di solito finiscono su thedailywtf.com . E nella mia città, il trasporto pubblico locale vende abbonamenti mensili dai chioschi. Una volta ne ho visto uno che si bloccava all'avvio: era in esecuzione Windows 2000 (circa 6 mesi fa)!
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner - grazie, non fare bancomat qui, quindi non sono consapevole di quello che stanno facendo. . .
Wyatt Barnett,

ATM = Bancomat. AKA Bank Machine. AKA La macchina che ti consente di prelevare denaro dal tuo conto invece di dover andare da un cassiere.
FrustratedWithFormsDesigner

Lo so, semplicemente non lavorare con loro come se non un cliente. . .
Wyatt Barnett,

4

Ho visto aprire due sportelli automatici a Denver, in Colorado. Entrambi erano (allora) sportelli bancomat Compass Bank, ed entrambi erano Windows XP con il case rinforzato. Ho avuto modo di chiedere alla tecnologia cosa, in particolare, uno di loro correva, e ha detto qualcosa come "XP Embedded".

Quindi, scommetto che la programmazione ATM è meno simile alla programmazione integrata in questi giorni, e più simile allo sviluppo standard di Windows.


Non solo "in questi giorni". ATM utilizzati per eseguire Windows NT 3 o OS / 2. E l'interfaccia utente che vedi è molto probabilmente come pagine HTML visualizzate da Internet Explorer. Il linguaggio di programmazione può essere qualsiasi cosa: ho lavorato su un sistema Java che ha sostituito uno scritto in VB. I bancomat sono in realtà solo PC normali con periferiche e driver insoliti.
Michael Borgwardt,

3

Questi tipi di dispositivi sono programmati mediante la programmazione integrata . Questo è un tipo di programmazione di livello molto basso che si occupa pesantemente di logica e gate.

Se sei interessato ad apprendere la programmazione integrata, ti consiglierei di esaminare Arduino .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.