前言
此文獻(xiàn)給那些剛剛踏上嵌入式之路的朋友們,在此我簡(jiǎn)要的記錄了我的學(xué)習(xí)經(jīng)歷和其間自己所獲的一些心得,希望能幫助初學(xué)者少走彎路。
曾經(jīng)的工作團(tuán)隊(duì)有四個(gè)人,其一是擁有11年工作經(jīng)驗(yàn)且已擁有自己專利的高級(jí)工程師,一個(gè)是擁有5年經(jīng)驗(yàn)、熱心腸的工程師,還有兩個(gè)分別是電源和視頻方面的專家。在這里耳濡目染,漸漸的對(duì)硬件發(fā)生了濃厚的興趣。
從單片機(jī),FPGA、SOPC硬件的搭建以及軟件編程,以及現(xiàn)在正在努力研究的ARM,我是憑著無(wú)限的熱情來(lái)做的。
實(shí)驗(yàn)室提供了便捷的學(xué)習(xí)環(huán)境,這里有現(xiàn)成的winbond 51單片機(jī)、有偉福仿真器、advanced labtool 48uxp萬(wàn)能編程器,一臺(tái)12萬(wàn)的示波器。自己買了個(gè)萬(wàn)能板,學(xué)習(xí)階段時(shí),找本書就能在上邊進(jìn)行試驗(yàn)了。
從簡(jiǎn)單的led閃爍開始,后來(lái)接觸到數(shù)碼管顯示、pwm到中斷、串口通信(單片機(jī)與單片機(jī)通信,單片機(jī)與pc通信)、I2Ceeprom讀寫、A/D轉(zhuǎn)換、溫度測(cè)量等。一個(gè)個(gè)試驗(yàn),從資料查找、程序編寫、調(diào)試直到問題的解決,收獲了滿滿的成就感。
FPGA
剛進(jìn)實(shí)驗(yàn)室的時(shí)候,得到了一塊Altera公司的nios ep1c20 cyclone系列開發(fā)板,當(dāng)時(shí)是以大學(xué)計(jì)劃的名義買的,5000元人民幣。于是就開始了我FPGA學(xué)習(xí)之路。之前學(xué)習(xí)過(guò)verilog,只停留在純粹的理論階段,編幾個(gè)小小的程序,用quartus-ii自帶的仿真軟件進(jìn)行一下仿真就ok了。
用仿真軟件進(jìn)行仿真,往往能夠得出你所想要的結(jié)果,但是一旦下載到芯片里邊運(yùn)行,問題就會(huì)接踵而至。萬(wàn)事開頭難,我做的第一個(gè)實(shí)驗(yàn)是點(diǎn)亮led,自己編寫程序(幾行而已)、編譯、引腳分配、仿真、然后就用jtag下載線連接開發(fā)板和pc,將sof文件下載到芯片。現(xiàn)在想起來(lái)這是多么簡(jiǎn)單的幾個(gè)步驟,但是對(duì)于當(dāng)時(shí)的我來(lái)說(shuō),花費(fèi)了相當(dāng)?shù)臅r(shí)間和精力來(lái)查找資料和埋頭反復(fù)實(shí)驗(yàn)。特別是引腳的分配,文檔上只說(shuō)需要這么做,那為什么要這么做呢?當(dāng)時(shí)沒有過(guò)多的想法,只想看到實(shí)驗(yàn)的結(jié)果,有了結(jié)果我就有了無(wú)限的成就感和高漲的熱情,所以當(dāng)經(jīng)過(guò)努力,第一個(gè)FPGA實(shí)驗(yàn)里的led終于按照意圖動(dòng)作的時(shí)候,那種激動(dòng)與當(dāng)初學(xué)習(xí)單片機(jī)時(shí)得以實(shí)現(xiàn)led閃爍的情形如出一轍。
我做實(shí)驗(yàn)的一個(gè)慣例同時(shí)也是一個(gè)經(jīng)驗(yàn)就是邊做實(shí)驗(yàn)邊看書,在實(shí)驗(yàn)中發(fā)現(xiàn)問題,遇到不懂的問題或者原理在查找相關(guān)的文檔。抱著這種熱情,后來(lái)一點(diǎn)一點(diǎn)地深入學(xué)習(xí)FPGA,一些常規(guī)邏輯電路的設(shè)計(jì),包括邏輯門電路、數(shù)據(jù)選擇器、編譯碼器、加減乘除運(yùn)算器、移位器,到后來(lái)的稍微復(fù)雜的電路設(shè)計(jì),如FIFO、數(shù)字跑表、頻率計(jì)、狀態(tài)機(jī)、交通等的控制、卡式電話計(jì)費(fèi)系統(tǒng)以及UART等。
這些試驗(yàn)當(dāng)時(shí)我都是采用的verilog語(yǔ)言實(shí)現(xiàn)的。初接觸FPGA時(shí)本想學(xué)VHDL,那時(shí)的同學(xué)都用verilog,為了與他們討論問題的方便,就改學(xué)verilog了。一學(xué)不打緊,慢慢發(fā)現(xiàn)自己深深地愛上了verilog,對(duì)于我來(lái)說(shuō),它無(wú)疑更適合我。這也是我要推薦的一個(gè)經(jīng)驗(yàn),那就是多看看你周圍的人用的是什么工具,他們用的工具往往不是你最喜歡的或者不是當(dāng)前最廣泛最流行的,但你若要和他們交流討論問題,那還是遷就一下,和別人所用工具一樣,交流起來(lái)也會(huì)順暢方便。
到實(shí)驗(yàn)室后,因?yàn)閷?shí)驗(yàn)室的員工都用偉福的仿真器,所以軟件當(dāng)然還是用偉福提供的。偉福的軟件我認(rèn)為不怎么好,只支持匯編,比起大名鼎鼎的keil c51遜了一大截,但除非你想等到自己有問題不會(huì)的時(shí)候周邊竟沒有人幫助你,不然在前期還是選擇偉福的軟件方便溝通。
再后來(lái),經(jīng)過(guò)自己的摸索和向身邊的工程師們請(qǐng)教,偉福用很熟悉了,匯編也有了自己的一套,這時(shí)候我開始在偉福里邊嵌入keil,用c語(yǔ)言來(lái)寫程序。再后來(lái)我就下載了keil c51軟件,從此以后便正式地在keil的開發(fā)界面下寫程序了。當(dāng)然仿真的時(shí)候也可以在keil環(huán)境下用偉福仿真器,我想偉福在制造自己產(chǎn)品的時(shí)候就已經(jīng)考慮到這點(diǎn)了,他們的一些產(chǎn)品肯定要考慮兼容主流軟件keil的。用了keil C51后就不想用偉福編譯軟件了,同樣的用了c寫程序后,就不想用匯編了。但是匯編是每一個(gè)硬件研發(fā)工程師們必備的,匯編有c不可企及之處,但有時(shí)候還非用匯編不可。匯編的運(yùn)行效率高,寫起來(lái)很是煩瑣,但是在某些特定的時(shí)刻,匯編還是發(fā)揮了它不可替代的作用。比如在將usoc移植到單片機(jī)的時(shí)候,與處理器相關(guān)的程序還真是必須用匯編來(lái)完成的。
SOPC
再后來(lái),學(xué)習(xí)sopc。從最小系統(tǒng)硬件平臺(tái)的搭建,到簡(jiǎn)單的led閃爍程序的編寫,到sof文件在芯片上跑起來(lái),看著led的亮與滅,心中熱情澎湃。
與前邊學(xué)習(xí)單片機(jī)、FPGA一樣,第一個(gè)實(shí)驗(yàn)還是led閃爍,然后慢慢的轉(zhuǎn)向一些比較復(fù)雜的功能設(shè)計(jì)上去,也無(wú)非是實(shí)現(xiàn)以前用verilog實(shí)現(xiàn)過(guò)的一些功能。兩者的區(qū)別是:一種完全用verilog語(yǔ)言來(lái)實(shí)現(xiàn)全部功能;一種需要先用sopc builder搭建硬件系統(tǒng),然后在nios ide中進(jìn)行軟件的編程。這兩種方法都能夠?qū)崿F(xiàn)需要的功能,但是后者更方便快捷,因?yàn)樵谶@種方法里,我們使用的是“拿來(lái)主義”,IP核已經(jīng)實(shí)現(xiàn)了我們的功能,要做的僅僅是去利用它而已。
在此期間本人比較欣賞Altera公司推出的可編程片上系統(tǒng)即sopc,它解放了我們搭建硬件系統(tǒng)的煩瑣,僅僅需要按照需求在系統(tǒng)里邊加上自己的IP核和一些必須的外設(shè)。Altera公司或者其他的第三方公司已經(jīng)為我們提供了性能和功能很完善的IP核,我們所要做的只是將這些IP核加入到我們的系統(tǒng)里完成我們需要的功能。硬件系統(tǒng)完成后,需要在Altera公司提供的nios IDE環(huán)境下對(duì)硬件系統(tǒng)進(jìn)行軟件編程,在這里,完全用c語(yǔ)言來(lái)完成所需要的功能。
再后來(lái)學(xué)習(xí)ucos嵌入式操作系統(tǒng),主要是運(yùn)用在FPGA里面。nios已經(jīng)為使用者移植好了,不需要修改任何文件。在nios用戶界面里進(jìn)行一些相應(yīng)的設(shè)置就可以使用了。Altera公司為我們提供的模板里邊有幾個(gè)很好的例子,任務(wù)管理、信號(hào)量、郵箱傳遞、事件標(biāo)志、時(shí)間管理等提供了很好的模板,我們需要做的是認(rèn)真的閱讀,研究它,必要的話對(duì)模板進(jìn)行一些改寫來(lái)完成自己的功能,這是模仿的更高境界了,把他的一些東西進(jìn)行吸收轉(zhuǎn)化成為自己的東西,我想這是一個(gè)硬件愛好者和初學(xué)者非常樂于做的事情。
后記
其實(shí),在進(jìn)行FPGA學(xué)習(xí)的時(shí)候,我遇到過(guò)試驗(yàn)沒有進(jìn)展、心情沮喪的時(shí)候。那時(shí)對(duì)底層硬件一無(wú)所知,連對(duì)基本的原理圖也看不太懂,更別說(shuō)程序在開發(fā)板上是怎么運(yùn)行的了。每天感受不到一點(diǎn)進(jìn)步,真是很漫長(zhǎng)難熬的日子。
一次,我和辦公室的一個(gè)熱心腸的工程師聊天,談到了我的困惑,他建議我先學(xué)習(xí)單片機(jī),自己搭建硬件平臺(tái),從最小系統(tǒng)做起。學(xué)習(xí)方面的問題他總是很耐心地幫助解答,讓我受益匪淺,我很慶幸能夠在這種環(huán)境當(dāng)中學(xué)習(xí)。
遇到問題的時(shí)候,感覺事情沒法進(jìn)展下去的時(shí)候,不妨換一種方式,與周邊的人聊聊,或許會(huì)有改變。
-
FPGA
+關(guān)注
關(guān)注
1644文章
21989瀏覽量
615219 -
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44946瀏覽量
648010 -
sopc
+關(guān)注
關(guān)注
2文章
248瀏覽量
63217
原文標(biāo)題:嵌入式硬件工程師的心得
文章出處:【微信號(hào):ARM與嵌入式,微信公眾號(hào):ARM與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師

如何成為一名嵌入式軟件工程師?

嵌入式系統(tǒng)開發(fā)圣經(jīng)【干貨】

硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體
嵌入式軟件工程師就業(yè)好不好?
如何成為嵌入式開發(fā)工程師?
月薪 3 萬(wàn)的嵌入式工程師都在用,串口屏到底神在哪?

年薪30萬(wàn)的嵌入式工程師,究竟需要掌握哪些技能?

為什么嵌入式驅(qū)動(dòng)開發(fā)工程師可以拿高薪?
嵌入式工程師常用的開發(fā)工具有哪些?
KiCon 演講回顧(十三):嵌入工程師的硬件夢(mèng)之 KiCad 經(jīng)驗(yàn)和項(xiàng)目分享


評(píng)論