⑴ 請問有沒有搞嵌入式、單片機等硬體方面的工程師呢
這是一篇嵌入式入門激勵文章,網路上流傳已久
• 同濟大學軟體學院院長談嵌入式方向選擇
• 時間:2007-01-09
• 嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬體資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。
嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。
一類是學電子工程、通信工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關系最密切的最底層軟體,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支持操作系統),最初級的硬體驅動程序等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對復雜軟體系統往往力不從心(例如嵌入式操作系統原理和復雜應用軟體等)。
另一類是學軟體、計算機專業出身的人,主要從事嵌入式操作系統和應用軟體的開發。如果我們學軟體的人對硬體原理和介面有較好的掌握,我們完全也可寫BSP和硬體驅動程序。嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式設備的增值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作(目前有很多公司將硬體設計包給了專門的硬體公司,稍復雜的硬體都交給台灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有"花頭"可做的),所以我們搞軟體的人完全不用擔心我們在嵌入式市場上的用武之地,越是智能設備越是復雜系統,軟體越起關鍵作用,而且這是目前的趨勢。
從事嵌入式軟體開發的好處是:
(1) 目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如操作系統級、驅動程序級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。
(2) 與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟體的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,而且每個用戶的需求和完成時間都得按客戶要求改變,往往疲於奔命,重復勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閑時間(或只是對軟體進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟體的每個人工作范圍相對狹窄,所涉及的專業技術范圍就是那些(ARM、RTOS、MPEG、802.11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟體,可能下一個客戶要換成一個完全不同的軟體開發平台,那就苦了。
(3) 哪天若想創業,搞自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟體那樣容易被盜版。土木學院有一個叫啟明星的公司開發出一個好象叫「工程e」的掌上PDA(南校區門口有廣告),施工技術人員用該PDA可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜PDA(WinCE平台,可無線連網和上網),據他說銷路不錯,飯館點點PDA讓客戶點菜,多顯派頭檔次。我記得00級2+2班當年有一組同學在學Windows程序設計課程時用VC++設計了一個功能很強的點菜系統做為課程項目,當時真想建議他們將這個軟體做成PDA,估計會有些銷路(上海火車站南廣場的Macdonald便使用很漂亮的PDA給用戶點食品,像摸像樣的)。這些PDA的硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。
從事嵌入式軟體開發的缺點是:
(1) 入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。
(2) 這方面的企業數量要遠少於企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半導體、Microtek、研華、華為、中興通信、上廣電等製造類企業)。這些企業的習慣思維方式是到電子、通信等偏硬專業找人。由於我院以前畢業生以企業計算為主,所以我院與這些企業聯系相對較少。我院正積極努力,目前已與其中部分公司建立了聯系,爭取今後能有我院同學到這些企業中實習或就業。
(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。
我院同學若學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式操作系統方面,應是我們的強項。對於搞嵌入式軟體的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):
(1) 掌握主流嵌入式微處理器的結構與原理
(2) 必須掌握一個嵌入式操作系統
(3) 必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體項目。
我院在嵌入式軟體方面最重要的課程包括:
(1) 嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,我院用這門課取代了傳統的「微機原理與介面」課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對ARM處理器工作原理和介面技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省內存又運行高速的最優代碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程序(驅動程序都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該設備的硬體規格說明書 (xxx Specification),您必須能看懂其中的內存分布和埠使用等最基本的說明(就像x86匯編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編語言的人,怎麼能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像採集和圖像解壓縮),目前主要還要靠匯編寫程序(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用匯編描述,此時您就必須看懂匯編程序,否則軟硬體人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。
[小知識] 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占據了絕對主流(資料說手機中幾乎100%都是ARM處理器)。ARM是一個只賣知識產權的公司,目前獲得購買了ARM CPU核授權許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎上進行了一些外圍擴展,形成自己的處理器(如Samsung S3C2410,Motorola i.MXL9328等處理器都是採用ARM 9內核,指令一級是相同的)。而眾多中小公司又購買了這些處理器,設計了各種各樣的開發板,如華恆等國內很多著名嵌入式公司都生產基於Samsung S3C2410的開發板,供最終用戶使用或供教學實驗。在ARM這個食物鏈上,ARM公司是大魚,Intel、Samsung等公司是小魚,而華恆等則是蝦米,最終用戶(想我們要采購嵌入式開發板的實驗室)則是喂蝦米的。Intel早期生產的是低端ARM(Strong ARM,相當於ARM 7),現在轉向主要生產高端ARM(即Intel Xscale處理器,相當於ARM 10,主要用在高端PDA上,如HP和DELL生產的PDA都採用Intel Xscale,價格較高)。目前應用最多的是ARM 7和ARM 9兩類處理器。 ARM 7較便宜,可跑uclinux(是一個不支持高級內存管理功能的嵌入式Linux系統)、Vxworks、uc/os II等實時操作系統,但因處理器不帶內存管理單元MMU(無內存分頁和地址映射機制,所以不能使用虛擬內存),所以不能跑Windows CE,另外通用Linux中的某些內存管理功能也不能用在ARM 7上。ARM 9是一個帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數功能。以上是我的一點了解,可能有不對的地方。我們學院正在建設的嵌入式實驗室(10月底到貨)包括30套ARM 7系統(擬採用Samsung S3C44b0x開發板,主要用於嵌入式處理器結構、嵌入式linux課程實驗),10套ARM 9系統(擬採用Samsung S3C2410x開發板,主要用於Windows CE課程建設),每套實驗板都配了高速模擬器,價格都很貴(比我們招標的DELL PC還貴),很容易損壞,同學應愛護使用。
(2) 嵌入式操作系統類課程
除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time Operating System.從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。目前最重要的RTOS主要包括:
第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平台。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統:Linux的前途除作為伺服器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM 9上的,一般是將Linux 2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM 9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由於ucOS/II功能有限,實用用得較少,所以我院不將其作為教學重點,要學習就應學直接實用的,比如 uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深操作系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。我院在該嵌入式Linux方面的課程系列是:本科生操作系統必修課,然後是Linux程序設計選修課,最後是嵌入式Linux系統選修課。我院在Linux方面目前已有較強力量,魏老師和張老師熟悉Linux開發,金老師和唐老師熟悉Linux系統管理。
第三類、 Windows CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點 ,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的"Windows CE嵌入式操作系統"課程的學校,這主要是基於以下原因:我院本身前面便有Windows程序設計課程,同學學過VC++後再學WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更願意接受MS的平台,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮; 二是微軟亞洲研究院對我院WinCE課程的支持計劃,我們也很希望將來我院能有同學通過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。
總結關於嵌入式操作系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最好的選擇。
(3) 嵌入式開發的其它相關軟體課程
搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:
A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,我院已預訂了一位能開設數字圖像處理課程的博士。
B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入區域網或Internet,所以首先應掌握TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無結通信協議包括無線區域網通信協議802.11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。
C、網路與信息安全技術:如加密技術,數字證書CA等。我院有這方面的選修課。
D、DSP技術:DSP是Digital Signal Process數字信號處理的意思,DSP處理器通過硬體實現數字信號處理演算法,如高速數據採集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬體專業的課程,對於搞軟體的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。
(4)嵌入式開發的相關硬體基礎
對於軟體工程專業的學生,從事嵌入式軟體開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬體課程是較重要的。另外,匯編語言、C/C++、數據結構和演算法、特別是操作系統等軟體基礎課也是十分重要的。我們的主要目地是能看懂硬體工作原理,但重點應是在嵌入式軟體,特別操作系統級軟體,那將是我們的優勢。
我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多嵌入式應用越來越復雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP演算法,如MPEG壓縮解壓縮演算法等用硬體來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP核實現技術,這方面的人目前市場上也很缺。
(5) 題外話
另外,能寫驅動程序的人目前是非常緊缺的(驅動程序也可歸於嵌入式范疇),包括桌面Windows中的DDK開發環境和WDM驅動程序。公司每時每刻都要推出新產品,每一個新產品出來了,要能被操作系統所使用,是必須寫驅動程序的。寫驅動程序就必須掌握操作系統(如Windows或Linux)的內部工作原理,還涉及到少量硬體知識,難度較大,所以這方面的人很難找。想成為高手的同學,也可從驅動程序方面獲得突破。我可說一下自己的經歷,三年前我曾短暫地在一家公司寫過WinCE驅動程序(正是因為知道這方面的人緊缺,所以才要做這方面的事),盡管那以前從未做過驅動程序,應聘那個職位時正是看準了公司是很難招聘到這方面的人,既然都找不到人,驅動還得有人做,這正是可能有機會切入這一領域的大好機會。面試時大講自己寫過多少萬行匯編程序,對計算機工作原理如何清楚,簡歷中又寫著我曾閱讀完兩本關於Windows Driver Model的兩本英文原版書,寫過幾個小型的驅動程序練習程序(其實根本沒寫過,我們的同學將來千萬不要像我這樣,早練就些過硬功夫,就不至於淪落到我這等地步,就不用像我那樣去「欺騙」公司了,我這是一個典型的反面教材),居然一切都PASS(當然最重要的是筆試和面試問題還說得過去),這只能說明這一領域找人的困難程度。公司本就未指望找到搞過驅動的人,找個有相關基礎的人就算不錯了。做了以後,發現也並不是怎樣難的。其實搞驅動程序的工作是很舒服的,搞完一個版本就會空一段時間,只有等公司新的晶元推出或新的OS出現後,才需要再去開發新一版驅動,那時有將近一個月時間空閑著在等WinCE .NET Beta版推出,准備將驅動程序升級到CE .NET上,現在在軟體學院工作整日忙,無限懷念那段悠閑時光。
很巧合,最近本人無意中再次體會到了嵌入式的迷人之處。上周我那用了3年的手機終於不能WORK了。此次更新,除要求有手機常見功能外,最好有MP3功能(現在很多英語聽力都有MP3文件),最好有英漢詞典,最好還能讀WORD文檔。最後選了個滿足以上條件的最便宜的手機DOPOD 515(斬了我2.2K,但想想這也算自己對嵌入式事業的支持,這樣便也想開了),算得上最低檔的智能手機了。回來一查,手機的about顯示,本手機Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),這么巧合,簡直可做為學習嵌入式課程的產品案例了(等我們的WinCE課程開得有聲有色後,希望能從微軟研究院搞些Smartphone來開發開發)。有OS的手機果然了得,金山詞霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在download時都可被自動轉換成smartphone格式,真是爽。完全可用Windows CE自己開發一些需要的程序download到自己的手機上。現在市面銷售PDA智能手機火爆,MS總是財源滾滾。但我已發現國產的ARM+LINUX手機出現在市面上,價格只1.2K。
要麼走ARM+WinCE,要麼走ARM+LINUX,要麼走ARM+VXWORKS。每個搞嵌入式的人都可選一條路,條條大路通羅馬。
• 來源:嵌入式在線
• 嵌入式軟體工程師 培訓獲得政府補助
• 嵌入式在線 時間:2007-04-02
• 為促進我國服務外包產業健康快速發展,加強行業的能力建設,加大對服務外包人才培養的支持力度,國家商務部門設立「千百十工程」服務外包人才培訓資金,並對中國服務外包基地上海示範區(漕河涇開發區)舉辦的服務外包人才培訓予以支持。
開發區軟體園培訓中心舉辦的嵌入式軟體工程師培訓作為服務外包領域的緊缺人才得到了該專項資金資助,對符合條件的學員提供高額補貼。
由於在通訊、醫療、航天航空、過程式控制制等眾多領域的廣泛應用,被稱為PC和網際網路之後偉大發明的嵌入式智能,已成為繼IT網路技術後又一迅速發展的技術方向。但同其快速發展相比,教育機構技術和培養的相對滯後,使得嵌入式軟體人才存在巨大缺口。
在未來相當長的時間內,嵌入式軟體人才都將是企業爭奪的目標,嵌入式軟體工程師也將是最熱門的職業之一。
⑵ 學單片機好找工作嗎
樓上開的頭不錯
的確是要做些工程的
其實剛學的時候都是覺得很茫然的,之知道盲目的去問,「它能實現什麼」
總忘了自己去想「它還能做什麼」,學單片機如果離開了製作,離開是使用
真的很容易讓人產生一種茫然的感覺
現在不防換換思路
想想怎麼用,應用催生開發啊
多找寫單片機的應用事例
,自己做,而不是看著已經成為範例的東西
一遍一遍的模仿
另外呢
硬體開發本身就是很考驗耐力的
設計到電子器件、電路、編程、軟體。。。等等東西
這樣一個集合體是比容易產生問題的
像我同學曾經因為一個很小的問題
調試了單片機一個月
況且單片機還不像程序調試那樣那麼方便,電路調試還需要用到檢測儀器,簡單的要萬用表,復雜的用示波器,投入不可未不大。
此外呢,學每樣東西,最先說到的就是模塊化、規范化,即便是自己設計的東西,也一定要注意好這個問題,不但能夠在設計之處節省時間,而且在後期調試也能夠起到極大的幫助,特別是形成了自己的設計習慣之後,問題出在哪裡有可能一眼就看出來了。
不要害怕東西復雜,只要你堅信每個小點你都能處理
你不是要做個功能簡單的計算器嗎?慢慢來,一步步來,總能做出來的。
這其實就是積累工程經驗的重要步驟,能做鍵盤,能做led,而且計算器的程序也不見得要多麼復雜。
你需要培養自己的模塊化思維模式,你既要看到細微處的技術實現,也需要有個總體的結構規劃。
設計是從大到小,從簡到難,就像畫畫一樣,先輪廓,後細節。
你需要克服的是內心的煩躁,你需要好好靜下心來條理好你的思緒,幫助自己在腦袋裡形成自己的思路,自己的風格。屬於你的設計思路,你的設計步驟,你的思考方法。
這樣你就可以慢慢成長起來了
⑶ 單片機就業方向
看這篇帖子的,我想都是電子愛好者或電類專業學生。不知道大家都處於什麼一個階段,這篇帖子是寫給入門者的,要解決一個問題:初學者應重點掌握什麼電子知識,大學階段如何學習?
先說點貌似題外的東西——3個謬論。
謬論一:高中老師常對我們說,大家現在好好學,考上了大學就輕鬆了,愛怎麼玩怎麼玩。這真是狗屁。別的專業我不好說,電氣、電子、電力、通信、自動化等電類專業,想要輕松那是不可能地(當然你是天才就另說),專業課上講的東西對決大多數人來說那是雲里霧里,從來都是一知半解,需要你課下大量時間精力地消化。有些東西甚至需要你若干年後在工作中遇著時才回過味:「哦,原來以前學的那東西是干這使的。」你要能想得起,並知道怎麼回頭去補,就算是上學時專業課學得很扎實了。
謬論二:填志願時經常有人對我們說:專業不重要,學校最重要,進了個好學校想學什麼再學。這亦是狗屁。進了學校,本專業的課程就可能會壓得你喘不過氣來,還有多少人有時間和毅力選修第二專業?而所學專業幾乎就是決定了你今後一生的職業生涯。而學校,說實在話本科階段我覺得從老師那學到的東西各校間差別不是很大。課上講的大同小異,課下也不會有什麼好老師給你單獨指導和點撥,若能遇著,那是你的幸運。越牛的學校的越牛的老師就越忙,不要指望他們會在教學上花多少心思,更不要指望他們對你另眼相看。反倒是一些普通院校的小老師們可能跟學生走得更近,輔導更多些,雖然他們可能水平一般,但對於你大學的學習來說還是足夠的。綜上所述,我覺得對於一個電子愛好者來說,成為一名普通重點大學的電子系學生比成為北大的哲學系學生更重要。當然看帖的應該大多數都是學電的,那恭喜你,這個專業不錯的,雖不是什麼「朝陽產業」,但絕對是個「常青行業」。
謬論三:上了大學,可能又有不少人對你說,在大學專業不重要,關鍵的是學好計算機和英語,這樣就不愁找不到好工作了。這也是屁話。你要明確一點:你將來不是純靠英語吃飯的,也不是做編程、搞軟體開發或動畫創作的。我是想說:若果你性格偏內向沉穩、肯鑽研、愛好電子行業,將來想從事電子設計和研發工作,那你一定要學好專業課。當然英語也很重要,但以後工作中用得多的是你的專業英語,即能讀懂英語技術文檔,而不是跟別人比你口語多正宗多流利。至於計算機,那就是一工具,不要花太多時間去學photoshop、3dmax、Flash、網頁製作等流行軟體,這些在你今後的工作中用不著,也會牽扯你大量時間精力。好鋼用在刀刃上,多進進實驗室多搭搭電路吧。當然,電類學生對電腦也有特殊要求,那就是用熟Protel、
Multisim,學好匯編語言、C語言、選學PLD相關軟體。任務也是很重的。
以上說了3個謬論,下面言歸正傳吧。那麼進了大學,讀了電類專業,這4年你該學些什麼呢?
首先要了解:電類專業可分為強電和弱電兩個方向,具體為電力工程及其自動化(電力系統、工廠供變電等)專業屬強電,電氣工程及其自動化以強電為主弱電為輔,電子、通信、自動化專業以弱電為主。其他更進一步的細分要進入研究生階段才劃分。但無論強電還是弱電,基礎都是一樣的。
首先高數是要學好的,以後的信號處理、電磁場、電力系統、DSP等不同方向的專業課都用得著。
專業基礎課最重要的就是電路分析、模擬電路、數字電路。這3門課一定要學好。這3門課一般都是大一下學期到大三上學期開設,對大多數對電子知識還了解不多的同學來說,通常是學得一知半解,迷迷糊糊。所以,最好是在開課之前或是開課的同時讀一兩本通俗淺顯的綜合介紹電子知識的書籍,對書中的知識你不需要都懂,能有個大致感覺就行。
對這這種入門讀物的選擇很重要,難了看不懂可能興趣就此喪失或備受打擊,反而事與願違。在此推薦一本《電子設計從零開始》(楊欣編著,清華大學出版社出版),該書比較系統全面地介紹了電子設計與製作的基礎知識,模電、數電、單片機、Multisim電路模擬軟體等都有涉及,一冊在手基本知識就差不多了,關鍵是淺顯易懂,有一定趣味性。另外科學出版社引進出版的一套小開本(32開)電子系列圖書也不錯,是日本人寫的,科學出版社翻譯出版,插圖較多,也較淺顯,不過這一系列分冊較多,內容分得較細。
除了看書,還要足夠重視動手實踐。電路、模電、數電這些課程進行的同時都會同時開設一些課程試驗,珍惜這個動手機會好好弄一弄,而不要把它當作一個任務應付了事。跟抄作業一樣,拷貝別人的試驗結果在高校中也是蔚然成風,特別是幾個人一個小組的實驗,那就是個別勤奮好學的在那折騰,其他人毫不用心地等著出結果。
我只想說,自己動手努力得來的成果才是甜美的,那種成就感會讓你充實和滿足。游手好閑的,到臨近畢業找工作或在單位試用時,心中那種巨大的惶恐會讓你悔不當初。這種教訓太多了,多少次我們都是蹉跎了歲月才回過頭來追悔莫及。除了實驗課好好准備好好做之外,許多學校都設有開放性實驗室,供學生平時課余自覺來弄弄。珍惜這種資源和條件吧,工作後不會再有誰給你提供這種免費的午餐了。
當然有些學校沒有這么好的條件,或缺少器件,那同學們就在電腦上模擬一把試驗平台吧,就是學好用好Multisim軟體。Multisim是一種電路模擬軟體,筆者上學時叫做EWB,後來隨著版本更新,先後更名為Multisim2001、Multisim7、Multisim8。這個軟體可模擬搭建各種模擬電路和數字電路,並可觀測、分析電路模擬結果。大夥可以把模電、數電中學習的電路在這軟體裡面模擬一下,增加感性認識,實驗前後也可把試驗電路在軟體里模擬,看跟實際試驗結果有多大差別。可以說,只要你是學電的,這個小軟體就是你上學時必須掌握的,對你的學習助益很大。另一個必須掌握的軟體那就是protel了。
上學時,從小學期的綜合設計實驗到畢業設計,最後都會要求你用Protel繪出設計的電路原理圖和PCB版;工作後,Protel也是你必須掌握的基本技能,部分同學畢業後一兩年內的工作,可能就是單純地用這軟體畫板子。Protel的版本也走過了Protel98、Protel99、Protel99SE、ProtelDXP、Protel2004的發展道路。Protel99SE、ProtelDXP、Protel2004這三個版本現在用得最多,目前許多學校教學或公司內工程師使用的都還是Protel99SE,當然若作為新的自學者直接從Protel2004學起似乎好一些。
綜上所敘,作為最基本的EDA(電子設計自動化)軟體,Multisim和Protel是所有電類學生在上學時必須掌握的。其他的如Pspice、Orcad、SYstemview、MATLAB、QuartusII等等,需根據不同的專業方向選學,或是在進入研究生階段或工作後在重點學習使用。那Multisim和Protel好學么?入門應該問題不大,讓師兄師姐指導指導,或是找一兩本入門書看一看就OK了。這里推薦一本《電路設計與模擬——基於Multisim 8與Protel 2004》(也是楊欣編著,清華社出版),作為這兩款軟體的入門學習挺不錯的,關鍵是一本書包含了兩款軟體學習,對窮學生來說比較劃算,若是花錢買兩本書分別去學這兩個軟體,就不值了,因為Multisim的入門不是很難。另用Protel畫PCB電路板學問挺大的,有必要多看一些技術文檔或是買一本高級應用類的圖書。
2.大三大四(學習專業課,嘗試應用)
進入大三,就涉及到專業課的學習了,本文只討論以應用為主的專業課,其他如《電力系統分析》、《電機學》、《自控原理》、《信號與處理》、《高電壓》、《電磁場》等等以理論和計算為主的專業課,咱就不多提了。當然這些課對你今後向研究型人才發展很重要,也都很讓人頭疼,要有建議也只能說是努力學、好好學,懂多少是到少(不過別指望全都懂),以後工作或接著深造用得著時再回過頭來接著補接著學,那時有工作經驗或接觸多了有感性認識,可能學著就容易些了。
那以應用為主的專業課又有哪些呢?不同專業方向有不同的課程,很難面面俱到。這里先簡單羅列一下,有微機原理與介面技術(也稱單片機)、開關電源設計、可編程邏輯器件(PLD)應用、可編程邏輯控制(PLC)應用、變頻器應用、通信電路、數字集成電路分析與設計、DSP、嵌入式等等。可能有同學要問:這么多東西,大學階段要想都學好不容易吧?答案是不僅是不容易,而且是不可能。這些技術每一門展開來都是復雜的一套知識,可以說,你只要精通其中一門,就可以到外邊找個不錯的工作了。
而且在大學階段,這些課程也不是都要學的,而是針對不同專業方向選修其中幾門(具體選哪幾門,多研究研究你們各自的專業培養方案,多請教老師),學的時候爭取能動基本用法即可,真正的應用和深入是要到工作後的;當然你若很勤奮或有天賦,能熟練掌握某一門達到開發產品的程度,那畢業後找個好工作就輕而易舉了。到這里我們需要再明確一點:電子領域知識繁多、浩如煙海,所以一般搞硬體的公司都有較多的員工,一個研發項目是多人細致分工、共同完成的,所以我們經常會聽到團隊意識這個名詞。因為一個人的能力有限,不可能掌握所有的知識。比如一些人專門負責搞驅動,一些人專門從事邏輯設計,一些人專門搞高頻無線,一些人專門搞測試,一些人專門設計外殼,一些人專門設計電路板等等。
看到這里可能有的同學頭都大了:那說來說去大學階段到底究竟應該學些什麼呢?說實話寫到這里我的頭也大了,電子設計涉及方方面面的東西太多了,實在不是一篇文章甚至一本書能說得清楚的。所以我決定剔除這些生澀的課程名目,大致說一下我所認為的一個電類學生或是想要成為電子工程師的自學者應該掌握的基本的專業技能。
現在應該說單片機不知道那是相當嚴重的問題。單片機的知識和應用的技巧成了求職面試中必備的問題。但是單片機的知識較難入手,但是你如果看了《51單片機應用從零開始》(清華大學出版社,王玉鳳,劉湘黔,楊欣編著)就不是這么感覺的了,這是一本中學生都讀得懂的單片機基礎和應用教程。這本教程凝結了國內幾所重點大學中站在科研、教學第一線教師們的心血,也得到了英國劍橋大學、牛津大學、倫敦帝國理工大學、倫敦大學、加的夫大學等世界著名大學多位博士生導師的指導意見。經過多位學者的精心裁剪,本書的脈絡、線索、內容才真正符合讀者學習單片機的需要。
《51單片機應用從零開始》以生動活潑、平實易懂的語言講述。盡量讓單片機學習過程中不斷涌現的專業詞彙,在不知不覺的情況下通過多方面的使用而掌握。本書沒有用專業的描述方法來敘述知識點,取而代之的是以「講故事」的形式把應該了解的內容和盤托出。
十分注重基礎知識的鋪墊。在單片機學習之前,需要對計算機原理和電子技術有一定的了解。本書考慮到不同讀者的知識背景不同,把這兩個基礎理論融入到了單片機的講解當中,使閱讀起來感覺不到有什麼障礙。
構建了全面的學習支撐體系。每章最後的「實例點撥」除了鞏固每章的學習知識外,更重要的是開辟單片機應用的視野;再加上「器件介紹」環節,補足單片機從基礎到應用所需要的知識;以及豐富的附錄內容可作為學習和應用單片機的強力參考。這便構建了一個完整學習單片機的支撐體系。
既授人以魚,也授人以漁。書中有充足的實例應用,可以用在單片機實驗、單片機課程設計當中。但更重要的是,這些實例前後都伴隨著仔細的講解,一個例子下來就能摸清來龍去脈。
敘述的內容全面、新穎、權威。嚴格按照單片機官方的技術參考對其進行講解,包括所有51單片機學習與應用需要的基礎知識。無論敘述的內容或是實例,都是目前世界上單片機應用的主流。
全書渾然一體。雖然每章各具標題,實際上互有聯系。而這種聯系如果在書中忽略不談,則會對理解和記憶產生障礙。本書在正文中多次有知識點的相互映射,這不但能加深前後內容的聯系,而且能深化理解與記憶。
我認為:除了最初提到的電路分析、模擬電路、數字電路、單片機外,應了解並掌握電子元器件識別與選用指導、基本儀器儀表的使用、一些常用電路模塊的分析與設計、單片機的應用、PLD的應用、模擬軟體的應用、電路板設計與製作、電子測量與電路測試。
電子元器件的識別與使用就不用說了,這是元素級的基礎,不過要想掌握好也並不容易,一些電子系學生畢業了,還認不出二極體、三極體實物、分不清電解電容的正負極等等,也不是沒有的事。還是一句話,多進進實驗室,多跑跑電子市場,多看看書。
儀器儀表的使用,大學的實驗課中你至少會用過數字萬用表,波形發生器、電源、示波器、小電機、單片機模擬機,至少要把這些東西的接線方法和用法弄懂吧。
常用電路模塊也是包羅萬相,各種放大電路、比較器、AD轉換電路、DA轉換電路、微分電路、積分電路,還有各種數字邏輯單元電路等等,只能說,大致了解吧,並學會怎麼去查資料、查晶元查管腳。最基本的,做實驗或課程設計中用到的各種晶元要弄熟。
單片機,這是應該掌握的。時下單片機種類繁多,但各大小企業用得最多的還是51系列單片機,而且價格便宜、學習資料也最全,故給自學者推薦。當然各學校開課講的單片機型號會有所不同,沒關系,學好單片機編程,學好了一種,再學別的單片機就容易了。
PLD(可編程邏輯器件),一種集成電路晶元,提供用戶可編程,實現一定的邏輯功能。對可編程邏輯器件的功能設定(即要它實現什麼功能)要有設計者藉助開發工具,通過編寫程序來實現,這跟單片機類似。開發工具可學習Altera公司的Quartus II軟體(這是該公司的第4代PLD開發軟體,第3代是MAX+PLUS II軟體)。編程語言學習硬體描述語言VHDL或Verilog HDL。
模擬軟體最基本的就是前面說的Multisim了,另外還可學MATLAB。其他的試專業情況選學或是工作後學。電路板設計與製作主要是用Protel軟體輔助進行。這在前面已有介紹,讀者應該也比較熟悉。
最後建議同學們積極與各類電子競賽賽事,參加一場比賽一個項目做下來,電子設計的一個流程和各環節的基礎知識就能串起來了,對知識的融會貫通及今後走向工作崗位都有莫大裨益。
以上這些東西我說得籠統,深入下去又是一大堆要學的東西。還是那句話,多啃書本、多實踐!清華大學出版社有一套「電子電路循序漸進系列教程」是按照上面我所講的那個思路出的,可惜好像還沒出全,現在好像只有《單片機在電子電路設計中的應用》、《電路設計與制板——Proetl應用教程》、《模擬軟體教程——Multisim和MATLAB》、《常用電路模塊分析與設計指導》幾本。另外聽聽你們老師的意見、師兄師姐的意見,問問他們應讀些什麼書,當然也不能盡聽盡信,翻開一本書我想你先大致看看他講得是否通俗,自己琢磨著能看懂幾分?我想能有5分懂這本書就值得一看了,示自己現階段的知識情況,太淺顯的書不用看了,太深的書也不要去看,看得迷迷糊糊還打擊自信心喪失了興趣。
好了,就此停筆吧。本來是要寫個書目推薦,可干癟癟的羅列一堆書目有什麼意義?還是寫下這些字,讓同學們自己去思考去選擇去深入吧,希望能對你們有所幫助。
最後一句老生常談也是我的切膚之痛:大學四年會一晃而過,要學的東西太多太多,不要虛度光陰。及時當努力,歲月不待人!