RISOLTO conoscere i circuiti di una scheda per saper scrivere driver embedded

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Le conoscenze di Javascript Css Html Php e sql non mi permettono di sbloccarmi e approcciare sulle nuove tecnologie come iot,robot,embedded e [machine leaning].

Quali altri libri vanno bene oltre a questi per imparare a scrivere codice driver per sistemi embedded?

vol 3 elettronica digitale serie mc grawhill le basi fondamentali per imparare una circuito di scheda madre anche embedded.
linux device driver non l'ho letto bene, ma all'inizio l'ho trovato poco chiaro, tante strutture dati collegate ma non capisco il nesso non sapendo di porte cosa fanno e come sono fatte.

anche un parere da un ing. elettronico non lo rifiuto.
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,224
1,855
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
La prima cosa che ti consiglierei è di studiare C, perchè senza questo difficilmente puoi approcciare lo sviluppo di un driver per un sistema embedded (comunque machine learning è un'altra cosa). Magari può esserti utile un minimo di asm, ma qui dipende dall'architettura specifica (presumo sia in buona parte dei casi ARM, però non mi sbilancio oltre).

Ad ogni modo qui so che c'è uno sviluppatore embedded Linux di professione, quindi lo taggo direttamente, @bigendian (è inutile che ti dia io pareri oltre a quelli sopra riportati).
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Si cercavo del materiale su come sono fatte le periferiche.

Il solo sapere il C non mi fa funzionare una periferica.
Per esempio "Uso le printf che vanno a finire sullo standard output ma"... mi interessa la logica elettronica,
se setto un determinato registro la periferica prepara in un buffer i dati da inviare in uscita.

In pratica vorrei anche scrivere un mini programma che mi dice le informazioni delle periferiche: modello della scheda e del processore, tipi di periferiche usb bluetooth.

Ho provato a sfogliare il kernel di linux senza successo.

comunque machine learning è un'altra cosa
Dovrò studiare piu che altro matematica per apprendere il machine learning: calcolo infinitesimale, algebra lineare, geometria, probabilità e statistica.
E' inutile dire che usare i framework come tensorFlow senza le basi non... promette bene.
 
Ultima modifica da un moderatore:

Andretti60

Utente Èlite
6,440
5,091
Le conoscenze di javascript,css,html,php e sql non mi permettono di sbloccarmi e approcciare sulle nuove tecnologie come iot,robot,embedded,machine leaning.
Questo è un classico esempio dell’errore che vedo commettere molto in questa sezione. Si pensa che imparare un linguaggio di programmazione (o due) basti per introdurci nel mondo dell’informatica. Non è così. Programmare è solo una variabile di una grossa equazione, non per nulla esistono così tanti corsi accademici (sia alle superiori che alla università). Programmazione, ingegneria elettronica, computer science, database, internet, tanto per citarne alcune. Puoi comprare un libro e imparare le basi di programmazione, ma per il resto occorre studiare, seriamente. Non per nulla nel mondo del lavoro si è assunti in base a cosa uno sa fare. Freschi dagli studi si è assunti come “generalisti” (l’equivalente di un coltellino multiuso), ma poi uno si specializza, e difficilmente farà poi qualcosa di diverso continuando la sua carriera (e la mia si sta avvicinando al pensionamento, quindi ne so qualcosa). Per esempio dove lavoro io facciamo impianti industriali, quindi sia hardware che software, abbiamo quindi tutta una serie di ingegneri che fanno cose diametralmente opposte, alcuni di loro non fanno nemmeno programmazione.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Imparare tutta l'elettronica serve tempo e un valido motivo.
Mi sta bene capire per ora l'elettronica digitale, il linguaggio assembly, e architettura dell'elaboratore. Cosi posso studiare come è fatto sata usb e altre periferiche.

Inviato da BLN-L21 tramite App ufficiale di Tom\'s Hardware Italia Forum
 
U

Utente cancellato 371741

Ospite
Le conoscenze di javascript,css,html,php e sql non mi permettono di sbloccarmi e approcciare sulle nuove tecnologie come iot,robot,embedded,machine leaning.
Scusa, ma non stavi lavorando su database ? Orientamento a database o a embedded/driver sono mondi completamente diversi, sia come programmazione, sia perche' in embedded servono anche conoscenze elettroniche.

Dovrò studiare piu che altro matematica per apprendere il machine learning: calcolo infinitesimale, algebra lineare, geometria, probabilità e statistica.

Anche qui, machine learning e' una tecnologia che non e' legata all'embedded in particolare, ancora un altro settore.

Stai mettendo troppa crne al fuoco, mi pare. Non puoi partire volendoti specializzare in tutto. Driver non hanno alcuna correlazione con machine learning, non hanno policy, eventualemente minime, sono solo interfacce all'ahrdware.

C'e' una passeggiata nel bosco da fare, dove decidi la tua passione, il tuo orinentamento. Da li poi si costruisce.

Per iniziare a lavorare su driver decentemente possono volerci 5 o 10 anni. E' una strada dura.
Si parte innanzitutto dall'inglese. No italiano.

Poi, per embedded fondamentale consocenza ottima del C, (3 anni ?)
Microcontrollori, cpu, 16, 32, 64 bit, conoscere le architetturre, (ne escono sempre di nuove, studio continuo)
Elettronica, saper leggere gli schrematici, capire i funzionamenti, e trovare problemi, (5, 10 anni ?)

Hai i sorgenti li linux ad esempio, hai detto che non riesci a capirli, allora mancano basi C, hai visto la sua cartella Documentation ? Spiegano tutto, se hai le basi.

Ingegneria database, php/html, embedded e driver + elettronica, sono tutte professionalita' diverse, cerca di capire la tua strada, poi, uan volta deciso, qui troverai aiuto. Certo c'e' chi ne sa di tutto un po' e nulla nel profondo.

Saluti
 
Ultima modifica da un moderatore:
  • Mi piace
Reazioni: Andretti60

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Scusa, ma non stavi lavorando su database ? Orientamento a database o a embedded/driver sono mondi completamente diversi
Sono d'accordo. comunque starò piu attento nell'inserire topic diversi in poco tempo.

Non puoi partire volendoti specializzare in tutto

Il motivo è prepararmi ad aprire una mia attività e partire da un qualsiasi progetto realizzabile individualmente,
quindi per ora sto sperimentando. Finora riesco bene nel cloud computing.
Sperimentando ho trovato solo progetti complessi: un proprio sistema operativo, un proprio database, una propria community.

Ho scartato i sistemi operativi perchè nella pratica non ho basi di elettronica per partire da zero. Ho provato voler scrivere un device mananger per iniziare ma nulla. Pero taglio fuori robot, iot, sistemi embendded.

Sto scartando anche i database, la soluzione delle liste concatenate che rispetta proprietà acid non mi porta lontano per diverse ragioni. Ma non ho altre idee su come realizzare tabelle e le operazioni su insiemi. Bada che il progetto mi piace in se. Spenderò tempo a capire perchè e impostarlo cosi.

Vedro se riesco a non scartare una community (saranno le mie prossime domande). Avrei tutte le competenze per realizzare una piattaforma di rete di soluzioni e problem solving ma non voglio spendere tanto tempo nel cercare di realizzarla personalizzandola. Intendo dire in analisi innovative di cosa ti puo dare di piu il mio prodotto rispetto a quello che ce gia.
Non cerco la competizione, se il prodotto che realizzo esiste gia sei un amico in piu sul mercato che mi puo dare una mano nel settore. Principalmente i miei linguaggi sono il css,html,javascript e php. Ma anche qui sto per cambiare. Ho scelto asp C# e .net.

Non scarto nemmeno l'idea di una applicazione desktop standalone in C# di deep learning e AI (qui altro tasto, studiare matematica se vuoi capirci qualcosa di pratico).

Hai i sorgenti li linux ad esempio, hai detto che non riesci a capirli, allora mancano basi
Il C con l'università lo sto riscoprendo. Mi sto orientando su C# (Confusi... con C# un sistema operativo non lo realizzi per esempio ma un database probabilmente si e anche una comunity si).
Come fai vi chiederete? troppe materie.

ogni giorno dedico metà giornata a nuovi studi (C#, ora l'elettronica digitale, il C avanzato) e l'altra metà agli esami dell'università.
un passo alla volta i risultati seppur pessimi arrivano.
Ingegneria database, php/html, embedded e driver + elettronica, sono tutte professionalita' diverse, cerca di capire la tua strada, poi, uan volta deciso, qui troverai aiuto

buona fortuna, grazie per l'incorraggiamento. Vi faccio sapere per il database.
 
Ultima modifica:

Andretti60

Utente Èlite
6,440
5,091
.
Principalmente i miei linguaggi sono il css,html,javascript e php. Ma anche qui sto per cambiare. Ho scelto asp C# e .net.
Non scarto nemmeno l'idea di una applicazione desktop standalone in C# di deep learning e AI (qui altro tasto, studiare matematica se vuoi capirci qualcosa di pratico).
Scusa, ma che università stai seguendo? Parlo perché mi sembra tu non abbia alcune basi di computer science, forse hai appena cominciato?

Innanzi tutto con quei linguaggi ci fai ben poco, sono fatti per lavorare in rete, e alcuni di loro non sono nemmeno linguaggi di programmazione, ma solo markup languages.

C# è un buon linguaggio ma va bene solo per scrivere applicazioni desktop in Windows, io non lo insegnerei nemmeno alle università, che le terrei lontane da applicazioni che girano solo su un dedicato sistema operativo. E C# non va assolutamente bene per un database, al massimo per qualche middleware (sempre e solo per Windows)

Per ultimo, cosa intendi per “deep learning”. Perché come per un database, ci sono due parti, un server (nel caso di deep learning sarà una libreria) e un cliente (un applicativo). Molti parlano di fare deep learning ma in realtà fanno applicazioni che usano librerie deep learning (per esempio SensorFlow) magari due linee di codice in Python (uno dei linguaggi preferiti in quanto non c’è bisogno di molto per usare una libreria). Se vuoi scrivere una libreria deep learning, la curva di studio è molto ripida e dura anni in quanto non solo devi sapere programmare (e bene), in C, ma anche avere solide basi di informatica e computer science.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Vedro se riesco a non scartare una community (saranno le mie prossime domande). Avrei tutte le competenze per realizzare una piattaforma di rete di soluzioni e problem solving ma non voglio spendere tanto tempo nel cercare di realizzarla personalizzandola. Intendo dire in analisi innovative di cosa ti puo dare di piu il mio prodotto rispetto a quello che ce gia.
Non cerco la competizione, se il prodotto che realizzo esiste gia sei un amico in piu sul mercato che mi puo dare una mano nel settore. Principalmente i miei linguaggi sono il css,html,javascript e php. Ma anche qui sto per cambiare. Ho scelto asp C# e .net.
All'università non insegnano niente di tutto ciò. I linguaggi di programmazione dell'università sono il C e il JAVA. Sono daccordo con te.

Dedico metà giornata all'università e l'altra metà a studiare da autodidatta perchè alcune conoscenze mi serviranno anche al lavoro.
Ho un background ambito IT principalmente in PL/SQL oracle forms e reports. 4 anni di esperienza. So programmare siti web in php. Attualmente essendo che sto cercando di finire l'università sono disoccupato. Mi servivano dei pareri su come orientarmi sulle tecnologie non il solito database e il solito sito internet.

Innanzi tutto con quei linguaggi ci fai ben poco, sono fatti per lavorare in rete, e alcuni di loro non sono nemmeno linguaggi di programmazione, ma solo markup languages.
Sono d'accordo. mi scuso per linguaggi di programmazione da non confondere con quelli di markup languages.

Per ultimo, cosa intendi per “deep learning”
Notavo facendo delle ricerche su tomshw che il termine "machine learning" è usato indicare pc con certe caratteristiche hardware.
Faccio una discussione a parte per il machine learning e la sottocategoria deep learning per non creare altra confusione. Infatti lo sapevo che sarebbe andata cosi. come diceva @bigendian è solo tanta carne sul fuoco .

Notavo sul forum nelle ricerche: intelligenza artificiale deep learning con python o java non sono topic. Non aprirò discussioni dunque.
 
Ultima modifica:

Andretti60

Utente Èlite
6,440
5,091
difficile darti consigli sulle nuove tecnologie in quanto questo è un settore che cambia non di anno in anno, ma di giorno in giorno. La realtà del mondo lavorativo sarà sempre ben diversa da quella che era mentre si studiava. Per questo motivo l’università serve per imparare le basi, ma poi i dettagli si imparano “sul campo” e uno finisce con lo specializzarsi in qualche settore particolare. È finito il tempo del programmatore tutto fare che con il suo piccolo computer in casa riusciva a creare un intero prodotto completo.
Mi ricordo quando all’uni andai a seguire un incontro con un famoso astrofisico italiano, e uno del pubblico gli chiese cosa dovrebbe studiare pet seguire i suoi passi e la risposta fu semplicissima, lasciare fa perdere l’astrofisica e concentrarsi a studiare e imparare bene i corsi fondamentali di fisica e matematica. Lo stesso vale per qualunque corso di studio e qualunque disciplina. In questo caso, Solo imparando le basi di programmazione usando un solido linguaggio di programmazione che giri su ogni piattaforma e sistema operativo si potrà poi affrontare il mondo del lavoro che in questo campo cambia continuamente e ci forza di dovere constante mente studiare qualcosa di nuovo ogni giorno.
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
È finito il tempo del programmatore tutto fare che con il suo piccolo computer in casa riusciva a creare un intero prodotto completo.
Penso che un tempo erano pochi quelli che ci riuscivano. Ora abbiamo tutti gli strumenti per provare da soli.

Il motivo è prepararmi ad aprire una mia attività e partire da un qualsiasi progetto realizzabile individualmente,
quindi per ora sto sperimentando.
Mi verranno delle idee. Mi resta che cercare e applicarmi in quel mercato. Devo solo trovare cosa.
 

filoippo97

Utente Èlite
14,067
7,617
CPU
Intel Core I7 4930K @4.5GHz
Dissipatore
EKWB supremacy nickel
Scheda Madre
ASUS Rampage IV Black Edition
HDD
OCZ vertex 4 512GB | WD RE4 Enterprise Storage 2TB
RAM
16GB Corsair Dominator Platinum 2133MHz cas9 OC @2400MHz 9-11-11-31-2 1.65V
GPU
2-way SLI GTX 780Ti DirectCUII OC
Audio
TEAC UD-503 MUSES + HiFiMan HE-560 V2 + Anaview AMS1000 + Tannoy Revolution XT8F
Monitor
ASUS VG278HR 144Hz 3D 1920x1080p
PSU
Corsair AX1200i Fully sleeved red
Case
Corsair Graphite 760T Arctic White
Periferiche
Corsair K95 | Steelseries Rival
OS
windows 10 Pro
serve una estesa conoscenza dell'elettronica digitale e delle architetture dei calcolatori in primis. Sapere come funziona un registro, una ALU, un sommatore, il program counter, cosa sono e come si usano gli interrupt... queste son le basi, la figura del programmatore embedded é molto trasversale tra l'informatica e l'elettronica indi per cui non basta sapere programmare con linguaggi di medio e basso livello per esserne capace (e nel caso, ti suggerisco di partire dal C). Ho fatto almeno 4 corsi annuali per questo, di fatto é un argomento che richiede una trattazione molto estesa.
Dopo che hai le basi di elettronica, ti specializzi su un determinato processore e impari il suo set di istruzioni, perché programmare in embedded vuol dire avere le basi per programmare qualunque processore, ma saperne programmare realmente solo uno o comunque pochi che condividono lo stesso ISA, e anche se condividono lo stesso ISA, per ogni processore nuovo devi prima sempre documentarti su quale hardware hai a disposizione (che, a volte, non si limita al processore stesso ma son dei veri e propri SoC, corredati di GPU e DSP programmabili, per i quali é richiesta quindi anche una conoscenza di segnali e comunicazioni elettriche). Per fare ció, devi prima leggerti quindi il datasheet del processore che hai scelto dal produttore, in genere i migliori li ho sempre visti dalla Texas Instruments quindi se vuoi iniziare, proverei con uno dei loro.
Infine, serve conoscere anche le implicazioni che il codice ha sul processore. Mentre in C puoi realizzare un task con virtualmente illimitati modi di approccio (che so, puoi usare dei for anziché dei while per esempio) in embedded e quindi in assembly ci son modi che son fortemente piú raccomandati di altri per fare determinate cose, ad esempio i loop non si fanno MAI partendo da 0 ed incrementando fino ad X ma SEMPRE al contrario, partendo da X e sottraendo fino ad arrivare a zero. Allo stesso modo si preferisce usare sempre un ciclo for anziché while. Questo per dirne qualcuna. C'é quindi tutto un lavoro di ottimizzazione del codice notevole che implica la conoscenza dell'impatto che un determinato codice ha sulla cpu.
Il lavoro del digital designer e del programmatore embedded é per pochi, richiede uno sbattone niente male, conoscenze trasversali e un certo quantitativo di imprecazioni quando le cose non funzionano perché non é come avere un IDE tipo Visual Studio con un linguaggio user friendly dove piú o meno con un ottimo debugger capisci subito cosa c'é che non va. Per certi versi é un lavoro molto noioso ma non stupisce che in assoluto sia tra i lavori d'ingegneria piú pagati in assoluto.
 
U

Utente cancellato 371741

Ospite
Infine poi, non e' che un giorno dici "sono diventato programmatore di driver embedded", conosco il mestiere, perche escono continuamente nuove tecnologie.
Certi driver coplessi, per scriverne una versione che supporta tutte le funzionalita', senza supporto del costruttore del chip, sono un lavoro arduo se non estremo anche per un esperto. Poi, ogni giorno escono tecnologie nuove, ogni giorno c'e' da studiare dai datasheet, e ogni giorno c'e' da imparare anche per uno che ha 20 anni di esperienza o piu. Cmq, buona fortuna !
 

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
Mi è stato detto di studiare elettronica dei microcontrollori.
Inoltre di imparare bene assembly e C. Non ho molta esperienza del C. Il linguaggio lo conosco ma ho poca pratica.

Sul dbms non riesco a implementare le transazioni e le proprietà acid con le liste concatenate. Ci devessere un altro modo. È un conto programmare in sql e un conto sapere come è fatto un database.
Allora ho lasciato perdere. Dedico il tempo nello studio.



Inviato da BLN-L21 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!