所以嵌入式的開發(fā)大致需要這么從下到上4類工程師:嵌入式硬件開發(fā)、嵌入式驅(qū)動開發(fā)、嵌入式系統(tǒng)開發(fā)、嵌入式軟件開發(fā)。 他們應(yīng)該會哪些技能呢? 1, 嵌入式硬件開發(fā):這是硬件工程師來做,一般出身為自動化,電子,通信等專業(yè),他們要求熟悉電路等知識,非常熟悉各種常用元器件,掌握模擬電路和數(shù)字電路設(shè)計的開發(fā)能力,熟悉硬件開發(fā)模式和設(shè)計模式,熟悉各種芯片及外圍設(shè)備,熟悉8位16位32位處理器嵌入式硬件平臺開發(fā)。有的要求有FPGA的開發(fā)經(jīng)驗,精通常用的硬件設(shè)計工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般要有4~8層高速PCB設(shè)計經(jīng)驗。由于本人不是做硬件的,對這一塊的不熟悉,所以不敢妄言。 2, 嵌入式驅(qū)動開發(fā):這個可以硬件工程師來做,也可以軟件工程師來做,主要還是取決于設(shè)備。目前驅(qū)動開發(fā),除非是簡單的設(shè)備驅(qū)動,實際上很多時候都是移植,所以更多的是需要掌握目標(biāo)平臺的硬件和系統(tǒng)特性。所以至少得掌握一些操作系統(tǒng)、系統(tǒng)結(jié)構(gòu)、計算機組成原理、數(shù)據(jù)結(jié)構(gòu)相關(guān)知識。熟悉嵌入式ARM/MIPS/PowerPC架構(gòu)。具有單片機、某種或多種32位嵌入式處理器的移植開發(fā)能力,熟悉bootloader過程,具有扎實的硬件知識,理解硬件原理圖,能獨立完成相關(guān)硬件驅(qū)動調(diào)試,能夠根據(jù)芯片手冊編寫軟件驅(qū)動程序。如果涉及到網(wǎng)絡(luò)設(shè)備,或許還要掌握很多高層的網(wǎng)絡(luò)協(xié)議的原理。個人感覺這一塊雖然大部分不是很難,但卻是極為重要的。當(dāng)然如果要在這一層次提供對上層的多線程支持,某些驅(qū)動也是很難寫的。 3, 嵌入式系統(tǒng)開發(fā):這個沒聽說硬件工程師來做的。做這塊,熟悉操作系統(tǒng)的原理是必不可少的,比如內(nèi)存管理,比如線程調(diào)度,比如文件系統(tǒng)等等;還要精通處理器體系結(jié)構(gòu)、指令集、尋址方式、調(diào)試、匯編和混合編程等方面的內(nèi)容;熟悉操作系統(tǒng)啟動流程。對于linux,要熟悉Linux配置文件的修改,掌握內(nèi)核裁減、內(nèi)核移植、交叉編譯、內(nèi)核調(diào)試、啟動程序Bootloader編寫、根文件系統(tǒng)制作和集成部署Linux系統(tǒng)等整個流程。這一塊要是真寫起來,困難程度那是相當(dāng)恐怖的,好在大多都是移植,很少聽說有公司要去開發(fā)個操作系統(tǒng)的,沒Google的實力啊。 4, 嵌入式軟件開發(fā):這個嘛,沒有操作系統(tǒng)的話,程序一般不會特別復(fù)雜,如果有操作系統(tǒng)的支持,又和一般的軟件開發(fā)很接近,所以盡可以看作是搞桌面開發(fā)。這個要求就是熟悉系統(tǒng)的API,精通C語言的高級編程知識,包括函數(shù)與程序結(jié)構(gòu)、指針、數(shù)組、常用算法、庫函數(shù)的使用等知識、數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)內(nèi)容;掌握面向?qū)ο缶幊痰幕舅枷?,以及C++語言的基礎(chǔ)內(nèi)容;精通嵌入式Linux下的程序設(shè)計,精通嵌入式Linux開發(fā)環(huán)境,包括系統(tǒng)編程、文件I/O、多進程和多線程、網(wǎng)絡(luò)編程、GUI圖形界面編程、數(shù)據(jù)庫;熟悉常用的圖形庫的編程,如QT、GTK、miniGUI、fltk、nano-x等,掌握各種應(yīng)用層的網(wǎng)絡(luò)協(xié)議使用,以及各種音視頻技術(shù)等。 另外還有些以上四類都用得著的技能: 1, 基礎(chǔ)技能:搞嵌入式開發(fā),還有一些必不可少的基礎(chǔ)技能。
2, 特殊技能:對于嵌入式開發(fā)的某些部分必不可少,但對于有些(比如應(yīng)用開發(fā))可能沒有多大用處。
3, 擴展的能力,這些可能是要用到的。
有時和同事討論起現(xiàn)在的行業(yè)需求,說到各個公司總是招不到人,程序員又總說找不到工作,自己就有很多感想,是公司要求高,還是程序員要求高?有時候看到一些招聘的職位要求,總是打擊到自己的信心,一條一條數(shù)下來,好像自己能做到的還真沒多少,只好讓自己再努力些再努力些;當(dāng)然有時也會覺得某些招聘不靠譜,看那一條條的要求,個人感覺要是全做到,普通人怎么也得努力個十年八年的,這樣的大牛們,估計看不上給出的那薪資吧。 對于程序員來講,做技術(shù)真的是很累很難的一件事情。網(wǎng)上搜一下,遍地的抱怨貼,情感貼,都充分反映了這個職業(yè)對身體和情感的考驗。如果你不畏艱難,想把技術(shù)做下去,那么努力吧,也許某天你會隨便拿起一份招聘啟事,鄙視一眼:“靠!就這點要求,老子去都掉價!”,那么你就是真正的大牛了! |
|