FMUSER Wirless Trasmetti video e audio più facilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
Per lo sviluppo di applicazioni: il linguaggio C, la struttura dei dati, JAVA, ecc. Devono essere appresi bene. Non c'è niente di speciale a cui prestare attenzione nello sviluppo di applicazioni embedded e nello sviluppo di applicazioni su PC. Forse dici che devi ottimizzare il sistema integrato, sì, devi ottimizzare, ma il programma non ottimizzato non è diverso dallo sviluppo del programma sul PC. Inoltre, quando hai la possibilità di ottimizzare, non sei più abituato a fare questa domanda. Per un esempio specifico, come l'interfaccia di sviluppo, utilizziamo VC sul PC; in Linux incorporato, possiamo usare QT e Android. A questo punto, dovresti imparare a programmare QT e Android. Ma la base è ancora C o JAVA e su questa base acquisisci familiarità con le loro interfacce. Se hai imparato il VC, ci vuole tempo per comprendere quelle classi e controlli.
Se vuoi imparare il sistema sottostante, questa è la mia specialità, ma posso dire un po '.
Prima di rispondere a questa domanda, lasciatemi rispondere: molte persone mi chiedono: è per imparare a guidare o per applicare? Posso solo dire che si basa sugli interessi e che i driver e le applicazioni non sono completamente separati.
1. I driver di cui stiamo parlando non si limitano alle operazioni hardware, ma anche a concetti come i principi del sistema operativo e la pianificazione dello sleep e della riattivazione dei processi. Se vuoi scrivere una buona applicazione e vuoi risolvere meglio i problemi riscontrati dall'applicazione, dovresti comprendere questa conoscenza
2. Basse barriere all'applicazione, soprattutto l'attuale ANDROID, puro JAVA. Personalmente ritengo che il percorso di sviluppo dell'applicazione sia efficace nel mondo degli affari. Ad esempio, nel settore delle comunicazioni, dell'IPTV e della telefonia mobile, comprendi le esigenze del settore. Pertanto, le persone che sono leader sono per lo più applicazioni.
3. Sii guidato. In effetti, non voglio chiamarlo "essere un driver", ma voglio chiamarlo "essere un sistema di basso livello". Una volta fatto, questo ucciderà tutte le industrie. Ho lavorato per diversi anni e ho realizzato telefoni cellulari, IPTV e TV per conferenze, ma questi prodotti non fanno differenza per me perché faccio solo lo strato inferiore. I loro affari non hanno niente a che fare con me. Quando si verifica un problema con l'applicazione e non è possibile risolverlo, darò loro un'idea dal punto di vista del kernel e fornirò loro gli strumenti. Personalmente penso di essere un esperto tecnico nella direzione dello sviluppo dello strato inferiore.
4. In effetti, non c'è limite tra l'esecuzione del livello inferiore o l'esecuzione dell'applicazione. Se hai l'esperienza del livello inferiore, ti sentirai molto a tuo agio quando eseguirai l'applicazione. Con l'esperienza aziendale, puoi conoscere il livello inferiore e presto sarai in grado di formare una squadra.
Torniamo alla domanda su come imparare. Cosa è incluso nel sistema sottostante Linux incorporato? Non preoccuparti, lo saprai facendo un esempio.
1. Quando il computer è acceso, chi mostra queste interfacce? È BIOS, cosa fa? Alcuni controlli automatici, quindi leggere le finestre dal disco rigido e avviarlo. Allo stesso modo, questo BIOS corrisponde al bootloader in Linux incorporato. Questo bootloader deve leggere il kernel Linux su Flash e avviarlo.
2. Qual è lo scopo dell'avvio di Windows? Ovviamente si tratta di chat online o qualcosa del genere. Dove sono questi strumenti di chat e Internet? Sull'unità C e sull'unità D. Pertanto, Windows deve prima identificare l'unità C e l'unità D. Lo chiamiamo il file system root sotto Linux.
3. Windows è in grado di riconoscere l'unità C e l'unità D, quindi deve essere in grado di leggere e scrivere sul disco rigido. Le cose coinvolte si chiamano driver. Naturalmente, non è solo un disco rigido, ma anche una scheda di rete, USB e così via. Linux incorporato può leggere ed eseguire applicazioni da Flash e deve anche disporre di driver Flash. Ovviamente non è solo Flash.
Parliamone prima, LINUX incorporato contiene quattro parti principali: bootloader, kernel, driver e file system root.
Uno, bootloader
È un programma bare board leggermente più complicato. Ma non è facile capire e scrivere questo semplice programma. Gli strumenti utili sotto Windows indeboliscono la nostra capacità di programmazione.
Molte persone usano ADS e KEIL non appena giocano incorporati. Puoi rispondere a queste domande?
1. Una volta acceso, da dove prende la CPU le istruzioni per l'esecuzione?
Risposta: generalmente, l'istruzione proviene da Flash.
2. Ma Flash può essere solo letto e non scritto direttamente. Se utilizzo variabili globali, dove sono queste variabili globali?
Risposta: le variabili globali dovrebbero essere in memoria
3. Quindi chi mette le variabili globali in memoria?
Risposta: puoi rispondere a un amico che ha utilizzato ADS e KEIL per molto tempo? Ciò richiede il "trasferimento". In ADS o KEIL, il codice di trasferimento è scritto per te dalla società che produce questi strumenti. L'hai mai letto?
4. La memoria è così grande, come faccio a sapere quale indirizzo leggere il "contenuto originariamente archiviato in Flash" nella memoria?
Risposta: Questo indirizzo è determinato da "script di collegamento", ci sono file scatter in ADS e file simili in KEIL. Ma l'hai studiato?
5. Hai detto che il trasferimento consiste nel copiare un programma dalla Flash alla memoria, quindi questo programma può leggere Flash? Risposta: Sì, è necessario essere in grado di utilizzare Flash. Ovviamente non solo questi, ma anche l'impostazione dell'orologio per rendere il sistema più veloce e così via. Chiediamo e rispondiamo prima qui, il bootloader, un programma bare-board, ha in realtà tre punti principali:
1. Funzionamento dell'hardware
2. Comprensione dei processori del sistema ARM
3. I concetti di base del programma: trasferimento, stack, segmento di codice, segmento di dati, segmento BSS e così via.
Per il funzionamento dell'hardware, è necessario vedere il diagramma schematico e il manuale del chip. Ciò richiede una certa conoscenza dell'hardware. Non richiede che tu sia in grado di progettare hardware, ma almeno di capirlo; non richiede di essere in grado di capire i circuiti analogici, ma di capire i circuiti digitali. Ho imparato questa abilità a scuola. I due libri (il titolo del libro che ho dimenticato) sono sufficienti. Ma dubito che tu abbia la pazienza di finire di leggere questi due libri. Non so se ora esista un libro più veloce. Se vuoi essere veloce, lascialo andare prima e se non capisci, chiedi a Google e pubblica.
Inoltre, il manuale del chip deve essere letto, non cercare il cinese, guarda solo l'inglese. All'inizio è stato molto doloroso, ma in seguito, una volta che la grammatica e il vocabolario sono familiari, è facile leggere qualsiasi manuale di chip.
Per la comprensione dei processori di sistema ARM, vedere Du Chunlei's. Parla di istruzioni di assemblaggio, modalità di eccezione, MMU, ecc. Solo questi 3 contenuti richiedono che tu capisca.
Il concetto di base del programma, ovviamente, il re è guardare ai principi della compilazione. Sfortunatamente, questo tipo di libro è decisamente del livello del libro celeste. Ti consiglio di non guardarlo a meno che tu non sia un super genio. Guarda il file e il primo video che ho scritto, non preoccuparti, non spendere soldi. Dopo il video e facendo esperimenti relativi all'hardware, questi concetti diventeranno chiari. Non ho trovato la seconda serie di libri o video che parlino di questi concetti, permettendomi di vantarmene ciecamente. Per il bootloader, l'ho guardato per la prima volta mentre studiavo, quindi ho scritto il programma da solo e ho fatto tutti gli esperimenti su vari hardware, come GPIO, clock, SDRAM, UART e NAND. Se li chiarisci, è facile capire u-boot raggruppandoli. Per riassumere, per comprendere il diagramma schematico dell'hardware e il manuale del chip, è necessario trovare le informazioni da soli. Per il resto, basta seguire l'elenco dei capitoli del e la prima fase del video per imparare.
Due, il kernel
Coloro che vogliono iniziare dovrebbero prima saltare l'apprendimento del kernel e imparare a scrivere direttamente i driver.
Per diventare un maestro, il kernel deve avere una profonda comprensione. Nota che sto parlando di comprensione, non ho speranze stravaganti di scrivere un kernel.
Per comprendere il meccanismo di pianificazione, il meccanismo di gestione della memoria, il meccanismo di gestione dei file, ecc. All'interno.
Consiglia due libri:
1. Leggi tutto, leggi il libro sottile (La società fluttuante sottolinea la velocità)
2. Scegli di leggere, voglio sapere quale sezione leggere quale sezione
Tre, guida
Il driver è costituito da due parti: il funzionamento dell'hardware stesso e la struttura del driver.
È di nuovo l'hardware. È ancora necessario comprendere il diagramma schematico e il manuale del chip. Esercitati di più. Parlando del framework dei driver, ci sono alcuni libri per introdurlo. LDD3, il libro scritto da uno straniero, introduce molti concetti e vale la pena leggerlo. Tuttavia, il suo ruolo è limitato all'introduzione di concetti. Fondamentalmente l'ho usato per familiarizzare con i concetti prima di iniziare e poi buttarlo via dopo aver iniziato.
L'introduzione più completa al driver dovrebbe essere quella di Song Baohua. Ad essere sincero, ho letto solo il catalogo. Molte persone hanno detto di sì, lo consiglio qui.
Se vuoi capire una certa area in profondità, è sicuramente un super consiglio a 5 stelle. Non ti aspetti di leggerlo, più di 1,800 pagine, due volumi su e giù. Quando non sono sicuro di una certa area, la esaminerò. Qualsiasi parte di questo libro può coprire due o trecento pagine, il che è molto dettagliato. E per portarti ad analizzare il codice sorgente del kernel con un certo obiettivo. Prende linux 2.4 come esempio, ma il principio è lo stesso ed è applicabile anche ad altre versioni di linux. Altre presentazioni? Ovviamente c'è il secondo numero di Wei Dongshan Linux Video. Il "Manuale completo dello sviluppo di applicazioni Linux integrate" non parla molto del driver e non è abbastanza approfondito.
Prova a scrivere un driver per tutto l'hardware coinvolto nella tua scheda di sviluppo. Se hai un problema, dovresti prima "pensare dolorosamente". Nel processo di pensiero, collegherai molte conoscenze irrilevanti e alla fine le farai passare.
Quarto, il file system di root
Hai mai pensato a queste due domande:
1. Per i prodotti realizzati da Linux, alcuni sono usati per il monitoraggio, alcuni sono usati come telefoni cellulari e alcuni sono usati come tablet. Quindi, dopo l'avvio del kernel, dopo aver montato il file system di root, quale applicazione deve essere avviata?
Risposta: Il kernel non sa o non si cura di quale programma utente debba essere avviato. Avvia solo l'applicazione init, che corrisponde a / sbin / init.
Ovviamente questa applicazione deve leggere il file di configurazione e avviare il programma utente (monitoraggio, interfaccia manuale, interfaccia tablet, ecc.) Secondo il file di configurazione. Questa domanda ci ricorda che il contenuto del file system ha alcune convenzioni, come / sbin / init, è richiesto un file di configurazione.
2. Hai mai pensato a chi ha implementato il printf utilizzato nei programmi hello and world che hai scritto?
Risposta: questa funzione non è implementata da te, ma da una funzione di libreria. Quando viene eseguito, deve trovare la libreria.
Questa domanda ci ricorda che ci sono ancora librerie nel file system. Ecco una semplice domanda e risposta. Se vuoi saperne di più, puoi guardare init.c di busybox per sapere cosa fa il processo init. Ovviamente, puoi anche vedere il capitolo sulla creazione del file system root in .
La mia esperienza di apprendimento
1. Quando ero a scuola, mi sono laureato in fisica ed elettronica. In effetti, non ho insegnato a progettare circuiti nel corso, ma ho insegnato solo alcune conoscenze sui circuiti elettronici. La progettazione del PCB è stata insegnata da me in laboratorio. Ho disegnato solo una tavola a 2 strati e ora quasi me ne dimentico. Ma mantiene la capacità di leggere il diagramma schematico e il manuale del chip.
2. Mi sono laureato in software e sono molto interessato alla progettazione di software, ma ho imparato solo il linguaggio C e il database. Ho fatto molte domande sulla competizione con interesse. Non posso partecipare al concorso, ma ho una solida pratica del linguaggio C.
3. In laboratorio, nella prima azienda, ho progettato alcune semplici schede PCI e ho scritto i driver di Windows
4. Nella seconda azienda, utilizzando 51 microcomputer a chip singolo come telefono per auto, iniziò a intraprendere la strada del puro software.
5. Ho iniziato a sentire i difetti del microcomputer a chip singolo. Mi sono dimesso per sei mesi per imparare Linux a porte chiuse, iniziando con come far funzionare il cappello rosso. Il passo è guardarlo prima, poi scrivere il programma bare board per far funzionare l'hardware, e poi analizzare l'u-boot. Allo stesso tempo, ho una certa comprensione del framework LINUX.
Quando si scrivono bacheche nude, si consiglia di rafforzare la propria comprensione delle interruzioni. Il kernel usa gli interrupt per completare varie funzioni.
6. Dopo aver analizzato u-boot, avviare la semplice programmazione del driver. In questo momento, l'abilità è ancora molto debole.
7. Ha iniziato a lavorare in ZTE, ha lavorato per 2 anni, ha scritto tutti i tipi di driver, risolto tutti i tipi di problemi (problemi di guida, aiutando a localizzare problemi applicativi) e l'abilità è stata temperata.
|
Inserisci l'email per ricevere una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albanese
ar.fmuser.org -> Arabo
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaigiano
eu.fmuser.org -> Basco
be.fmuser.org -> bielorusso
bg.fmuser.org -> Bulgaro
ca.fmuser.org -> Catalano
zh-CN.fmuser.org -> Cinese (semplificato)
zh-TW.fmuser.org -> Cinese (Tradizionale)
hr.fmuser.org -> croato
cs.fmuser.org -> ceco
da.fmuser.org -> danese
nl.fmuser.org -> Olandese
et.fmuser.org -> Estone
tl.fmuser.org -> Filippino
fi.fmuser.org -> finlandese
fr.fmuser.org -> Francese
gl.fmuser.org -> Galiziano
ka.fmuser.org -> georgiano
de.fmuser.org -> tedesco
el.fmuser.org -> Greca
ht.fmuser.org -> Creolo haitiano
iw.fmuser.org -> Ebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandese
id.fmuser.org -> Indonesiano
ga.fmuser.org -> Irlandese
it.fmuser.org -> Italiano
ja.fmuser.org -> giapponese
ko.fmuser.org -> coreano
lv.fmuser.org -> Lettone
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedone
ms.fmuser.org -> Malese
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiano
pl.fmuser.org -> polacco
pt.fmuser.org -> portoghese
ro.fmuser.org -> Romeno
ru.fmuser.org -> Russo
sr.fmuser.org -> Serbo
sk.fmuser.org -> slovacco
sl.fmuser.org -> Sloveno
es.fmuser.org -> spagnolo
sw.fmuser.org -> Swahili
sv.fmuser.org -> svedese
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> Ucraino
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> Gallese
yi.fmuser.org -> Yiddish
FMUSER Wirless Trasmetti video e audio più facilmente!
Contatti
Indirizzo:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Cina 510620
Categorie
Newsletter