嵌入式開發的必備知識點

嵌入式操做系統簡介
嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,一般這些設備的硬件資源(如處理器、存儲器等)很是有限,而且對成本很敏感,有時對實時響應要求很高等。特別是隨着消費家電的智能化,嵌入式更顯重要。
爲何要學嵌入式軟件開發?好處是什麼?
(1)目前國內外這方面的人都很稀缺。嵌入式人才稀缺,身價天然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本緣由多是大多數人無條件接觸,這須要相應的嵌入式開發板和軟件,另外須要有經驗的人進行指導開發流程。
(2)與企業計算等應用軟件不一樣,嵌入式領域人才的工做強度一般低一些(但收入不低)。搞企業應用軟件的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,並且每一個用戶的需求和完成時間都得按客戶要求改變,每每疲於奔命,重複勞動。相比而言,搞嵌入式系統的公司,都有本身的產品計劃,按本身的節奏行事。
(3)哪天若想創業,搞自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟件那樣容易被盜版。
嵌入式八大入門的知識點
一、C語言
嵌入式Linux工程師的學習須要具有必定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,經過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操做、隊列、棧等。
二、Linux基礎
Linux操做系統的概念、安裝方法,詳細瞭解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
三、Linux系統編程
重點學習標準I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通訊(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提高對Linux應用開發的理解和代碼調試的能力。
四、Linux網絡編程
計算機網絡在嵌入式Linux系統應用開發過程當中使用很是普遍,經過Linux網絡發展、TCP/IP協議、socket編程、TCP網絡編程、UDP網絡編程、Web編程開發等方面入手,全面瞭解Linux網絡應用程序開發。重點學習網絡編程相關API,熟練掌握TCP協議服務器的編程方法和併發服務器的實現,瞭解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網絡通訊系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
五、數據結構與算法
數據結構及算法在嵌入式底層驅動、通訊協議、及各類引擎開發中會獲得大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各類查找排序算法等應用及其C語言實現過程。
六、C++ 、QT
C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中很是重要的一個環節。因爲QT具備跨平臺、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中獲得了廣範的應用,在本階段經過基於QT圖形庫的學習使學員能夠熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平臺。包括IDE使用、QT部件及佈局管理器、信息與槽機制的應用、鼠標、鍵盤及繪圖事件處理及文件處理的應用。
七、Cortex A8 、Linux 平臺開發
經過基於ARM Cortex-A8處理s5pv210瞭解芯片手冊的基本閱讀技巧,掌握s5pv210系統資源、時鐘控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,爲底層平臺搭建作好準備。Linux平臺包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製做與原理分析、根文件系統製做以及向內核中添加本身的模塊,並在s5pv210實驗平臺上運行本身製做的Linux系統,集成部署Linux系統整個流程。同時瞭解Android操做系統開發流程。
八、驅動開發
驅動程序設計是嵌入式Linux開發工做中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的接口,掌握系統對設備的併發操做。熟悉所開發硬件的工做原理,具有ARM硬件接口的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字符設備、塊設備、網絡設備、USB設備等驅動開發,在工做中能獨立勝任底層驅動開發。 
十大課本上學不到的嵌入式學習妙招
一、離開溫馨圈
走出溫馨圈,挑戰自我、去學習本來不熟悉的東西,包括工程之外的知識,例如與客戶、同事之間的互動,將會收穫良多。
二、學習利用搜索引擎
信盈達工程師認爲不要閉門造車,要善用開放源碼世界的信息,不少常見的設計問題其實透過因特網就能找到同領域菁英貢獻的程序代碼;嵌入式工程師們要走出本身的小世界擁抱社羣,與同領域的其餘工程師們相互交流、互相幫助,而這也是開放源碼世界的精神。
三、學習那些讓因特網實現的技術
多數嵌入式領域工程師都知道如何撰寫C或C++語言程序,但有時候這樣的技能是不夠的;他建議嵌入式工程師學習因特網有關的技術,對職業生涯發展會有加分效果,例如他目前負責的幾個開發案,都是在嵌入式系統中嵌入虛擬(virtual)的XML,好讓一些小型連網設備能具有「即插即用」的運做模式。
四、熟悉實時操做系統(RTOS)
目前產業界對於熟悉RTOS的工程師需求很高,也願意提供更高的薪資水平;所以他鼓勵沒有接觸過RTOS的嵌入式工程師從一些較小型的系統着手,累積相關技術經驗。此外他也發現產業界對嵌入式Linux人才有很多需求,主要是由於這種操做系統具有較大的設計彈性。
五、瞭解最新的處理器
除了要深刻了解C或C++等基本程序語言,有時也要認識一些熱門的新程序語言以因應特殊設計需求,但更重要的是瞭解最新的處理器技術;處理器纔是嵌入式系統的本質。由於咱們的系統資源有限,咱們須要瞭解可用的資源有哪些。  
六、培養多元化技能與系統觀
本來從事較小型系統架構(例如MCU)開發的工程師,能夠開始去熟悉更大的系統(例如Linux驅動程序),反之亦然。嘗試着去開發手機應用程序、或者是學習後端服務器的相關技術,能讓你開啓徹底不一樣的觀點;他並建議工程師去熟悉開放性硬件,如今市面上有很多現成的開發板,能讓工程師專一於學習獨特算法的開發。
七、要能熟悉開放源碼軟件
客戶每每會要求在系統中整合一大堆軟件,所以全部的嵌入式工程師須要熟悉各類軟件;他建議工程師避免只專長單一領域,由於那可能會阻礙你的成長。對嵌入式工程師來講,確保本身對軟硬件技術都很瞭解,是很是寶貴的價值。
八、創建系統級的工程思惟
嵌入式工程師擁有系統導向的思惟是很重要的,有很多開發案遇到問題,就是由於沒有在開發初期充分考慮基準、驗證策略以及兼容性驗證計劃等項目;此外每一個嵌入式工程師都應該具有優良的項目管理技巧,力求準時完成負責的項目。具有能明智因應技術與項目風險的能力,對職業生涯發展會頗有幫助。
九、學習無線連結技術
嵌入式工程師須要在接下來1~3年學習無線連結技術,特別是Wi-Fi與藍牙低功耗(BLE);由於如今的嵌入式設備(至少各類消費性電子都是)與使用者智能手機連結的主要(或惟一)方式,就是透過這些無線技術,雖然Wi-Fi與BLE不必定會是嵌入式系統的標準配備,但熟悉這些技術對嵌入式工程師來講會很實用。
十、要能明確表達本身的想法與意見透過文字或繪圖算法

相關文章
相關標籤/搜索