本科生学习fpga,dsp,嵌入式操作系统哪个好
本科生的話,建議做軟件方向的嵌入式系統(tǒng),即利用現(xiàn)有的芯片和操作系統(tǒng)(開(kāi)源的非開(kāi)源的都可以)進(jìn)行開(kāi)發(fā)。嵌入式?jīng)]有競(jìng)爭(zhēng)相對(duì)小的方向,不管你搞什么,今天無(wú)限風(fēng)光,明天就有可能寄人籬下。希望樓主在選擇之前首先端正一下態(tài)度,選擇了電子工程師這條路,就沒(méi)有“競(jìng)爭(zhēng)小”這項(xiàng)選擇。前途的話在個(gè)人,你要是真是個(gè)牛逼人物撿垃圾也能撿出不一樣的精彩。
根據(jù)樓主本科生的情況,DSP還是不要碰了。這玩意單純從編程角度來(lái)講沒(méi)有任何難度,其精髓在于你編程實(shí)現(xiàn)的算法.想把DSP用好,首先你將來(lái)從事的行業(yè)必須有大規(guī)模計(jì)算的需求,而且這種計(jì)算需求從某種程度上對(duì)時(shí)間要求比較高。比如通信,實(shí)時(shí)視頻處理等方面。有些應(yīng)用,比如地質(zhì)數(shù)據(jù)分析,遙感數(shù)據(jù)分析,大規(guī)模計(jì)算的需求是有了,但是一個(gè)星期出結(jié)果和一年出結(jié)果沒(méi)啥差別,那這種也就不需要DSP了,不如直接上PC來(lái)的順手。其次應(yīng)用DSP人員必須對(duì)自己行業(yè)所需要的專(zhuān)業(yè)知識(shí)極為精通,注意!這里的專(zhuān)業(yè)知識(shí)不是指什么數(shù)模電微機(jī)原理等“專(zhuān)業(yè)課”。而是解決本行業(yè)可能遇到的問(wèn)題所需的知識(shí)。具體例子不好列舉,就拿一般看得到的教材來(lái)說(shuō),很簡(jiǎn)單的DSP應(yīng)用——FFT,你說(shuō)你要是連FFT怎么回事兒都不知道,用在什么場(chǎng)合也沒(méi)概念,什么時(shí)候用也說(shuō)不清楚還搞什么DSP啊?DSP這東西跟什么學(xué)歷沒(méi)有太大關(guān)系,本科生也可以做得很好,關(guān)鍵是自己有沒(méi)有足夠的知識(shí)來(lái)用好它。
FPGA相對(duì)DSP來(lái)講稍微簡(jiǎn)單一點(diǎn),當(dāng)然,視個(gè)人情況而定。比起動(dòng)不動(dòng)就FIR啊IIR啊橢圓濾波器啊Butterworth啊什么的,我更喜歡幾百萬(wàn)門(mén)的與非邏輯。基本的邏輯電路設(shè)計(jì),本科時(shí)候的數(shù)字電路就可以夠用了。不過(guò)大的趨勢(shì)還是做SOC。SOC這個(gè)概念不難理解,簡(jiǎn)單點(diǎn)說(shuō)就是把你原來(lái)做的實(shí)驗(yàn)?zāi)莻€(gè)PCB板換成硅片,把與外界的連線換成管腳。用芯片做了原來(lái)電路板做的工作。單純組建一套片上系統(tǒng)并不復(fù)雜,復(fù)雜的是這套系統(tǒng)的商業(yè)化成本。現(xiàn)在很多SOC設(shè)計(jì)里面大量應(yīng)用的現(xiàn)成的IP都是需要付費(fèi)的。一方面原因是如果自己設(shè)計(jì),周期和風(fēng)險(xiǎn)就會(huì)成倍放大,另一方面針對(duì)某些功能的IP靠自己的力量也搞不出來(lái)。如果是學(xué)生或者獨(dú)立開(kāi)發(fā)者,當(dāng)SOC進(jìn)行到一定程度后就會(huì)感覺(jué)自己的開(kāi)發(fā)寸步難行了。抬頭望去到處都是IP壁壘。想做出自己的東西真的很不容易。如果你的理論知識(shí)夠牛的話,可以自己設(shè)計(jì)IP也是一個(gè)挺好的出路。
不過(guò)這又回到了DSP的老話題:你的知識(shí)夠用嗎?以我們公司現(xiàn)在的視頻處理項(xiàng)目來(lái)講,實(shí)現(xiàn)的時(shí)候很簡(jiǎn)單,就是一連串的矩陣轉(zhuǎn)換。問(wèn)題是如果沒(méi)人告訴你這么做,你自己能想到嗎?如何把一個(gè)BMP或者PNG轉(zhuǎn)換為YUV或者YPbPr?數(shù)據(jù)如何壓縮?其實(shí)就是一堆色空間轉(zhuǎn)來(lái)轉(zhuǎn)去的。再比如讓你用高斯算子和拉普拉斯算子做一個(gè)當(dāng)前圖像的邊界檢測(cè),怎么做?先不討論怎么做,麻煩問(wèn)一下啥是高斯算子?歸根到底,又是高等數(shù)學(xué)和線性代數(shù)那一檔子事兒。按照中國(guó)當(dāng)前的國(guó)情,50%的本科生基本靠混,另外50%不甘墮落的上進(jìn)青年中,有90%不重視理論知識(shí)。所以FPGA入門(mén)可以,做也不是不能做,想有前途?難。
這就是為什么建議你做嵌入式軟件的原因。軟件面比較廣,在你51單片機(jī)嵌入式編程的技術(shù)基礎(chǔ)上繼續(xù)深入嵌入式系統(tǒng)的應(yīng)用編程方向,一來(lái)上手快,理解概念好理解一些,二來(lái)對(duì)理論知識(shí)的要求不是那么嚴(yán)苛。雖然沒(méi)有理論知識(shí)你依然只是個(gè)代碼民工,但是嵌入式編程本身的靈活性從另一方面給了自己發(fā)展的空間,也就是說(shuō)單純就代碼如何實(shí)現(xiàn)上自己也可以學(xué)到不少東西。所以軟件可以不限于某幾個(gè)行業(yè)而存在,而DSP和FPGA不行。如果可以參與一些開(kāi)源的項(xiàng)目,對(duì)自己的提升就更大了。
總之,本科生的話,如果不準(zhǔn)備繼續(xù)深造而且考慮今后一定時(shí)間的發(fā)展的話,做嵌入式軟件比較合適。
?
?
搞嵌入式開(kāi)發(fā)的人有兩類(lèi):一類(lèi)是學(xué)電子工程、通信工程等偏硬件專(zhuān)業(yè)出身的人,他們主要是搞硬件設(shè)計(jì),有時(shí)要開(kāi)發(fā)一些與硬件關(guān)系最密切的最底層軟件,如BootLoader、 Board Support Package(像PC的BIOS一樣,往下驅(qū)動(dòng)硬件,往上支持操作系統(tǒng)),最初級(jí)的硬件驅(qū)動(dòng)程序等。他們的優(yōu)勢(shì)是對(duì)硬件原理非常清楚,不足是他們更擅長(zhǎng)定義各種硬件接口,但對(duì)復(fù)雜軟件系統(tǒng)往往力不從心(例如嵌入式操作系統(tǒng)原理和復(fù)雜應(yīng)用軟件等)。
另一類(lèi)是學(xué)軟件、計(jì)算機(jī)專(zhuān)業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開(kāi)發(fā)。如果學(xué)軟件的人對(duì)硬件原理和接口有較好的掌握,我們完全也可寫(xiě)B(tài)SP和硬件驅(qū)動(dòng)程序。嵌入式硬件設(shè)計(jì)完后,各種功能就全靠軟件來(lái)實(shí)現(xiàn)了,嵌入式設(shè)備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統(tǒng)的最主要工作(目前有很多公司將硬件設(shè)計(jì)包給了專(zhuān)門(mén)的硬件公司,稍復(fù)雜的硬件都交給臺(tái)灣或國(guó)外公司設(shè)計(jì),國(guó)內(nèi)的硬件設(shè)計(jì)力量很弱,很多嵌入式公司自己只負(fù)責(zé)開(kāi)發(fā)軟件,因?yàn)楣径贾?#xff0c;嵌入式產(chǎn)品的差異很大程度在軟件上,在軟件方面是最有"花頭"可做的),所以搞軟件的人完全不用擔(dān)心我們?cè)谇度胧绞袌?chǎng)上的用武之地,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢(shì)。
如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見(jiàn)的是嵌入式Linux方向,關(guān)注這個(gè)方向,我認(rèn)為大概分3個(gè)階段:
1、嵌入式linux上層應(yīng)用,包括QT的GUI開(kāi)發(fā)
2、嵌入式linux系統(tǒng)開(kāi)發(fā)
3、嵌入式linux驅(qū)動(dòng)開(kāi)發(fā)
嵌入式目前主要面向的幾個(gè)操作系統(tǒng)是,LINUX,WINCE、VxWorks等等
Linux是開(kāi)源免費(fèi)的,而且其源代碼是開(kāi)放的,更加適合我們學(xué)習(xí)嵌入式。
所以你可以嘗試以下路線:
(1) C語(yǔ)言是所有編程語(yǔ)言中的強(qiáng)者,單片機(jī)、DSP、類(lèi)似ARM的種種芯片的編程都可以用C語(yǔ)言搞定),因此必須非常熟練的掌握。
推薦書(shū)籍:《The C Programming Language》 這本經(jīng)典的教材是老外寫(xiě)的,也有中譯版本。
(2) 操作系統(tǒng)原理,是必需的,如果你是計(jì)算機(jī)專(zhuān)業(yè)畢業(yè)那也就無(wú)所謂了,如果是非計(jì)算機(jī)專(zhuān)業(yè)的就必須找一本比較淺顯的計(jì)算機(jī)原理書(shū)籍看一看,把啥叫“進(jìn)程”“線程”“系統(tǒng)調(diào)度”等等基本問(wèn)題搞清楚。
(3) Linux操作系統(tǒng)就是用C語(yǔ)言編寫(xiě)的,所以你也應(yīng)該先學(xué)習(xí)下Linux方面的編程,只有你會(huì)應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。
推薦書(shū)籍:《UNIX環(huán)境高級(jí)編程》(第2版)
(4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們?cè)谇度胧介_(kāi)發(fā)中,一般很少去寫(xiě)匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。
(5) 系統(tǒng)移植的時(shí)候,就需要你從最下層的bootloader開(kāi)始,然后內(nèi)核移植,文件系統(tǒng)移植等。而移植這部分對(duì)硬件的依賴(lài)是非常大的,其配置步驟也相對(duì)復(fù)雜,也沒(méi)有太多詳細(xì)資料。
(6) 驅(qū)動(dòng)開(kāi)發(fā)
linux驅(qū)動(dòng)程序設(shè)計(jì)既是個(gè)極富有挑戰(zhàn)性的領(lǐng)域,又是一個(gè)博大精深的內(nèi)容。
linux驅(qū)動(dòng)程序設(shè)計(jì)本質(zhì)是屬于linux內(nèi)核編程范疇的,因而是對(duì)linux內(nèi)核和內(nèi)核編程是有要求的。在學(xué)習(xí)前你要想了解linux內(nèi)核的組成,因?yàn)槊恳徊糠忠敿?xì)研究的話足夠可以擴(kuò)展成一本厚書(shū)。
以上只不過(guò)是大概的框架,在實(shí)際的開(kāi)發(fā)中還會(huì)涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說(shuō)學(xué)習(xí)嵌入式的周期較長(zhǎng),門(mén)檻較高,自學(xué)的話更是需要較強(qiáng)的學(xué)習(xí)能力和專(zhuān)業(yè)功底。只要能堅(jiān)持下來(lái)一定會(huì)取得成功!
不過(guò)關(guān)于嵌入式的學(xué)習(xí),還是要給你一些建議,嵌入式技術(shù)的門(mén)檻是比較高的
?
轉(zhuǎn)載于:https://www.cnblogs.com/steararre/archive/2012/03/13/2394005.html
總結(jié)
以上是生活随笔為你收集整理的本科生学习fpga,dsp,嵌入式操作系统哪个好的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ListView属性设置
- 下一篇: FUSE文件系统