Chip123 科技應用創新平台

標題: 想當嵌入式系統工程師! [打印本頁]

作者: tim906002    時間: 2008-11-14 07:22 PM
標題: 想當嵌入式系統工程師!
對於發這篇文,如果有不好的地方,請各位大大給予指教!
+ g1 ]) _( E, y* e8 X# u9 s. Q$ P4 X. S- |
我今年剛畢業,想進入嵌入式系統這個領域,是不是到外面去上電腦相關的課程是最快的學習途徑?8 Y8 E) _4 O" |+ e3 r
我再學校時,有玩過DMA2440開發平台,核心是ARM9的,當時是把廠商提供的source code拿來compile,並修改程式碼、除錯,
8 j) E( F4 E4 }% i把許多的實驗範例整合實現在touch panel上,並以點選的方式來執行各個程式,我也有去上過windows ce 6.0 device driver的課,讓自己熟悉visual studio 2005的介面。
" W8 l; H4 O7 h2 X# b* i& N) w) P  U
3 U6 t, _& U2 ]% {" V因為看到外面應徵嵌入式工程師的條件都是要會C、ASSEMBLY、有Embedded system開發經驗,! p& R! t  Z, }0 M, W8 i! W! r
我知道自己缺乏的東西很多,但是卻不知道從何下手,而且面對即將要當兵,想利用瑣碎的時間來充實自己,卻不知道如何做,
6 @2 G. r! `" S: a+ r) K) ~) Y只是在看很多文章,所以才會想要上來發文,希望大大能夠給我ㄧ些意見,在此感激不盡.
作者: walltsou    時間: 2009-3-11 08:26 AM
先從你最常用的工具先熟練做起。像是每天都用C,那C語言就要精。有使用到O.S.,那作業系統的知識就要會。有幫硬體除錯,那計算機組織就要會。
( ]# U! Y: W: R. J& M/ x1 l不可能一下子全部會,遇到什麼就精進什麼。但其他相關的知識有了解就好,以避免新工作一時遇到會過度吃力。
作者: gogojesse    時間: 2009-4-8 05:51 PM
貼文很久了
# i7 q" N1 e) M. W現在回不知道回了作者看不看得到  
6 U6 a5 g/ F. P. R* |
  P$ X+ @6 [! Q( r1 c$ i/ g' n6 z假如想走底層一點的工作, e% o% R/ w& ^& O, x
對於計算機架構可能要深入了解% l% g4 c$ k; i' E, c6 `
建議先對某個特定平台熟悉  例如ARM+Linux or ARM+WinCE+ e6 V* e( F, T6 R; {; |0 Y
x86也可,不過x86指令和暫存器比較多: `0 W/ ?; C2 l6 j+ `) \; G2 S
要多花一些時間閱讀
. {7 |2 m/ O; N0 v3 U; ?- x- Z& M5 b, n; F$ t# z& h7 _
1. 從instruction set開始研讀$ I  E2 w/ f+ C7 l
然後試著找一些assembly code trace看看. h' A' D) J3 Q( D  ]: c: _2 ^
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
- t3 A1 c/ }5 M9 ]( y9 y+ J  f. Q像是interrupt處理 context switch等等都有assembly code
% d! q5 f4 v7 A1 `看完之後應該對CPU有初步的了解
8 F4 R2 t8 r, G7 |+ w% t% B# a$ f7 J+ i) j8 O
2. 接著把MMU的觀念加入閱讀0 x0 h2 B! ]: b( \( S) m
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
! @; a8 t2 x9 q6 H  g, M
- n0 Y  k! p/ l4 y9 }4 i3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
2 [5 u3 {9 L% Z0 m6 P/ O2 @: ?等技巧,有助於建立整個系統的感覺。' `* ]: C" q5 n6 f0 |' m/ ?

