你眼中的嵌入式是什么樣?
關(guān)注、星標(biāo)公眾號,直達精彩內(nèi)容
編排 | strongerHuang
微信公眾號 | 嵌入式專欄
很多初學(xué)小白對嵌入式的理解都比較模糊,甚至有錯誤的理解,今天就給大家分享一下嵌入式到底是什么。
這是硬件工程師來做,一般出身為自動化,電子,通信等專業(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ā)
另外還有些以上四類都用得著的技能。
(1)基礎(chǔ)技能:搞嵌入式開發(fā),還有一些必不可少的基礎(chǔ)技能
開發(fā)平臺的熟悉。目前的嵌入式開發(fā)大多數(shù)是在linux或者類linux下的環(huán)境下進行的,那么linux的使用應(yīng)該熟悉吧,shell腳本得會寫吧,配置文件得會改吧,GCC GDB得會用吧,Make工具得會吧?
比如項目管理工具的使用,都什么年代了,不會用CVS,也不會用SVN?請問,你還活在軟件時代的原始社會么?
數(shù)據(jù)結(jié)構(gòu)和算法。搞軟件開發(fā),不懂?dāng)?shù)據(jù)結(jié)構(gòu),不會算法優(yōu)化,不會衡量復(fù)雜度,太不靠譜了吧?當(dāng)然,這個不是要求啥算法都會,啥數(shù)據(jù)結(jié)構(gòu)都記得住,最起碼得知道有那么種東西,有什么作用,這樣用到的時候好歹也能查啊。
編程語言。關(guān)于JAVA,我知道現(xiàn)在JAVA的異軍突起,很是震動了編程語言界,但是在嵌入式開發(fā)下,不會C或者C++語言,實在說不過去。當(dāng)然現(xiàn)在很多手機應(yīng)用完全用java寫的,如果你只想搞嵌入式的上層軟件開發(fā)又不想深入下去,只用JAVA也未嘗不可。關(guān)于匯編,嗯,這個可能挺難,畢竟跟具體的硬件架構(gòu)(主要是CPU)有關(guān),但是真的很有意思,而且在某些時候,它是不可替代的。
(2)特殊技能:對于嵌入式開發(fā)的某些部分必不可少,但對于有些(比如應(yīng)用開發(fā))可能沒有多大用處
數(shù)字電路。這個主要是了解一些基本的電路知識,如門電路、邏輯電路、存儲器、寄存器,為了更好的理解嵌入式芯片、存儲器、外圍設(shè)備等硬件的設(shè)計,但往往在軟件開發(fā)中未必能用的到。因為大部分硬件都提供了很完整的軟件接口。
操作系統(tǒng)。這個說的是平臺上選用的操作系統(tǒng)。嵌入式產(chǎn)品操作系統(tǒng)實在是太多了。但操作系統(tǒng)的內(nèi)部設(shè)計原理都是殊途同歸。首先要去學(xué)習(xí)的是操作系統(tǒng)原理,去了解進程通信、內(nèi)存管理、文件系統(tǒng)等幾個重要的部分,因為這些在軟件開發(fā)尤其是內(nèi)核驅(qū)動開發(fā)時會用到。接下來可以去熟悉至少一種主流的操作系統(tǒng),Linux是一個很好的選擇,去了解它的內(nèi)核架構(gòu),設(shè)備驅(qū)動架構(gòu),如何去編譯、裁剪、編寫應(yīng)用程序,以及如何使用在具體的嵌入式產(chǎn)品上。
計算機的組成/微機原理。主要是為了了解微型計算機的硬件工作原理,明白CPU、總線、I/O、存儲器等一些關(guān)鍵結(jié)構(gòu)是怎么工作的,雖然是很枯燥的知識,但是對熟悉外圍設(shè)備硬件工作方式,及操作系統(tǒng),軟件架構(gòu)的設(shè)計及優(yōu)化相當(dāng)關(guān)鍵。
(3)擴展的能力:這些可能是要用到的
通信協(xié)議。對于非應(yīng)用層的通信協(xié)議,我實在不知道是不是該把它放入操作系統(tǒng)的范疇,因為很多操作系統(tǒng)是沒有網(wǎng)絡(luò)部分的,但是在很多方面它又是由操作系統(tǒng)提供。當(dāng)然這些下層通信協(xié)議,貌似不太用關(guān)心,因為太多的開源協(xié)議棧了。應(yīng)用層的網(wǎng)絡(luò)協(xié)議可能就要關(guān)心了,比如http,ftp,rtsp,rtmp,mms等等。
音視頻處理。比如文件封裝、音視頻的編解碼、各種音視頻的標(biāo)準(zhǔn),還有流媒體什么的。Ffmpeg是一個很好的東西,建議學(xué)習(xí)一下。
信息安全。恩,這一塊貌似現(xiàn)在越來越受到重視了。
數(shù)據(jù)庫。唉,嵌入式設(shè)備能力越來越強啊!再搞搞,我看也不用交叉編譯了。
有時和同事討論起現(xiàn)在的行業(yè)需求,說到各個公司總是招不到人,程序員又總說找不到工作,自己就有很多感想,是公司要求高,還是程序員要求高?有時候看到一些招聘的職位要求,總是打擊到自己的信心,一條一條數(shù)下來,好像自己能做到的還真沒多少,只好讓自己再努力些再努力些。當(dāng)然有時也會覺得某些招聘不靠譜,看那一條條的要求,個人感覺要是全做到,普通人怎么也得努力個十年八年的,這樣的大牛們,估計看不上給出的那薪資吧。
對于程序員來講,做技術(shù)真的是很累很難的一件事情。網(wǎng)上搜一下,遍地的抱怨貼、情感貼,都充分反映了這個職業(yè)對身體和情感的考驗。如果你不畏艱難,想把技術(shù)做下去,那么努力吧,也許某天你會隨便拿起一份招聘啟事,鄙視一眼:“靠!就這點要求,老子去都掉價!”,那么你就是真正的大牛了!
同一時期進來工作,為什么他們現(xiàn)在的能力和狀態(tài)會產(chǎn)生如此大的差異呢?
通過的相處和分析,我發(fā)現(xiàn)凡是進步快的同志有如下特點:
勤奮,為了解決一個技術(shù)問題經(jīng)常會主動留下來加班。
鉆研,為了解決一個技術(shù)問題會主動學(xué)習(xí)各方面的資料,勤做實驗,用事實去驗證;。
和領(lǐng)導(dǎo)和同事及時主動溝通,集思廣益,爭取各方面的資源,充分利用已有的經(jīng)驗,避免走彎路,加快研發(fā)進程。
有強烈的事業(yè)心和犧牲精神,不達目標(biāo)絕不停息。
反之,那些成長慢或者還沒有融入研發(fā)工作的同志則具有以下特點:
工作沒有目標(biāo),精力分散,很多的時間花在網(wǎng)絡(luò)上,偷偷的看視頻。
工作推卸責(zé)任,把工作沒有進展的原因推卸到工作難度太大,或者資源不夠,而自己卻又不主動的去爭取資源。
沒有長期為研發(fā)乃至個人的職業(yè)生涯有充分的打算,或者說來研發(fā)的目標(biāo)比較低下只是為了混口飯吃;人無遠(yuǎn)慮,必有近憂,沒有遠(yuǎn)大的理想,外界任何一個小的干擾都會讓你三心二意,因而知識的學(xué)習(xí)沒有系統(tǒng)性。
和同事和領(lǐng)導(dǎo)的溝通不主動,甚至避讓,怕領(lǐng)導(dǎo)檢查工作。
更關(guān)注生活而不是工作。
比較在意自己的付出。
兩種一對照,問題顯而易見:研發(fā)工作是一項很具挑戰(zhàn)性的工作,需要付出艱辛的勞動,需要有扎實的理論基礎(chǔ)和動手能力;在開發(fā)任務(wù)面前頭腦清醒,思維敏捷,頭緒清晰,有條不紊;遇到困難不會退,遇到挫折不氣餒;需要有團隊精神,需要有化解矛盾和困難的勇氣,智慧和決心,要有相當(dāng)強的心理素質(zhì);因此人員的素質(zhì)和心理狀態(tài)是決定性的。上進的同志,稍微帶一帶,成長速度很快;不主動的同志,工作起來舉步維艱,帶起來很吃勁,心情也受影響。
為了提高研發(fā)效率,我們開發(fā)了管理軟件,制定了各種規(guī)章制度。但是,軟件和制度只能治標(biāo),不能治本,問題的根還是出在人上。
應(yīng)該講,目前研發(fā)部門的軟硬件條件和和技術(shù)水平,可以讓一批想在電子技術(shù)嵌入式領(lǐng)域有所作為的年輕人干出驕人成果的。但是現(xiàn)實情況我們也不能過于樂觀,研發(fā)部門還是存在一些問題的,尤其是人員素質(zhì)問題。為此我們在參加研發(fā)管理培訓(xùn)的時候也咨詢過專業(yè)人士,他說了一句話:小草永遠(yuǎn)也長不成蒼天大樹。
所以請各位想想,你現(xiàn)在是小樹苗呢,還是草種子?是樹是草取決于你是否有強烈的向上成長的愿望,取決于你是否有千方百計吸取土壤養(yǎng)料的勤奮,取決于你對的人生價值的判別,認(rèn)為現(xiàn)有的土壤值得你扎扎實實定下根來,做一棵這片土壤上的大樹。想成為大樹的,我們一定創(chuàng)造條件讓他(她)成長為大樹;如果注定是草種子,我們也無能為力,只有優(yōu)勝劣汰。
1.笨鳥先飛早入林,對事物的認(rèn)知是和事物對大腦的刺激頻率和時間成正比的,一個事情經(jīng)常去做,時候經(jīng)常去琢磨,就能悟出其中的道理,對事物認(rèn)識深度是通過在實踐中不斷發(fā)現(xiàn)錯誤,不斷修正才達到的。如果人不勤奮,把過多的時間和注意力放在工作之外的地方,那就自己切斷了實踐這個重要環(huán)節(jié),水平和經(jīng)驗永遠(yuǎn)得不到提升,能力的提升跟談不上了,接著就是職務(wù),收入上的提升,說到底就是個人在社會上競爭力的提升。不去提升你的核心競爭力,成天沉迷于網(wǎng)絡(luò)還有其他事物,是否有點舍本逐末呢?
2.個人定位決定工作的態(tài)度,思維決定習(xí)慣,習(xí)慣決定行為,行為影響你的核心競爭力。
3.改變自己,而不是改變他人和環(huán)境。
???????????????? END ????????????????
關(guān)注我的微信公眾號,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。
點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。
