1. ARM + Linux/Android開發據統計,全世界99%的智能手機和平板電腦都采用ARM架構。所有的iPhone和iPad都使用ARM的芯片,多數Kindle電子閱讀器和Android設備也都采用這一架構。大部分的網絡/電信制造商正積極地將其下一代平臺遷移到ARM平臺上來,有理由相信在今后的幾年中,ARM在行業中將扮演一個極為重要的角色。嵌入式系統是軟硬結合的東西,搞ARM開發的人主要分為兩大類:
【嵌入式軟件開發工程師】
1. 應用程序開發,包括Android應用開發或者Linux上應用開發(QT等),目前做的人很多,就業容易待遇也不錯,需要掌握C語言、C++、java等開發語言。
2. 操作系統移植,比較復雜,Linux,Android等,現在很多手機廠商(如小米,魅族,樂視等)推出的操作系統也就是修改內核,換皮膚,就業還是很容易的;
3. 底層驅動開發,這個入門、深入都不容易,需要對硬件及OS有較深的了解,發展前景很不錯;
【嵌入式硬件開發工程師】
1. 就像手機一樣在處理器上做整體的電路,比單片機入門難的多,做成技術大牛了不缺錢。
2. SOC,架構開發。稱為系統級芯片,也有稱片上系統,意指它是一個產品,是一個有專用目標的集成電路,其中包含完整系統并有嵌入軟件的全部內容。
同時它又是一種技術,用以實現從確定系統功能開始,到軟/硬件劃分,并完成設計的整個過程。
2.FPGA開發FPGA(現場可編程邏輯器件)產品的應用領域非常廣泛,包括通信、消費電子、汽車電子、工業控制、測試測量等。而應用的變化也使FPGA產品近幾年的演進趨勢越來越明顯:
一方面,FPGA供應商致力于采用當前的工藝來提升產品的性能,降低產品的成本;另一方面,越來越多的通用IP(知識產權)或客戶定制IP被引入FPGA中,以滿足客戶產品快速上市的要求。FPGA的開發相對于傳統PC、單片機的開發有很大不同。FPGA以并行運算為主,以硬件描述語言來實現;相比于PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區別,也造成了FPGA開發入門較難。
學習FPGA常見的四大誤區:
1、不熟悉FPGA的內部結構,不了解可編程邏輯器件的基本原理。
2、錯誤理解HDL語言,怎么看都看不出硬件結構。
3、FPGA本身不算什么,一切皆在FPGA之外。
4、數字邏輯知識是根本。
3.DSP開發DSP(Digital Signal Processing,數字信號處理),是一門涉及許多學科而又廣泛應用于許多領域的新興學科。全球DSP市場的前景非常廣闊,DSP產業將成為21 世紀發展潛力的朝陽產業。
近年來,隨著DSP芯片產品價格的不斷下滑,使DSP能夠從以往的軍用領域迅速拓展到民用領域,例如應用于計算機、網絡、移動電話、調制解調器和磁盤驅動器以及眾多的消費電子產品。DSP學習涉及內容多,因此有的放矢,學以致用很重要。
有幾個重要的部分是一定要學好的:硬件的制作及學習;類/微驅動模型;c/匯編程序的開發;CSL/BSL的使用和理解;RF5算法構架;圖像領域的知識等。
4.IC設計上班的公交IC卡,ATM取錢的銀行卡,樓宇的門卡等都是應用IC設計的產品,在現代世界不可或缺。IC設計(Integrated Circuit Design),或稱為集成電路設計,是電子工程學和計算機工程學的一個學科,其主要內容是運用專業的邏輯和電路設計技術設計集成電路。
中國自2009年以來,透過強大的市場購買力與自有品牌的茁壯,中國IC設計業產值在全球市場的占有率逐步攀升。中國IC設計業者的訂單需求在未來三年內有機會成為全球成長性的地區,為了搭上此波浪潮,2015~2017年將會是全球晶圓代工廠商爭相布局卡位的重要時刻。
如何學習IC設計?
需要具有一定的模擬電路基礎,有數模混合電路設計經驗;良好的電子電路分析能力;具有SOC的設計和驗證的經驗;精通Verilog,Tcl,C,Perl等設計語言。嵌入式系統設計是電子產品設計的重要組成部分,目前國內外大部分科技公司都建立了自己的嵌入式開發團隊。
團隊所需的人員職位構成包括:系統設計工程師 、硬件工程師、底層驅動工程師、Linux系統工程師、應用設計工程師等。需要具備的知識
1、C語言
嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域重要也是主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
2、Linux基礎 Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
3、Linux系統編程
重點學習標準I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
4、Linux網絡編程
計算機網絡在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網絡發展、TCP/IP協議、socket編程、TCP網絡編程、UDP網絡編程、Web編程開發等方面入手,全面了解Linux網絡應用程序開發。重點學習網絡編程相關API,熟練掌握TCP協議服務器的編程方法和并發服務器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網絡通信系統的設計,熟悉HTML,Java、script等Web編程技術及實現方法。
5、數據結構與算法 數據結構及算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序算法等應用及其C語言實現過程。
6、C++ 、QT C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由于QT具有跨平臺、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基于QT圖形庫的學習使學員可以熟練編寫GUI程序,并移植QT應用程序到Cortex-A8平臺。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、鼠標、鍵盤及繪圖事件處理及文件處理的應用。
7、驅動開發
驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的接口,掌握系統對設備的并發操作。熟悉所開發硬件的工作原理,具備ARM硬件接口的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux字符設備、塊設備、網絡設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。嵌入式開發作為未來職業發展的方向,不論從薪資待遇還是發展前景來看,都非常不錯。
從工程師起步,一般有幾個發展方向,一個是成為技術方面的核心,領域內的專家;另一個是從項目中鍛煉起來,成為項目主管或是管理型人才;再有就是利用自己的技術及行業經驗去創業。總之,在物聯網大的環境下,嵌入式開發將會成為有發展前景的職業發展方向之一。