FMUSER Wirless Transmit video și audio mai ușor!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
Pentru dezvoltarea aplicațiilor: limbajul C, structura datelor, JAVA etc. trebuie învățate bine. Nu există nimic special la care să acordați atenție în dezvoltarea aplicațiilor încorporate și dezvoltarea aplicațiilor pe PC. Poate spuneți că trebuie să optimizați sistemul încorporat, da, trebuie să optimizați, dar programul neoptimizat nu diferă de dezvoltarea programului de pe PC. În plus, atunci când ai capacitatea de a optimiza, nu mai ești obișnuit să pui această întrebare. Pentru un exemplu specific, cum ar fi interfața de dezvoltare, folosim VC pe PC; în Linux încorporat, putem folosi QT și Android. În acest moment, ar trebui să învățați programarea QT și Android. Dar fundația este încă C sau JAVA și, pe această bază, familiarizați-vă cu interfețele lor. Dacă ați învățat VC, este nevoie de timp pentru a înțelege aceste clase și controale.
Dacă doriți să învățați sistemul de bază, aceasta este specialitatea mea, dar pot spune puțin.
Înainte de a răspunde la această întrebare, permiteți-mi să răspund: Multe persoane mă întreabă, este să învăț să conduc sau să învețe să aplic? Pot spune doar că se bazează pe interes, iar driverele și aplicațiile nu sunt complet separate.
1. Driverele despre care vorbim nu se limitează la operațiuni hardware, ci și la concepte precum principiile sistemului de operare și programarea procesului de repaus și trezire. Dacă doriți să scrieți o aplicație bună și doriți să rezolvați mai bine problemele întâmpinate de aplicație, ar trebui să înțelegeți aceste cunoștințe
2. Bariere scăzute în calea aplicării, în special actualul ANDROID, JAVA pur. Personal, cred că calea de dezvoltare a aplicațiilor este competentă în afaceri. De exemplu, în industria comunicațiilor, industria IPTV și industria telefoniei mobile, înțelegeți nevoile industriei. Prin urmare, oamenii care sunt lideri sunt în mare parte aplicații.
3. Fii condus. De fapt, nu vreau să-l numesc „a fi un șofer”, dar vreau să-i spun „a fi un sistem de nivel scăzut”. Odată terminat, acest lucru va ucide toate industriile. Am lucrat de câțiva ani și am realizat telefoane mobile, IPTV și conferințe, dar aceste produse nu fac nicio diferență pentru mine, deoarece fac doar stratul inferior. Afacerea lor nu are nicio legătură cu mine. Când există o problemă cu aplicația și nu o pot rezolva, le voi da o idee din perspectiva nucleului și le voi oferi instrumente. Eu personal cred că sunt un expert tehnic în direcția de dezvoltare a stratului inferior.
4. De fapt, nu există limite între realizarea stratului inferior sau realizarea aplicației. Dacă aveți experiența stratului inferior, vă veți simți foarte în largul dvs. atunci când faceți aplicația. Cu experiența în afaceri, puteți cunoaște stratul inferior și veți putea forma în curând o echipă.
Înapoi la întrebarea cum să înveți. Ce este inclus în sistemul de bază Linux încorporat? Nu vă faceți griji, o veți cunoaște dând un exemplu.
1. Când computerul este pornit, cine afișează acele interfețe? Este BIOS, ce face? Unele auto-verificări, apoi citiți ferestrele de pe hard disk și porniți-l. În mod similar, acest BIOS corespunde bootloader-ului în Linux încorporat. Acest bootloader trebuie să citească kernel-ul Linux pe Flash și să îl pornească.
2. Care este scopul pornirii ferestrelor? Desigur, este vorba de chat online sau ceva de genul acesta. Unde sunt aceste instrumente de internet și chat? Pe unitatea C și unitatea D. Prin urmare, Windows trebuie să identifice mai întâi unitatea C și unitatea D. Îl numim sistemul de fișiere rădăcină sub Linux.
3. Windows poate recunoaște unitatea C și unitatea D, deci trebuie să poată citi și scrie unitatea hard disk. Lucrurile implicate se numesc șoferi. Desigur, nu este doar un hard disk, ci și o placă de rețea, USB și așa mai departe. Linux încorporat poate citi și executa aplicații din Flash și trebuie să aibă și drivere Flash. Desigur, nu este doar Flash.
Să vorbim despre asta mai întâi, LINUX încorporat conține patru părți majore: bootloader, kernel, driver și sistem de fișiere rădăcină.
Unul, bootloader
Este un program ușor mai complicat. Dar nu este ușor să înțelegeți și să scrieți acest program de tip bareboard. Instrumentele utile din Windows ne slăbesc capacitatea de programare.
Mulți oameni folosesc ADS și KEIL imediat ce se joacă încorporate. Poti raspunde la aceste intrebari?
1. După pornire, unde preia procesorul instrucțiunile de execuție?
Răspuns: În general, instrucțiunea este de la Flash.
2. Dar Flash poate fi citit și nu scris direct. Dacă folosesc variabile globale, unde sunt aceste variabile globale?
Răspuns: Variabilele globale ar trebui să fie în memorie
3. Deci cine pune în memorie variabilele globale?
Răspuns: Puteți răspunde unui prieten care a folosit ADS și KEIL de mult timp? Acest lucru necesită „relocare”. În ADS sau KEIL, codul de relocare este scris pentru dvs. de către compania care produce aceste instrumente. Ai citit-o vreodată?
4. Memoria este atât de mare, de unde știu ce adresă să citesc „conținutul stocat inițial în Flash” în memorie?
Răspuns: Această adresă este determinată de „link script”, există fișiere scatter în ADS și fișiere similare în KEIL. Dar, l-ai studiat?
5. Ați spus că relocarea este să copiați un program de pe Flash în memorie, astfel încât acest program să poată citi Flash? Răspuns: Da, trebuie să puteți opera Flash. Desigur, nu numai acestea, ci și setarea ceasului pentru ca sistemul să funcționeze mai repede și așa mai departe. Să întrebăm și să răspundem aici mai întâi, bootloader-ul, un program de tip bareboard, are de fapt trei puncte principale:
1. Funcționarea hardware-ului
2. Înțelegerea procesorilor de sistem ARM
3. Conceptele de bază ale programului: relocare, stivă, segment de cod, segment de date, segment BSS și așa mai departe.
Pentru funcționarea hardware-ului, trebuie să vedeți schema și manualul cipului. Acest lucru necesită o anumită cantitate de cunoștințe hardware. Nu necesită să puteți proiecta hardware, dar cel puțin să îl înțelegeți; nu necesită înțelegerea circuitelor analogice, ci înțelegerea circuitelor digitale. Am învățat această abilitate la școală. Cele două cărți (titlul cărții am uitat) sunt suficiente. Dar mă îndoiesc că ai răbdare să termini citirea acestor două cărți. Nu știu dacă există o carte mai rapidă acum. Dacă doriți să faceți acest lucru rapid, renunțați mai întâi la acest lucru și, dacă nu înțelegeți, întrebați Google și postați-l.
În plus, manualul cu cipuri trebuie citit, nu căutați limba chineză, uitați-vă doar la limba engleză. La început a fost foarte dureros, dar mai târziu, odată ce gramatica și vocabularul sunt familiare, este ușor să citiți orice manual cu cipuri.
Pentru a înțelege procesoarele de sistem ARM, vă rugăm să consultați Du Chunlei. Vorbește despre instrucțiuni de asamblare, moduri de excepție, MMU etc. Doar aceste 3 conținuturi trebuie să înțelegi.
Conceptul de bază al programului, desigur, regele este să se uite la principiile compilării. Din păcate, acest tip de carte este cu siguranță de nivelul cărții cerești. Vă sfătuiesc să nu îl urmăriți decât dacă sunteți un super geniu. Uită-te doar la iar primul videoclip pe care l-am scris, nu vă faceți griji, nu cheltuiți bani. În urma videoclipului și a experimentelor legate de hardware, aceste concepte vor deveni clare. Nu am găsit al doilea set de cărți sau videoclipuri care să vorbească despre aceste concepte, permițându-mi să mă laud orbește despre asta. Pentru bootloader, l-am urmărit mai întâi când studiam, apoi am scris singur programul și am făcut toate experimentele pe diverse hardware, cum ar fi GPIO, clock, SDRAM, UART și NAND. Dacă le clarificați, este ușor să înțelegeți u-boot prin grupare. Pentru a rezuma, pentru a înțelege schema hardware și manualul cipului, trebuie să găsiți singuri informațiile. În rest, trebuie doar să urmați lista capitolelor din și prima fază a videoclipului de învățat.
Doi, nucleul
Cei care doresc să înceapă trebuie să treacă mai întâi peste învățarea kernel-ului și să învețe cum să scrie drivere direct.
Pentru a deveni un maestru, nucleul trebuie să aibă o înțelegere profundă. Rețineți că vorbesc despre înțelegere, nu am nicio speranță extravagantă să scriu un nucleu.
Pentru a înțelege mecanismul de planificare, mecanismul de gestionare a memoriei, mecanismul de gestionare a fișierelor etc. din interior.
Recomandați două cărți:
1. Citiți, vă rugăm să citiți cartea subțire (societatea plutitoare accentuează viteza)
2. Alegeți să citiți, doriți să știți ce secțiune să citiți ce secțiune
Trei, conduce
Driverul constă din două părți: funcționarea hardware-ului în sine și cadrul driverului.
Este din nou hardware-ul. Este încă necesar să înțelegeți schema și manualul cipului. Exerseaza mai mult. Apropo de cadrul șoferului, există câteva cărți care să îl introducă. LDD3, cartea scrisă de un străin, introduce multe concepte și merită citită. Cu toate acestea, rolul său se limitează la introducerea conceptelor. Practic l-am folosit pentru a mă familiariza cu conceptele înainte de a începe, apoi pentru a le arunca după ce am început.
Introducerea mai cuprinzătoare a șoferului ar trebui să fie cea a lui Song Baohua. Sincer să fiu, am citit doar catalogul. Mulți oameni au spus că da, îl recomand aici.
Dacă doriți să înțelegeți o anumită zonă în profunzime, este cu siguranță o recomandare super de 5 stele. Nu vă așteptați să-l citiți, mai mult de 1,800 de pagini, două volume în sus și în jos. Când nu sunt sigur despre o anumită zonă, o să mă uit prin ea. Orice parte a acestei cărți poate acoperi două sau trei sute de pagini, ceea ce este foarte detaliat. Și să te ducă să analizezi codul sursă de nucleu cu un anumit scop. Ia linux 2.4 ca exemplu, dar principiul este același și se aplică și altor versiuni de linux. Alte introduceri? Desigur, există, al doilea număr al Wei Dongshan Linux Video. „Manualul complet de dezvoltare a aplicațiilor Linux încorporate” nu vorbește prea mult despre driver și nu este suficient de aprofundat.
Încercați să scrieți un driver pentru toate componentele hardware implicate în placa de dezvoltare. Dacă aveți o problemă, ar trebui mai întâi să „gândiți dureros”. În procesul de gândire, veți conecta o mulțime de cunoștințe irelevante și, în cele din urmă, le veți realiza.
În al patrulea rând, sistemul de fișiere rădăcină
V-ați gândit vreodată la aceste două întrebări:
1. Pentru produsele fabricate de Linux, unele sunt utilizate pentru monitorizare, unele sunt utilizate ca telefoane mobile, iar altele sunt utilizate ca tablete. Deci, după ce nucleul este pornit, după montarea sistemului de fișiere rădăcină, ce aplicație ar trebui să fie pornită?
Răspuns: Kernel-ului nu știe sau nu îi pasă ce program de utilizator ar trebui să fie pornit. Acesta pornește doar aplicația init, care corespunde / sbin / init.
Evident, această aplicație trebuie să citească fișierul de configurare și să pornească programul utilizatorului (monitorizare, interfață manuală, interfață tabletă etc.) în conformitate cu fișierul de configurare. Această întrebare ne amintește că conținutul sistemului de fișiere are unele convenții, cum ar fi / sbin / init, este necesar un fișier de configurare.
2. V-ați gândit vreodată cine a implementat printf-ul folosit în programele Hello și World pe care le-ați scris?
Răspuns: Această funcție nu este implementată de dvs., ci de o funcție de bibliotecă. Când rulează, trebuie să găsească biblioteca.
Această întrebare ne amintește că există încă biblioteci în sistemul de fișiere. Iată o întrebare și răspuns simplu. Dacă doriți să aflați mai multe, puteți să consultați init.c din busybox pentru a afla ce face procesul de inițiere. Desigur, puteți vedea și capitolul despre construirea sistemului de fișiere rădăcină în .
Experiența mea de învățare
1. Când eram la școală, m-am specializat în fizică și electronică. De fapt, nu am învățat cum să proiectez circuite în cadrul cursului, ci am predat doar câteva cunoștințe despre circuitele electronice. Proiectarea PCB a fost predată de mine în laborator. Am proiectat doar o placă cu 2 straturi și acum aproape că o uit. Dar își păstrează capacitatea de a citi schema și manualul cipului.
2. Am absolvit software și sunt foarte interesat de proiectarea software-ului, dar am învățat doar limbajul C și baza de date. Am făcut multe întrebări despre competiție cu interes. Nu pot participa la competiție, dar am o practică lingvistică solidă C.
3. În laborator, în prima companie, am proiectat niște plăci PCI simple și am scris driverul Windows
4. În cea de-a doua companie, folosind 51 de microcomputer cu un singur cip ca telefon auto, a început să înceapă drumul software-ului pur.
5. Am început să simt deficiențele microcomputerului cu un singur cip. Am demisionat jumătate de an pentru a învăța Linux în spatele ușilor închise, începând cu modul de operare a pălăriei roșii. Pasul este să-l priviți mai întâi, apoi să scrieți programul de bord gol pentru a opera hardware-ul și apoi să analizați u-boot-ul. În același timp, am o oarecare înțelegere a cadrului LINUX.
Când scrieți panouri goale, este recomandat să vă consolidați înțelegerea despre întreruperi. Nucleul folosește întreruperi pentru a finaliza diferite funcții.
6. După ce ați analizat u-boot, porniți programarea simplă a driverului. În acest moment, abilitatea este încă foarte slabă.
7. Am început să lucrez la ZTE, am lucrat timp de 2 ani, am scris tot felul de drivere, am rezolvat tot felul de probleme (probleme de conducere, ajutând la localizarea problemelor de aplicație) și abilitatea a fost temperată.
|
Introduceți adresa de e-mail pentru a primi o surpriză
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
FMUSER Wirless Transmit video și audio mai ușor!
Contact
Adresa:
Nr. 305 Clădirea HuiLan nr. 273 Huanpu Road Guangzhou China 510620
Categorii
Stiri lunare via e-mail