Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

9
voti

Meltdown brain

Il teorema di Böhm-Jacopini , sostiene che un qualsiasi algoritmo può essere implementato utilizzando tre strutture logiche fondamentali.

  • Sequenza
  • Selezione
  • Ciclo

La "sequenza" è la possibilità da parte dell’esecutore di eseguire la serie di istruzioni, cosi come sono state ordinate dal programmatore. La "selezione" è la possibilità di scegliere fra due percorsi a seguito di una condizione che può essere vera o falsa. Il "ciclo" o anche iterazione è un blocco di istruzioni, ripetute fino a quando non è verificata una condizione. Questo teorema ha di fatto tracciato una linea di confine nel campo della programmazione, definendo un nuovo modo di scrivere programmi che sarà chiamato dai posteri programmazione strutturata. La sua applicazione ha contribuito anche al violento ostracismo verso quelle istruzioni che erano inutili applicando il teorema suddetto ( ad es. il GOTO ). Io stesso smisi istantaneamente di usarle pensando, erroneamente, a chissà quale sorta di contaminazione. Ancora una volta il riferimento principale del teorema è la macchina di Turing.

Faccio un po’ di ordine nella vetrinetta che contiene la documentazione di lavoro. Più che altro, mi sono serbato dei datasheet di componenti, tanto vecchi quanto inutili. Diciamo meglio, questo è quello che dico sempre a mia moglie, in realtà poi, passo il tempo riaprendo vecchi faldoni e sfogliando pagine di ancestrali datasheet. In quei momenti la mente vaga nel passato, in un viaggio fra i ricordi. All’inizio vengono fuori piccoli avvenimenti, il più delle volte quelli più emotivamente coinvolgenti. Le nebbie si diradano e alle volte in un lampo le cose ritornano a galla, tanto che per un attimo, quelle vecchie storie, si risentono vive e così sento qualche tensione a fior di pelle che mi scuote.

L’azienda era all’interno di una palazzina ed era parte di un piccolo comprensorio fatto di piccole realtà commerciali. Era piena di uffici, c’era qualche studio tecnico, un paio di consulenti informatici ( a quel tempo era di moda ), studi professionali di avvocati e medici a vario titolo. Salii le scale, un po’ di fretta perchè ero in ritardo, sulla sinistra c'era la porta di un lussuoso studio immobiliare con annesso un invidioso andirivieni fatto da gente elegantissima, con borse in pelle dall'oscuro contenuto. Suonai e la porta dopo poco si aprì. Entrai trafelato anche se non avevo da timbrare il cartellino, il ritardo mi metteva e mi mette sempre un certo disagio.

“Ciao Yappy” Yappy era la segretaria dell’ufficio una vecchia compagna di scuola delle elementari completamente dimenticata.
“Ciao Kirk..” rispose con lo sguardo immerso nel monitor.
“Com’è ?” Siamo alle solite. Gli acquisti fatti all’estero necessitano di una registrazione, delle fatture emesse, con un software rilasciato direttamente dall’agenzia delle entrate. Il software è a dir poco un delirio di funzioni, che includono password aziendali e registrazioni con chiave criptata fatte in locale, che poi dovevano e devono essere inviate attraverso maschere web al server centrale degli aguzzini.
“ti devo rispondere... ?”
“Non serve...” dissi fuggendo da quella stanza, avrebbe sofferto ancora un giorno.. poi tutto sarebbe rientrato nella normalità.
“Ciao Mad..Ciao Ripley Ciao Mangusta ” Med e Ripley e Mangusta erano degli ingegneri che avevano messo su questa piccola ditta che si occupava di controlli di processo industriali a vario titolo. Piccoli sistemi di controllo visivo, contapezzi, logger...

