1. Il concetto di sistema embedded
Concentrarsi sulla comprensione del concetto di "incorporazione"
Si capisce principalmente da tre aspetti.
1. In termini di hardware, integrare i dispositivi periferici basati sulla CPU nel chip CPU. Per esempio, nei primi computer basati sull'architettura X86, la CPU ha solo le funzioni di unità aritmetica e accumulatore, e tutti i chip devono essere espansi costruendo ponti esterni. La realizzazione, la porta seriale e simili sono realizzati dal chip esterno del controller della porta seriale 16C550/2 e l'attuale chip del controller della porta seriale è già stato integrato nella CPU, e i PC hanno schede grafiche e la maggior parte dei processori incorporati Tutti hanno controller LCD, ma in un certo senso è equivalente a una scheda grafica. La CPU del processore di rete IXP sotto l'architettura Intel Xscale ARM di fascia relativamente alta integra un controller PCI (che può essere configurato per supportare 4 dispositivi PCI slave o configurarsi come dispositivo CPI slave); Integra anche 3 motori di processori di rete NPE, due dei quali corrispondono a due indirizzi MAC, che possono essere utilizzati per switching gateway, mentre l'altro motore di processori di rete NPE supporta DSL. Finché un chip PHY viene aggiunto all'esterno, l'accesso a Internet DSL può essere realizzato. La frequenza più alta della serie IXP può raggiungere 1.8G, supportare la memoria 2G, 1G * 10 o 10G * 1 Ethernet porta o canale ottico Febre canale. La serie IXP dovrebbe essere il processore più alto che mira a diventare il core Xscale dopo essere stato integrato da intel sotto la struttura di sistema ARM.
2. Dall'inizio del software, l'applicazione viene selezionata nel kernel del sistema operativo personalizzato e il kernel viene scaricato sulla ROM dopo la compilazione. Il componente applicativo selezionato durante la personalizzazione del kernel del sistema operativo è quello di completare l'"embedding" del software. Ad esempio, quando WinCE sta personalizzando il kernel, ci saranno scelte corrispondenti, tra cui wordpad, PDF, MediaPlay e così via. Se scegliamo, Dopo l'avvio del CE, puoi trovare queste cose nell'interfaccia. Se si tratta del sistema operativo Windows del PC precedente, la maggior parte delle cose devono essere reinstallate.
3. Masterizzare il kernel del software o il file system dell'applicazione nella ROM della piattaforma hardware del sistema incorporato per ottenere un reale "embedding".
La definizione di cui sopra è la definizione che ho usato per concentrarmi sulla comprensione nei sistemi embedded 6 o 7 anni fa. Ci sono molte definizioni nel libro, ma in questo campo, nessuno osa dire che la loro definizione è molto accurata. Sì, compresi quegli esperti e studiosi, dopotutto, il sistema embedded è un argomento completo nel campo del computer
2. Classificazione gerarchica e professionale dei sistemi embedded.
Il sistema incorporato è diviso in 4 livelli, livello hardware, livello driver, livello del sistema operativo e livello di applicazione.
1. Il livello hardware è la base dell'intero sistema embedded. Se hai familiarità con il microcontrollore e l'interfaccia e puoi essere programmato in linguaggio C e assembly, è relativamente facile camminare dal livello hardware del sistema embedded e il livello hardware è anche il driver. Sulla base dello strato, un eccellente ingegnere del driver deve essere in grado di comprendere il diagramma del circuito dell'hardware e completare il design logico del CPLD da solo. Allo stesso tempo, deve essere abbastanza familiare con il kernel del sistema operativo e la sua programmazione. Ma la piattaforma hardware è la base e il valore aggiunto dipende dal software.
Lo strato hardware è più adatto per le persone che si specializzano in elettronica, comunicazione, automazione, meccatronica e ingegneria dell'informazione. Le conoscenze professionali di base che devono essere padroneggiate includono il principio e l'interfaccia della tecnologia del microcomputer a chip singolo, il principio e la tecnologia dell'interfaccia del microcomputer e il linguaggio C.
2. Il livello del conducente. Questa parte è più difficile. Gli ingegneri dei driver devono non solo essere in grado di comprendere i diagrammi dei circuiti, ma anche essere molto competenti nel kernel del sistema operativo, in modo che il driver scritto da loro non monopolizzi la fetta di tempo del sistema operativo quando il sistema viene chiamato. Di conseguenza, non possono essere eseguite altre attività, non comprendono l'architettura del kernel del sistema operativo e la pianificazione in tempo reale e non hanno un buon stile di scrittura dei driver. Secondo il metodo di aggiunta dei driver menzionato nella maggior parte dei libri, molte persone possono farlo, ma possono anche farlo. Il livello dell'ingegnere junior driver non è al livello, quindi quando l'applicazione viene chiamata, il driver scritto è come quando apriamo un programma e lo eseguiamo sotto finestre. Quando apriamo un programma, interromperà il programma precedente o aspetterà. Ci vorrà un po' di tempo per eseguire il programma che è stato aperto in seguito. Se vuoi essere un buon pilota, non hai tre o quattro anni di conoscenza. Non è facile avere successo senza studiare il kernel del sistema operativo, ma lo stipendio è il più alto tra i quattro livelli di sistemi embedded.
Il livello di driver è più adatto per le persone che si specializzano in elettronica, comunicazioni, automazione, meccatronica e ingegneria dell'informazione, in particolare architettura orientata al computer. Oltre alle discipline di base del livello hardware, sono richiesti anche la struttura dei dati, gli algoritmi e le operazioni. I principi di sistema e i principi di compilazione devono essere molto competenti nella comprensione.
3. Il livello del sistema operativo. Per il livello del sistema operativo, può essere solo un semplice trapianto al momento, ma poche persone provengono dal sistema operativo che è stato scritto, o dal sistema operativo che manca di braccia e gambe. Questa parte del lavoro è principalmente fatta da ingegneri del conducente. Fatto. Il sistema operativo è responsabile del debug delle attività di sistema, della gestione del disco e dei file e la natura in tempo reale del sistema embedded è molto importante. Si dice che Microsoft abbia investito 300 persone nel sistema operativo XP in due anni. Le ore totali sono 600 anni-uomo. Si stima che il sistema operativo Nuwa Hopen del Chinese Academy of Sciences Software Institute impiegherà centinaia di anni-uomo per completare. Pertanto, questa parte del lavoro è relativamente priva di significato.
4. Lo strato di applicazione è relativamente facile. Se si sa come chiamare la funzione di interfaccia di programmazione sotto Windows, cambierà solo l'ambiente di compilazione e sviluppo sotto il sistema operativo. Questo vale anche se riguarda la programmazione Java. L'algoritmo coinvolto nel sistema embedded è gestito dalla persona dell'algoritmo professionale e non deve essere attribuito alla categoria del sistema embedded. Ma se riguarda il database embedded sotto il sistema embedded, la programmazione di rete basata sul sistema embedded e lo sviluppo di applicazioni di protocollo basato su un certo livello di applicazione (come SIP, H.323, Astrisk), è più complicato e difficile.
3. Obiettivi e posizionamento.
Prima prendi un obiettivo, poi individualo.
Imparare ARM, in termini di hardware, è imparare la progettazione di circuiti di interfaccia da un lato, e dall'altro è imparare l'assemblaggio e la programmazione a livello di scheda in linguaggio C. Dal punto di vista software, è necessario imparare il driver e il trapianto del livello di sistema operativo basato sul processore ARM. Questi devono essere chiari per i principianti, sia dall'hardware da imparare, o dalla familiarità del sistema operativo all'applicazione, ma non importa cosa si impara, a patto che non si tratti di puro livello di sistema operativo o di programmazione a livello di applicazione basato su API superiore, hardware È ancora necessario essere in grado di capire le cose di registro, e devi ancora essere in grado di comprendere l'assemblaggio a livello di scheda e la programmazione C. Pertanto, per il livello hardware e il driver del sistema embedded, la progettazione del circuito di interfaccia ARM, il linguaggio C di ARM e l'ambiente di sviluppo di programmazione e debug del linguaggio di assemblaggio e del linguaggio ARM devono ancora essere padroneggiati.
Pertanto, i principianti devono afferrare la direzione, qual è il loro obiettivo, e andare su quel livello. Quindi iniziare a imparare meglio, i due livelli più pratici del sistema embedded relativo ARM, il livello hardware e il livello driver, non importa quale livello viene imparato bene, sarà molto promettente.
Se si vuole andare dal livello di applicazione del sistema embedded, potrebbe essere lontano da ARM e altri sistemi. È necessario concentrarsi sull'applicazione ambientale del sistema operativo embedded e la corrispondente catena di strumenti di sviluppo, come lo sviluppo di applicazioni EVC sotto il sistema operativo WinCe (simile a VC sotto Windows), se si vuole fare una svolta, fare affidamento su alcuni protocolli audio e video, come lo sviluppo di layer applicativi basato sul protocollo SIP o H.323 nel campo VOIP, o basato sullo sviluppo di database di rete embedded e così via.
Per i principianti, dobbiamo fare il possibile. Non pensare che lo stipendio del guidatore sia alto e prendilo come direzione. Dobbiamo combinare le nostre caratteristiche. Per quanto riguarda i quattro livelli di sistemi embedded, ci sono esperti a tutti i livelli. Certo, ci sono degli esperti. In corrispondenza dell'alto stipendio, lavoro nel livello hardware. In passato, ho dovuto detrarre quasi 3.000 yuan in imposta sul reddito personale dal mio stipendio mensile. Naturalmente, ho giocato il ruolo di ingegnere da un lato e il ruolo di supervisore e di persona dall'altro. Faccio la posizione da solo, ma solo quelle ore lavorative. In termini di hardware, potrebbero esserci pochissime persone in competizione con me, il che mi permette di ottenere così tanto stipendio.
4. Selezione del sistema di sviluppo.
Molti principianti ARM sperano di avere un sistema che possano usare, ma avranno un equivoco che più alta è la versione del processore, più alte sono le prestazioni, meglio, proprio come molte persone pensano che ARM9 e ARM7 siano migliori, penso che per i principianti, dovrebbero essere ragionevoli a questo proposito. La scelta del sistema di sviluppo dipende dalla direzione del sistema embedded, se eseguire lo sviluppo del driver o l'applicazione, o eseguire la progettazione del livello hardware del sistema embedded e test a livello di scheda. Se si vuole andare dal livello del sistema operativo o del livello di applicazione, sia che si tratti di un driver o di un'applicazione, ovviamente, più alte sono le prestazioni del processore, meglio, ma l'auto-apprendimento di questa cosa è molto difficile, non pochi mesi o mezzo anno o un anno. Cose che si possono fare in due anni.
In un certo senso, la differenza tra ARM7 e 9 è che alcuni set di istruzioni funzionali sono arricchiti e la frequenza principale è aumentata, come 286 e 386. Per gli utenti, potrebbero non essere consapevoli di nulla, ma possono solo sentire che la velocità è un po 'più veloce.
ARM7 è più adatto a chi vuole passare dal livello hardware, perché i processori della serie ARM7 hanno pochissime MMU interne, e sono relativamente facili da controllare. Ad esempio, S3C44B0, la cache può essere facilmente disattivata, e i registri interni dell'interfaccia sono molto facili da vedere e capire che varie interfacce possono essere controllate dal controllo del programma hardware o dalle istruzioni a riga di comando AXD in un solo passo. Basato sull'idea di 51 microcomputer a chip singolo, è facile da capire e può essere considerato come un microcomputer a chip singolo a 32 bit, eliminando così molti 51 ingegneri. Vuole rivolgersi alla confusione degli ingegneri di sviluppo ARM hardware di sistema embedded, in modo che non vengano portati a livello di sistema operativo da alcune aziende del settore che non capiscono realmente embedded embedded, facendoli spaventare e rendendo l'industria ancora più la mancanza di talenti in questo settore.
Il sistema embedded presta grande attenzione all'interfaccia in termini di progettazione hardware e unità software. Quando si sceglie una piattaforma, è necessario esaminare anche le risorse esterne di un processore. Più contatti con le risorse esterne, più le conosci, allora saranno determinate le tue possibilità di lavoro di successo in futuro. Più alta è la maggiore, questa è la "competenza rilevante" cui si fa riferimento quando si recluta, perché è impossibile per una persona avere accesso a tutti i processori in pochi anni, e il processore utilizzato dall'unità di reclutamento può essere completamente sconosciuto a noi. In passato, anche processori ARM prodotti da decine di piccole aziende a Taiwan (valore di mercato di decine di milioni) sono molto utili, Ma queste cose sono troppo versatili, e le aziende che utilizzano questi processori possono solo reclutare. Persone con esperienza lavorativa rilevante, qual è l'esperienza lavorativa rilevante? In termini di hardware, si tratta di progettazione di interfacce periferiche, e in termini di software, è collegato al driver di interfaccia e all'esperienza di sviluppo di applicazioni nel sistema operativo. Sono stato nel settore per quasi dieci anni. ARM è apparso nel 2000. Ho iniziato a lavorare su ARM7 in un giorno, e poi sono andato direttamente su Xscale (questa scheda è tra ARM10-11). L'ho fatto per cinque anni e ho reclutato non meno di centinaia di persone per i colloqui. Questi aspetti sono ancora profondamente compresi.
Personalmente penso che Samsung S344b0 sia più adatto per i principianti. Perché lo dici? Poiché le risorse dell'interfaccia sono relativamente ricche, la tecnologia è matura e i materiali sono di più, dovrebbe essere molto adatto per i principianti. Se c'è un problema, può essere facile trovare qualcuno che lo aiuti e lo risolva, perché la maggior parte delle persone lo conosce, proprio come un microcontrollore di tipo 51, con più di N bit. Le cifre di livello esperto possono aiutarti e le domande correlate possono essere risposte rapidamente. Tuttavia, l'industria pensa che questo ARM sia cattivo per l'uso, ma per i principianti, è una buona cosa.
Pertanto, la scelta del sistema di sviluppo dipende dai propri obiettivi futuri, dalle risorse dell'interfaccia della scheda di sviluppo e dalla versatilità del settore.
5. Come trattare l'allenamento.
Fammi prima parlare di me stesso. Sono stato nel settore per quasi dieci anni e ho iniziato insieme con l'industria domestica dei sistemi embedded. Sono sempre stato all'avanguardia nel settore dei sistemi embedded. Ho progettato molti prodotti di piattaforma di sistema embedded di fascia alta e fornito soluzioni per molte aziende. Prima di lasciare il lavoro, ha progettato IP-PBX per una società finanziata dagli Stati Uniti impegnata nel VOIP. Ha servito come project manager, supervisore di progetto, direttore tecnico e responsabile del dipartimento. Ha accumulato molti contatti e accumulato molti anni di esperienza. Tenendo conto del disallineamento tra l'occupazione degli studenti e il reclutamento aziendale, l'azienda vuole reclutare persone, ma non è facile per gli studenti e gli ingegneri neo laureati trovare un lavoro, quindi cerco di creare Zhitianxing Technology Co., Ltd. per svolgere l'istruzione e la formazione di sistema embedded.
A causa della mancanza di contatto tra ricercatori di prima linea e insegnanti di prima linea, mancano talenti domestici incorporati. La tecnologia delle università straniere è davanti alle aziende del settore, mentre la situazione interna è che la tecnologia di sistema embedded delle aziende del settore è molto avanti rispetto alle università. Al fine di costruire un ponte tra l'industria e le università, portare competenze avanzate agli studenti universitari, creare una carta vincente per gli studenti nella competizione di lavoro e creare opportunità per gli ingegneri del settore per migliorare e realizzare rapidamente l'auto-creazione, così mi sono dimesso da una società straniera con uno stipendio annuale di oltre 200.000 Posizione, fare formazione in sistemi embedded.
Per la formazione, è spendere soldi per guadagnare tempo. Molti ingegneri amano imparare da soli e pensano che la formazione non ne valga la pena. Naturalmente, la formazione puramente per soldi non sarà troppo preziosa, ma possono aver perso un sacco di soldi. Non so se l'hanno calcolato. Se un allenamento di una settimana può portare loro conoscenze che possono essere padroneggiate solo dopo due anni di auto-studio, passeranno da tre a sei mesi a digerire il contenuto dell'allenamento dopo che l'allenamento è completato., In modo che risparmi almeno un anno e mezzo per imparare altre cose o lavorare ad un'altra altezza, allora otterrà lo stipendio corrispondente al suo livello due anni dopo al più tardi, che è lo stipendio Il rapporto con il livello è accorciato di un anno rispetto allo stesso lotto di persone. Il tasso mensile è di almeno 1.000, e il costo della formazione è di almeno 10.000 in più. Allo stesso tempo, consente anche di risparmiare un anno di tempo. Beh, insomma, sono corso davanti alla squadra.
Su un altro livello, la formazione per i nuovi arrivati equivale ad acquistare un'assicurazione di disoccupazione per se stessi in anticipo, e un maestro li condurrà nel Taoismo. Lo studente più giovane della mia classe quest'estate era al secondo anno, e quest'anno era solo al terzo anno., Ho appena imparato MCU questo semestre, ma ora il lavoro di programmazione in ARM è già molto impressionante. Sarà ancora disoccupato dopo la laurea tra più di un anno?
Inoltre, attraverso la formazione, puoi sapere un sacco di cose che l'industria non conosce dalla gente comune e allo stesso tempo trovare un master per te stesso. Ad esempio, due ingegneri utilizzano S3C2410 e PXA255 per realizzare dispositivi portatili, ed entrambi lavorano quattro. Nell'anno successivo, se vai a trovare un lavoro, la differenza di stipendio tra i due potrebbe essere al massimo raddoppiata. Perché? Questa è una regola sconosciuta alla gente comune del settore. Il 2410 è un prodotto civile. E' usato male dall'industria. Il costo di fare un prodotto è molto sensibile. Naturalmente, è anche sensibile al costo del talento. PXA255 è un prodotto Intel. Una CPU 255 può acquistare tre 2410., È sempre stato definito dall'industria come un prodotto nobile. Le aziende utilizzate sono grandi aziende o aziende che servono l'esercito. A loro non interessa il costo. Finché fai un buon lavoro, tutto è facile da dire, ma ci sono poche persone che lo fanno, perché il sistema di sviluppo è costoso.
Per quanto riguarda la ricerca di un buon maestro per se stesso, penso di sì, perché c'è un potenziale rapporto competitivo tra ingegneri dello stesso livello, e molte persone non sono disposte a insegnare agli altri ciò che sanno, il che significa che perderanno il lavoro., È il cosiddetto apprendista di chiesa, il maestro morto di fame, ma per quelli di noi, non esiste tale relazione. Ho raggiunto un certo programma nella progettazione della piattaforma di sistema embedded. Attualmente sono io stesso in questo settore della tecnologia in Cina. È difficile sfondare, quindi apro molte cose a tutti, come l'interfaccia di temporizzazione menzionata nel design dell'interfaccia qui sotto. Se non ne parlo, penso che sia quasi un ingegnere hardware senior. Solo il 10% delle persone puo' saperlo.
6. Abilità richieste per diventare un ingegnere hardware di sistema embedded senior.
In termini di hardware, ci sono diverse direzioni. Il segnale semplice è diviso in digitale e analogico. Analogico è più difficile da fare, richiede generalmente un lungo accumulo di esperienza. Se l'accuratezza della resistenza o della capacità non è sufficiente, la deviazione del segnale può essere grande. Pertanto, i giovani lavorano meno. Con lo sviluppo della tecnologia, è emersa la digitalizzazione dei circuiti analogici. Ad esempio, i moduli di radiofrequenza modem dei telefoni cellulari utilizzano tutti chip maturi. A quel tempo, solo due aziende al mondo avevano questa tecnologia e pensavano di avere funzioni analogiche. Le persone che non sono troppo forti non sono adatte a questo. Se si può davvero ottenere il modulo di radiofrequenza del telefono cellulare, finché raggiunge il livello generale, lo stipendio mensile può essere superiore a 15K.
L'altra è la parte digitale, che può essere divisa in microcontrollori 51/ARM, DSP e FPGA nella direzione generale. La maggior parte degli ingegneri FPGA nazionali sono impegnati nella verifica front-end dei nuclei IP nelle società di progettazione IC. Questa parte non e' coinvolta. A livello di porta, il futuro non è molto chiaro. Anche se sei un ingegnere di verifica front-end IC, dovrai lavorare per diversi anni per essere competente. L'interfaccia hardware DSP è relativamente completata. Se non si avvicina al driver o all'algoritmo, il futuro non sarà troppo grande. Il contenuto dei microcomputer single-chip ARM è di più. I prodotti nel settore occupano una grande quantità e la folla di applicazioni è ampia. Pertanto, lo spazio occupazionale è enorme. Il design hardware riflette maggiormente il livello e lo standard del design dell'interfaccia. Questa è la PK di vari ingegneri hardware senior. La base per giudicare il livello. La cosa più importante nella progettazione dell'interfaccia è guardare al tempo, non alla semplice connessione. Ad esempio, il processore PXA255 I2C richiede una velocità di 100Kbps. Se un dispositivo periferico I2C è collegato ad esso che non raggiunge i 100kbps, porterà inevitabilmente a un errore di progettazione. Ci sono molte situazioni del genere. Ad esempio, 51 microcomputer single-chip può essere collegato a LCD sul bus, ma perché questo LCD non può essere appeso sul bus ARM, e ci può essere un controller esterno Winband SD card sul bus ARM7, ma perché questo tipo di controller Questi sono tutti problemi se non è possibile accedere ai processori ARM9 o Xscale.
Pertanto, l'interfaccia non è una semplice connessione, dipende dalla tempistica e dai parametri. Un ingegnere hardware eccellente dovrebbe essere in grado di progettare un prodotto con costi e prestazioni migliori senza un piano di riferimento. Basandosi sul piano esistente, deve anche fare adeguate personalizzazioni di fattibilità, ma non è casuale, ho incontrato Quando un ingegnere cambiava il chip 5V a 1.8V DC nello schema, e lo sostituiva direttamente con un LDO, a volte bruciava alcune CPU. Qualche giorno fa, alcune persone volevano che aiutassi a ottimizzare il programma dei loro precedenti dispositivi GPS portatili basati sulla piattaforma PXA255. Ho chiesto della situazione. La mappa è memorizzata nella scheda SD, e lo SPI utilizzato tra la scheda SD e il controller MMC dell'interfaccia PXA255, quindi la velocità di lettura della mappa è molto lenta, questa situazione è un grave difetto nel design, piuttosto che un problema di programma, quindi ho fatto alcuni suggerimenti, lasciateli aggiornare e riprovare. Pertanto, se si vuole essere un ingegnere eccellente, è necessario avere una comprensione dell'integrità del sistema e una comprensione dei circuiti esistenti. In altre parole, quanto si può vedere e capire dopo un insieme di diagrammi di circuito. Se non capisci più dell'80%, significa che non sei un buon ingegnere è lontano da esso.
Il secondo è la capacità di debug del circuito e la capacità di revisione del disegno, ma l'abilità più basilare è il disegno PCB di progettazione schematica e progettazione logica. Questo si riferisce agli ingegneri di progettazione hardware. Gli ingegneri ECAD possono anche essere separati dagli ingegneri di progettazione hardware di cui sopra, che sono ingegneri professionisti che disegnano schede PCB e ingegneri di progettazione EMC per aiutare gli altri a risolvere i problemi EMC. L'ingegnere hardware è l'ingegnere di prova a livello di scheda, cioè l'ingegnere hardware con buone competenze linguistiche C, che può verificare la funzione hardware attraverso il programma di prova scritto da se stesso durante il debug della scheda circuito. Quindi consegnalo agli sviluppatori di driver in base al livello del sistema operativo.
In breve, il contenuto dell'hardware è molto complicato. Se ti alleni nell'hardware, diventerai un maestro. Spesso valuterò il piano per gli altri. Nego spesso la progettazione di molti ingegneri hardware senior. Questo tipo di situazione offenderà alcune persone, ma l'hardware ha un sacco di cose sconosciute che rendono molti ingegneri hardware senior confusi.
Quindi gli ingegneri hardware avanzati devono avere quelle competenze tecniche. In primo luogo, devono padroneggiare gli strumenti ausiliari di progettazione EDA, come protel Orcad Powper PCB Maplux2ISE, linguaggio VDHL. Devono essere in grado di utilizzare questi strumenti per disegnare il tavolo da disegno per la progettazione logica e quindi la revisione della progettazione dell'interfaccia. Capacità di grafico e capacità di debug. Se riesci ad arrivare alla progettazione globale del piano, diventerai fondamentalmente un ingegnere senior.
L'hardware dipende dall'esperienza e dall'accumulo. La spada è affilata in dieci anni e l'ago è affilato in cento anni.