歡迎來到 常識詞典網(wǎng) , 一個專業(yè)的常識知識學習網(wǎng)站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
嵌入式開發(fā)的門檻相對較高,對程序員的要求一般都是對底層感興趣,學習能力、動手能力要強,對問題能夠從全局和細節(jié)去把握,有很強的系統(tǒng)分析和設計能力。從工程師起步,一般有幾個發(fā)展方向,一個是成為技術方面的核心,領域內的專家;另一個是從項目中鍛煉起來,成為項目主管或是管理型人才;再有就是利用自己的技術及行業(yè)經(jīng)驗去創(chuàng)業(yè)。硬件和軟件的發(fā)展方向是不同的。說說軟件需要學習的知識。雖然說搞嵌入式軟件更多時候是在實際的工作中學習的,但一些重要的基礎知識不可或缺。1. 計算機組成/微機原理主要是為了了解-計算機的硬件工作原理,明白CPU、總線、I/O、存儲器等一些關鍵結構是怎么工作的,雖然是很枯燥的知識,但是對熟悉外圍設備硬件工作方式,及操作系統(tǒng),軟件架構的設計及優(yōu)化相當關鍵。2. 操作系統(tǒng)嵌入式產品應用比較廣泛的是Linux和WinCE。但操作系統(tǒng)的-設計原理都是殊途同歸。首先要去學習的是操作系統(tǒng)原理,去了解進程通信、內存管理、文件系統(tǒng)等幾個重要的部分,因為這些在軟件開發(fā)尤其是內核驅動開發(fā)時會用到。接下來可以去熟悉至少一種主流的操作系統(tǒng),Linux是一個很好的選擇,去了解它的內核架構,設備驅動架構,如何去編譯,裁剪,編寫應用程序,以及如何使用在具體的嵌入式產品上。3. 數(shù)字電路學習這方面的知識主要是了解一些基本的電路知識,如門電路、邏輯電路、存儲器、寄存器,為了更好的理解嵌入式芯片,存儲器,外圍設備等硬件的設計,但往往在軟件開發(fā)中未必能用的到。因為大部分硬件都提供了很完整的軟件接口。4. 編程語言:C語言和匯編對于C語言本身的基礎來說,無非是把結構化,函數(shù),數(shù)組,指針弄熟,但是嵌入式開發(fā)對C語言應用的要求會更高。要對內存分配,文件訪問,寄存器訪問,預處理指令,中斷處理程序等等相當熟悉,這些都是在使用中要注意的細節(jié)問題。C語言對程序的優(yōu)化也很重要,而這些往往是需要從全局去考慮。匯編一般是和處理器的指令集相關的,可以更好的去理解處理器的工作原理,往往是用在一些需要效率的地方,如系統(tǒng)的初始化。5. 數(shù)據(jù)結構和算法數(shù)據(jù)結構在嵌入式開發(fā)中也很重要,比如說操作系統(tǒng)里的很多實現(xiàn)都用到了具體的算法。基本的數(shù)據(jù)結構需要掌握,如各種鏈表,樹,圖等等;而算法的學習需要數(shù)學知識作為鋪墊,用計算機語言去實現(xiàn)。對于軟件從業(yè)人員來說,算法終究是一個工具,在實際應用時再深入挖掘也可。6. 軟件工程/軟件測試/項目管理基礎這些是軟件開發(fā)人員的必備知識。7. 開發(fā)平臺嵌入式的開發(fā)平臺不局限于一種操作系統(tǒng),因此要熟悉各種操作系統(tǒng)下的命令、編輯器及開發(fā)工具,這一點往往被很多人忽視。舉個例子,Linux下的程序員開發(fā)環(huán)境往往是按自己的習慣搭建,熟練掌握一種編輯器如Vim/E-cs可以大幅度提高工作效率。磨刀不誤砍柴工。嵌入式領域的方向是很多的,它所應用到的行業(yè)范圍也很廣。因此除了這些基礎的知識以外,在具體的應用中可能還需要一些其它的知識,這些知識的每一種都可以研究的很深,舉幾個例子。1. 內核,驅動及中間件內核開發(fā)和驅動本身就是一個方向,驅動和硬件接口相關,而內核的修改和移植更是需要對OS有很深的理解。至于中間件,一般是基于OS或存在于OS和應用程序之間的庫,最典型的就是基于Linux的Android。2. 通信協(xié)議通信協(xié)議有很多種,經(jīng)常用到的有網(wǎng)絡通信協(xié)議,無線通信協(xié)議,串口/USB通信協(xié)議等等。3. 音-技術牽涉到音頻-處理,壓縮,編-等等。4. 信息安全如加密技術,身份認證,數(shù)字證書等等。5. 行業(yè)知識和具體行業(yè)或領域相關的知識,如通訊、工控、電子等等。這里有一個我認為不錯的學習步驟:1. 基礎知識中,計算機組成、操作系統(tǒng)、編程語言和數(shù)據(jù)結構是必需的。2. 找一種CPU體系,了解其核心架構,學習指令集,比如說ARM。3. 找一種OS,如Linux,或是傳統(tǒng)RTOS,如Nucleus、eCos,讀源碼和文檔,理解OS-實現(xiàn),包括進程,任務,消息機制,內存管理,設備驅動,中斷等核心內容。4. 找一塊成熟的開發(fā)板,板級資料要齊全,熟悉嵌入式軟件開發(fā)流程。5. 在項目過程中深入學習其它的技術??傊@些知識的學習不是一蹴而就的,過程會很漫長,也沒有什么特別的技巧。需要去看大量的技術文檔和源碼,而這些文檔大部分又都是英文的。在工作和做具體項目的過程中會學習的比較快,理論結合實踐才是王道。答案 2:
我覺得到招聘網(wǎng)站上搜索一下招聘要求,或許就了解的差不多了。答案 3:
推薦一篇文章《淺析如何學習基于ARM平臺的嵌入式系統(tǒng)》(在網(wǎng)上搜一下),這篇文章對你的問題和困惑應該會有幫助。答案 4:
樓主先別想那么多,首先適當?shù)牧私庀滦袠I(yè),包括FPGA ARM DSP啊一些時下流行的東西。若你正在上學那么關于這些東西的課程也是有的,可以通過這種手段了解的比較多一些,如若不然,那么就多在網(wǎng)上跑跑了。然后選擇一個方向不斷深入。諸如學習之中你遇到的要學的東西,可以循序漸進。答案 5:
前面幾位講的都很有參考價值,我再補充一下:1.認清嵌入式設備的本質嵌入式設備的本質就是一臺專用的、-計算機,所以就像計算機一樣由三個層次的東西組成:1)硬件,包括cpu(如Arm)、存儲(如flas-)、I/O(顯示模塊、通訊模塊、視音頻模塊、I/O控制電路等)。2)系統(tǒng)級軟件,主要是OS和I/O軟件如LCD、藍牙、wifi、-、聲音等子系統(tǒng)。3)應用軟件,如基于ios的應用開發(fā),基于android的應用開發(fā),基于linux的應用開發(fā)。2.選定學習方向對于學習嵌入式來說,以上三個層次技術都了解一下是有好處的,但每層次都同時深入學習既增加學習難度也無必要,因為一個嵌入式設備肯定是由不同的人分工協(xié)作完成的,每個人精通某一層次上的技術就行了。3.創(chuàng)建學習環(huán)境如果能加入到老師的項目里,那是比較理想的。還有就是組隊參加各種比賽。如果自學,我的體會是:1)對于想學硬件的,從學8位單片機入手,然后再學ARM、DSP、FPGA等比較容易。2)對于想做系統(tǒng)級軟件,從研究linux內核開始,可以買塊ARM開發(fā)板來輔助學習。3)學應用軟件開發(fā)相對容易一些,網(wǎng)上資料也更豐富,有一個手機或開發(fā)板就可學習了。下一篇:8051單片機ram的通用寄存器(00H-1FH)能做位尋址么? 下一篇 【方向鍵 ( → )下一篇】
上一篇:燒機油的車型有哪幾款? 上一篇 【方向鍵 ( ← )上一篇】
快搜