0 C# w( @8 u3 t- S4 n以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
! Q+ |: B8 [7 m0 P4 O: g, `a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)5 a! a4 E7 {( V# |
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)3 V9 j( G% [( a7 i) d

6 w1 p! E' \3 F$ y. @因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的
0 O' t5 }. V& ]8 X! j8 N( X機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在0 |$ P. f- r, W, b8 H
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
( s& E/ n) Y) N- `效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,5 N! {" R; P* C6 k' R* Z+ K% _
performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。
作者: kkbbs    時間: 2009-5-11 02:12 PM
不是打廣告
0 _' e) v$ Y, a/ H  I# F; u! S3 Y  j% k! C$ L0 @
但是這本書是不錯的入門書* W0 z0 A( c) @# R
8 t- i5 B7 C  Y* n- ^0 z
# 現代嵌入式系統開發專案實務 -- 菜鳥成長日誌與專案經理的私房菜
作者: gogojesse    時間: 2009-7-14 04:49 PM
補一下知道的wince狀況
# B: Q( r8 F: |/ [* m6 fwince 6.0 很難說他是比較容易或比較難9 D% L+ f' [( |7 U# o) y
因為他還是沒完整的source code (據說逐步開放,不知道現在如何?)
: F- J- p# M, D大多就是把他開放給你的 interface 補起來就會動了
1 w  d! K9 t, r7 x4 d/ V缺點是他的building sequence和dependence 做的不夠好6 F9 d' m% _; K) S# g1 Y1 ?* }
有實會只改了一個檔
8 Y' q( h' E4 H/ o% E, h; ^% z按錯編譯button就變成整包重新編譯  等到海枯石爛才編好
1 C- b& O, z- X5 b) I7 ?不然選擇只編譯某部分  結果發現你改的那個檔案還是沒編譯到
; S* I% k4 Q# f4 ^一開始就要熟悉他編譯的過程  自己打指令的話  應該會省去不少等待編譯的時間) i+ M. E! J$ s% _/ e
相較之下,我覺得Linux可能有比較清楚一點點 (至少還有code可以看); |, Q4 j' r' C* _* ?
wince可能適合有同事一起討論或帶領
0 c9 K  z7 q) t不然就是要先熟讀相關的文件比較不會不知道自己在幹嘛~
0 W/ q/ S  W) t' P  l+ u7 H$ H
. L* Z: W  }; o簡單的對照是) @- r5 F* v# K) N
wince   <---->  linux% A! t  C2 l3 |
eboot   <---->  uboot   (bootloader)% |. s6 s1 F3 Z& |
nk.bin   <---->  uImage (kernel, nk.bin還包含一些file system.)
0 G2 ~7 e4 l8 b8 E# T7 j* Z
7 K. d8 A! s0 K7 R' J0 i基本上linux對技術人員來說9 T3 f0 ~; l$ a9 {/ R% @
技術上的學習和收穫會比較完整4 ^$ E( K. U* d3 }$ R
wince可能比較偏向純粹的產品開發應用
" S# b! q9 c* {; m+ c/ V不太合適當作學習平台
作者: jiming    時間: 2009-9-23 08:18 AM
銘傳開課考微軟證照 軟體免費4 U% U: {' P  J6 _  Q( z
聯合新聞網 - ‎1 hour ago‎
+ W- H3 }; U# ?' u; M3 L- J- V5 N, C0 A5 {8 ^
他指出,目前國內嵌入式系統軟體工程師的職缺,仍有很大缺口,根據人力銀行統計,此類軟體工程師職缺約3000多筆,但求職者只近500人,「薪資更高達3萬5至6萬5元」,考取證照不但獲得就業保障,也提早與職場接軌。
作者: sunny.yu    時間: 2010-3-18 07:48 AM
系統工程師在美國被視為最佳職業
1 [9 W9 |5 k% S7 Q; `ZDNet Taiwan - ‎2010年3月14日‎
0 _" g. z" g7 j7 E* B
, O% t# M! {/ P& ?! E& ^& @如果你是位系統工程師,老是懷疑自己是否選擇了對的職業,那現在有個好消息。根據一項調查顯示,系統工程師是美國最好的工作。 Focus.com可能是在世界各地都能聽到類似的牢騷抱怨的刺激下,做出了這個最重要的調查任務。 該網站一開始審視超過七千個工作,然後將焦點放在 ...
作者: blueimagestar    時間: 2010-5-12 06:13 PM
我也是一個想當嵌入式系統工程師的人,覺得必須先把pc 的os 改為成 linux ,
6 Y* a9 {9 B7 _, _) B0 t讓自己熟悉linux 環境的基本功能,特別是文字模式下指令及工具,
- w+ u, @" Q! m+ J1 k% }環境熟了之後,自然就事半功倍。
6 G( _# [% F( F7 e. L1 x一般嵌入式系統工程師~應該以Driver+OS 修改為主要,
8 k! R( ?7 _4 Y* N+ ^' g* _) l所以,必須了解OS的運作原理、Driver的架構..
7 c& c2 N3 Y9 H" U7 J% L7 T若是從應用程式設計的事,可能是先把C語言搞懂,了解視窗軟體開發環境(Qt、Gtk) 8 O4 ]4 m! |; J3 U# [% w
我覺得win ce 應該不太需要driver +os 維護吧
作者: walltsou    時間: 2010-5-17 06:31 PM
將PC O.S.改為Linux?只是稍為靠近,並沒有命中核心。
- I  H$ }% |' m# D) Y$ |- ?想想嵌入式最常做的動作是什麼?就是除錯。, l/ D% i; E8 @5 E( X  }  O
除錯又分硬體及軟體。
9 t  a3 R' S) V% F, F  z硬體除錯所需的知識是微處理機架構及對CPU指令的了解。% g0 v( O" o" n( o
軟體方面,我認為是系統程式。包括每天摸的Compiler,Linker,Loader。比較好的系統才會有O.S.或是debuger。系統程式熟了,根本不會去依賴作業環境。0 q+ i( u; X, Y& v& f
不過Windows有許多動作都偷藏,Linux則比較開放,這點是沒有錯。
  `( I. n2 }' v- @6 K2 j0 j可是作業系統是公司選的,它用Windows你又不能用Linux幫它編譯。還是不要太強迫自己換。




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2