Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 12234|回復: 9
打印 上一主題 下一主題

[問題求助] 想當嵌入式系統工程師!

  [複製鏈接]
1#
發表於 2009-4-8 17:51:28 | 顯示全部樓層
貼文很久了
  B7 [& U% T$ a現在回不知道回了作者看不看得到  
. Q! x! h" O- J: I0 X  d3 B2 r+ G3 \8 C/ X& |
假如想走底層一點的工作
! y4 e: B9 T$ `: i. X對於計算機架構可能要深入了解8 _' g5 L. u+ m+ @: G! b4 K6 Z
建議先對某個特定平台熟悉  例如ARM+Linux or ARM+WinCE
: a- p$ ?7 N' Hx86也可,不過x86指令和暫存器比較多1 L) w5 T& e+ I2 K& r* X7 C
要多花一些時間閱讀( t/ o0 Q  @  x. m% N

$ o1 A6 n7 Y; W# g# r4 \: M1. 從instruction set開始研讀
3 e, C, Y+ U% Z" |: e然後試著找一些assembly code trace看看
) J) g! h8 `0 D' T3 P$ v現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
3 P# W; J: ~6 O' Q. [( \- i7 U1 O像是interrupt處理 context switch等等都有assembly code
" [2 ?$ ^& R; |. q- U& R  W看完之後應該對CPU有初步的了解% O$ D/ O" u( ]' F0 E& j' F

  t& p4 [  k. Y+ [9 D1 k2. 接著把MMU的觀念加入閱讀
6 s& a* g4 Z" n1 O1 F* C/ SMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。, ^; T5 A* y- G) a

' ]6 m; c4 ?  i) M3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
. Z7 `2 M2 `- G" C- q, k6 G  C等技巧,有助於建立整個系統的感覺。
$ p0 L3 q3 F. G3 y9 d4 Z
2 ]9 A- \3 ]6 D+ }. x0 `以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
5 `  h6 L6 W& ]3 @6 Ya. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
- M$ j  H5 \* lb. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
2 j' z! Y2 P0 }* T
; \- O2 f% D+ _& v! d) o因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的; R7 o2 U7 I- T- }; C$ m
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在1 O8 c0 e2 ^- r+ z+ D" f) W& u& ~# ~
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
9 d' J9 Q; f, W: X5 a8 w+ \效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,  T# ]( F! F/ N' f; E
performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。

評分

參與人數 1Chipcoin +5 收起 理由
masonchung + 5 言之有物!

查看全部評分

2#
發表於 2009-7-14 16:49:24 | 顯示全部樓層
補一下知道的wince狀況3 J+ O6 b8 f, E0 y
wince 6.0 很難說他是比較容易或比較難& V; `" D- ~9 W0 _# _
因為他還是沒完整的source code (據說逐步開放,不知道現在如何?)
5 \* L' E2 S4 T7 R大多就是把他開放給你的 interface 補起來就會動了3 K6 X/ i' J5 U2 C5 i" q
缺點是他的building sequence和dependence 做的不夠好# }0 o: [6 q6 L4 I1 z8 x- Z3 w" q' F
有實會只改了一個檔  K( {6 m2 _  J  ~
按錯編譯button就變成整包重新編譯  等到海枯石爛才編好
1 U, x, ^/ ^0 K3 m5 T( c. m不然選擇只編譯某部分  結果發現你改的那個檔案還是沒編譯到
, L) w; B% n" l! Y% c. B一開始就要熟悉他編譯的過程  自己打指令的話  應該會省去不少等待編譯的時間! v. n" {5 k# F3 L& C
相較之下,我覺得Linux可能有比較清楚一點點 (至少還有code可以看)
  d' @" ~$ n+ e7 |. W  iwince可能適合有同事一起討論或帶領
+ l. V4 O) ]/ I: D/ \  A1 w# I不然就是要先熟讀相關的文件比較不會不知道自己在幹嘛~
: D0 U$ y( m$ V6 @! l  t& H
% [' \3 r) q& m; z6 ~, @: q簡單的對照是
( R* \( B) M3 C6 k8 k1 k* g3 hwince   <---->  linux
) T1 J0 ?: ?9 N: J; n) l6 e% [+ I1 ^9 zeboot   <---->  uboot   (bootloader)
8 v. W. a8 h! Ynk.bin   <---->  uImage (kernel, nk.bin還包含一些file system.)
5 S, ], u9 z; F7 j3 z  f  H3 t/ r0 X1 O; U
基本上linux對技術人員來說
* n5 R' f. y* S, X2 o: D( K7 Q4 u/ R技術上的學習和收穫會比較完整8 r6 n3 t+ X" I
wince可能比較偏向純粹的產品開發應用
% p" O8 j6 ^0 c5 L7 d0 M$ h不太合適當作學習平台
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-16 11:39 AM , Processed in 0.101513 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表