La scheda, di cui mi occupavo, aveva un glorioso microprocessore della Mitsubishi MC37700 un classico micro Von Neumann a 16 bit. La rom interna era da 16 k e la ram era da 512 byte così diciamo che era una sorta di ibrido fra microprocessori e i microcontrollori. La scheda era di fatto un vero PC industriale che aveva poco da invidiare rispetto alle schede concorrenti del tempo. C’erano alcune features avanzate, come l’implementazione di una avveneristica flash esterna in grado di essere programmata più volte ( o miracolo ) e che conteneva il programma operativo. Il sistema prevedeva anche una prom con un boot per il download del firmware, una ram statica, 4 interfaccie seriali delle quali due interne al micro ( selezionabili hardware RS232/485 ) e due mappate ( solo rs232 ), un rtc con l’orologio interno ( anch’esso mappato ) e dell’elettronica sparpagliata per la lettura di alcune misure analogiche.

Squillò il telefono era mio zio. Incrociai le dita sperando che non fosse ancora per quel catorcio di PC che gli avevo regalato. Era uno dei primi taiuanesi IBM compatibili con monitor a fosfori verdi persistenti, doppio floppy, stampante, mouse e DrHalo compreso nel prezzo ( 999.000 lire all'epoca ). Acquisto fatto nel lontano 1985 alla Computer Discount, presso l'unica sede a Firenze.

“Kirk ciao sono lo zio Flubbert, ti chiamavo perchè oggi il pici non va...”
“Si scusa ho da fare” cerco subito di scaricarlo
“E lo so .. ma non si accende....”
... e chissenefrega dove lo metti ? pensavo
“adesso non so come aiutarti guarda la spina...magari si è staccata”
Io speravo che si fosse rotto definitivamente perchè giuro che in quel momento sarei andato li e glielo avrei affogato nello stagno fuso..
“....e ma ieri andava”
“si lo so tutte le cose prima di rompersi, funzionano...”
“magari è il flet”
“No zio …. non è il flet... non è che tutte le volte che non va c’è è il flat da sostituire... zio ha quasi trent’anni quel pc. Tutti gli elettrodomestici si rompono dopo tanti anni...”
“... Ho capito ma la lavatrice non si è mica rotta e poi fino adesso me lo hai aggiustato...”
guardai la finestra e per un attimo pensai di buttarmi di sotto... “Senti ho da fare questa sera passo di li... stai fermo li non toccarlo”
“Grazie ci vediamo sta sera.... e non ti dimenticare...”
“ no no non mi dimentico.... “

Ricordo che c’era, come dire, una sorta di disallineamento fra la progettazione di oltreoceano e quella italiana. Mentre dall’altra parte c’era chi sviluppava software col pic, in italia i libri di fisica e elettronica, erano riedizioni ventennali con meravigliose applicazioni fatte con le valvole. Questa cosa mi ha sempre lasciato perplesso e l'inquietudine in un certo senso mi ha forse un po' penalizzato.

Con questi tipi di processore e in genere con tutti i microcontrollori è possibile richiedere alla casa madre la mascheratura del componente. Nelle produzioni importanti, il processo di mascheratura è particolarmente conveniente perchè il prezzo cala di diversi punti percentuali. Una volta definito il presso del componente, la casa madre attende che l'ufficio tecnico del cliente abbia finito le prove sul prototipo. Il firmware viene spedito alla casa fornitrice e da questo codice attraverso appositi macchinari ne viene creata una maschera equivalente, che sarà poi utilizzata per la produzione dell'IC. La maschera citata è una maschera 'vera' perchè il processo di produzione dei microcontrollori prevede una fase detta di fotoincisione chimica dei layers di silicio (opportunamente drogati). Attraverso questa particolare fotoincisione vengono create le giunzioni molecolari che formeranno il firmware nella ROM interna.

A quel tempo le famiglie dei componenti si suddividevano fra TTL e CMOS. TTL è l’acronimo Transistor - Transistor Logic utilizzando come elemento funzionale il transistor ( tipico esempio di tautologia ingegneristica ) è stata la prima teconolgia sviluppata e praticamente ha invaso tutti i sistemi embedded del globo per molti anni. CMOS è l’acronimo di Complementary Metal-Oxide Semiconductor la sua interfaccia è fatta con i mos fet ad effetto campo. Ques’ultima si è avvantaggiata rispetto alla prima, per il consumo praticamente azzerato e il maggior range operativo di tensione. In pratica adesso tutti gli IC sono universalmente costruiti così.

transistor1-638x425.jpg

transistor1-638x425.jpg

Il masterista ha penato non poco nello sbroglio del circuito stampato. Considerate che appunto i circuiti stampati con bus dati e bus indirizzi sparpagliati un po’ da tutte le parti, rendono particolarmente tedioso e sfiancante lo sviluppo della scheda. L’autorouting per la net del circuito stampato a quei tempi, era una ricca features non sempre disponibile per tutti. L’uso dei bus, necessitava di gestire alcuni ulteriori segnali di controllo tipici della gestione parallela. Ad esempio, in queste schede sono necessari linee di controllo dette di strobe in modo da sincronizzare la CPU con i device. Questo segnale veniva abilitato leggendo il bus indirizzi con una GAL e gestito poi dal nostro device.

Nei sistemi embedded c’erano questi oggetti di pura logica combinatoria chiamati appunto GAL ( mentre poco prima si chiamavano in rima PAL ) e che venivano utilizzati proprio per queste applicazioni. Le mappe di Karnaugh erano il pane dei firmwaristi.

karn10.jpg

karn10.jpg


La fase di ingegnerizzazione era completata da tempo e avevamo sviluppato un paio di prototipi che implementavano tutte le funzioni. Ingegnerizzare queste schede era un vero problema. La fase di test dell’hardware era piuttosto delicata per le numerose trappole logiche. Le trappole erano pure variegate ad esempio in questa scheda avevamo un flip flop di enable, utilizzato per l’alimentazione principale dello step down, che si bruciava in continuazione. Alla fine abbiamo dovuto metterci una resistenza in serie da 1 k, per limitare la corrente in uscita ma ancora adesso non sappiamo perchè.

Med era l’elettronico e si occupava del test hardware della scheda. Ripley si occupava del firmware di boot e della programmazione della GAL. Io mi occupavo della ingegnerizzazione del sistema e quindi del firmware operativo con i protocolli di comunicazione delle altre schede di interfaccia e con il centro. Avevamo implementato la gestione remota con un gsm a bordo della Siemens lo storico TC35. Insomma un vero concentrato tecnologico di tutto rispetto.

Il progetto sarà una commessa gestita dalla distributore Italiano del gas, per il collegamento con la rete russa. Pare che questi apparati, saranno poi utilizzati direttamente nelle cabine del gasdotto caucasico. Ma dopo una serie di infelici vicissitudini, legate più che altro ad una sovrapposizione dei progetti e ad una distribuzione uniforme di cappelle progettuali un po’ qui e un po' la, si arrivò ad uno stato di crisi non reversibile, costringendo il commitente all’invio di un ultimatum definitivo. Eravamo in ritardo di 6 mesi e dopo la terza richiesta di posticipare il progetto, ci furono manovre occulte. Molti per vie traverse, volevano farci le scarpe. Scattarono le lettere legali ed eravamo così arrivati in prossimità della richiesta di pagamento delle penali. C’era un po’ di tensione in azienda e l’aria era diciamo frizzante.

Il tecnico della ditta appaltatrice, venne in sede per l’ulitmo test. La scheda era un po’ traballante, il problema della memoria che si inchiodava era stato risolto brillantemente con una nuova release della GAL.. (ebbene si un nuovo acronimo Generic Array Logic ). All’inizio, questi integrati, avevano la possibilità di programmare le comuni porte logiche AND e OR e quindi solo funzioni combinatorie. Con l’aggiunta nel tempo dei flip flop divennero macchine a stati sequenziali.

Dalle PLA, si passò alle PAL ,( lo stesso acronimo anagrammato … Programmable Array Logic ) poi alle GAL, poi ci furono le CPLD ( Complex Programmable Logic Array ) e infine le FPGA ( Field Programmable Gate Array ) che erano una via di mezzo fra gli ASIC (Application Specific Integrated Circuit) e le PAL. I linguaggi di programmazione di questi oggetti sono principalmente Verilog o VHDL ( questo poi è il massimo degli acronimi, VHDL è un doppio acronimo VHSIC Hardware Description Language dove VHSIC sta per Very High Speed Integrated Circuits)


esempio codice VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count16inf is
port (clk, updn, ldn, reset, cnten : in std_logic;
din : in std_logic_vector(15 downto 0);
dout : out std_logic_vector(15 downto 0));
end count16inf;
architecture logic of count16inf is
signal count : std_logic_vector(15 downto 0);
begin
process (clk, reset)
begin
if reset = '0' then
  count <= (others => '0');
  elsif clk'event and clk = '1' then
    if ldn = '0' then
      count <= din;
    elsif cnten = '1' then
    if updn = '1' then
      count <= count + 1;
    else
      count <= count - 1;
    end if;
  end if;
end if;
end process;
dout <= count;
end logic;


Una delle applicazioni più esoteriche di questi oggetti FPGA sono gli antifusibili. In pratica sono degli oggetti tipicamente isolati che dopo averli alimentati con una tensione definita si "rompono" diventando conduttivi.

Ma torniamo alla nostra scheda. La check list del nostro apparato, era un elenco di 150 funzioni base che dovevano essere superate. Alcune delle quali prevedevano altre sottofunzioni e fino a quel momento non avevamo riscontrato problemi.

Bolter era un signore distinto di una certa età, un po’ stanco di passare il suo tempo verificando sistemi di controllo elettronici dei clienti sparpagliati in tutta Italia. Questa sofferenza si notava da quel sorriso, giocondiano, appena accennato sulle labbra, che non lo abbandonava mai. Non era un pezzo grosso, ma non bisognava sottovalutarlo. Nel nostro ambiente, le mazzette contano meno di quello che sembra, sapevamo bene che quella visita sarebbe stata l’ultima qualsiasi cosa fosse accaduta. Non avevamo altra scelta. Montammo sul tavolo centrale l'apparato, collegammo poi tutti i flat cablammo le varie morsettiere. Detti un ultima ricompilata a tutti i sorgenti, creai il binario, ed infine il download nella flash. Eravamo pronti.

Mi profusi in un smisurato elogio, sulla tipologia della macchina per le caratteristiche e le prestazioni ( sino a quel momento solo presunti )Iniziai il test delle prove funzionali, gli feci vedere il download remoto della scheda, le misure analogiche istantanee e quelle storiche sia in locale che in remoto. Alcuni test operativi e la visualizzazione degli allarmi. Bene, tutto stava andando a gonfie vele.

“Ecco... Guardi... Adesso dopo aver configurato la periferica con il numero di telefono del centro alla chiusura del ingresso programmato come ingresso allarme ci sarà un invio in automatico del messaggio... che ovviamente arriverà al mio cellulare...”
Chiudo con destrezza e estrema profesionalità il contatto con un filo spellato di fresco.
“Ecco l’invio dell’sms ovviamente come lei ben sa non è istantaneo... questa sistema deve prevedere i ritardi della rete...”
10 secondi… 20 secondi... 30 secondi...
Rimango così con il cellulare in mano e intanto scruto tutte le ruge che si creano sulla fronte di Bolter... In quello stesso istante Med e Ripley guardavano la periferica e cercavando di capire se ci fosse qualche problema con il gsm...
Un minuto... ancora qualche secondo e parto con la fase due...
“eeee.... e questi sistemi … alle volte sono pieni di messaggi idioti... quelli importanti non arrivano mai...” pausa
“... magari ho messo la modalità silenzioso...” a ripausa
Armeggio così con il cellulare il celebre 3330 della Nokia. Seleziono il menù messaggi e scrivo il mio numero poi premo il pulsante invia....
un minuto e trenta....
dopo qualche secondo il cellulare fece il classico doppio squillo.
“... ecco è arrivato …. come può vedere nel messaggio compare il testo di allarme con lo stato del digitale...”
ovviamente velocemente selezionai l’sms dell’altro giorno avvicinandogli il più possibile il cellulare perchè avevo notato che aveva ancora appeso alla catenella gli occhiali da presbite.
“Si si... davvero un bel sistema complimenti... ha visto Mangusta che alla fine ci siete riusciti...”
una gocciolina di sudore mi calò dalla fronte...
Mangusta ovviamente non aveva capito che la macchina non aveva mandato l’sms.
“.. e certo che ci siamo riusciti... cosa credeva, non siamo mica qui a girare le ruote ai criceti...”
“Bene allora domani spedite la macchina per Milano e poi per Lubiana” ( Lubiana era il posto dove ci sarebbe poi stato il grande raccordo per collegare il gas Russo alla rete itialiana... )
“No domani no...” tentai di arginare il disastro
“E per quale motivo signor Kirk...”
“perchè.... perchè …” mi giro verso il bancone devo trovare il modo di guadagnare un po’ di tempo.
“La scatola quella indicata da voi non va bene vede perchè non è un ip65 come richiesto dobbiamo sostituirla ma è questione di mezza giornata... però non ci sono problemi perchè se domani la spediamo il corriere impiega due giorni e così se per voi non è un incomodo pensavo di portarvela io direttamente...”
“... Buona idea ingenger Kirk, così almeno la prima installazione se ne occupa lei direttamente”

Mangusta ancora non si era accorto che il sistema non aveva inviato l’sms, nonostante tutte le prove positive che avevamo fatto sino a quel momento. Di li a poco comunque Bolter si licenziò e se ne andò tutto gioviale, portandosi dietro la sua misurata soddisfazione e il suo paralitico sorriso, pensando che il sistema adesso funzionasse davvero. Così tornò bello gaio a casa sua nel ridente nord est italico.

Lo salutammo, con le manine a tergicristallo, accompagnandolo alla porta e non dissimulando nello stesso tempo una certa inquietante fretta. La porta fece click, subito svanimmo dall’entrata per fiondarci sulla scheda. Mangusta aveva ancora uno sguardo perplesso. Med si era sempre distinto per la qualità della sintesi, chiarì così al Mangusta la situazione con un efficace “hai presente non va un c...”. Ci fu un veloce meeting con piccolo accenno di zuffa fra noi ,subito sedato ... Mangusta fece il solito sproloquio inconcludente, e noi altrettanto ipocritamente lo assecondammo senza pudore. Ebbene si i 6 mesi di torture precedenti non erano finiti, la scheda aveva dato un ultimo colpo di coda, mortale.

Erano le 8:30 alla fine tutti se ne andarono esausti, ma nessuno avrebbe dormito quella sera. Non c’era niente da fare la scheda non mandava gli sms.. Lasciai l’apparato acceso lampeggiante con i led run e il cuoricino del gsm lampeggianti. Rimasi in ufficio ancora un attimo in piedi davanti alla finestra che dava sulla strada, giocherellando con il cellulare. C’era poco distante un incrocio con un semaforo e mi distraevo contando il numero delle macchine, fantasticando una gara di traffico fra le strade. C’erano delle persone che parlottavano all’incrocio e una famiglia con una piccola bimba che traballando seguiva il genitori attraversando quella grande strada... forse per la prima volta.
Poi uno squillo... pork.... zio Flubbert !!!!!

10

Commenti e note

Inserisci un commento

di ,

grande come al solito! ovviamente all'arrivo del finto sms avrai fatto una perfetta faccia da poker :) sembra quasi una scena da film "pacco doppio pacco e contropaccotto".

Rispondi

di ,

*Diamios sono argomenti che non guastano, accativanti ma anche speculativi... basta non eccedere.
*Oberon... molto subliminali....

Rispondi

di ,

"GOTO Considered Harmful" ..... non si finisce mai di discutere questo argomento.

Rispondi

di ,

Messaggi... subliminali!

Rispondi

di ,

*grandegiove... negherò tutto anche sotto tortura ;)
*paolino ;)
*carlomaria felice di servirti ;)
*tuxology ... ancora un pochino di pazienza ;)

Rispondi

di ,

...il numero con il cellulare e il finto squillo con annesso finto messaggio e degno di un vero baro.. dai su dicci la verità Kirk, tu copiavi a scuola vero? ;)

Rispondi

di ,

tuxology, dovrai attendere. Kirk ama tenerci sulle spine coi suoi racconti... :-)

Rispondi

di ,

Grazie Kirk!

Rispondi

di ,

eee........ poiii? :-D Neanche la pubblicità riesce a lasciarmi così a bocca asciutta. Bel racconto Kirk, grazie!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.