|
貼文很久了
5 N6 R4 V- B6 |現在回不知道回了作者看不看得到
0 t2 a" k, K) p' V8 m
3 h; T. J6 e( U6 e假如想走底層一點的工作: r$ d+ r' e P0 w$ n
對於計算機架構可能要深入了解
2 p/ l7 |9 w0 C6 }* A- N9 `2 U5 S建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE: a: |! _7 k/ X
x86也可,不過x86指令和暫存器比較多
. P7 c2 }, |" f. N4 ]/ Q$ B要多花一些時間閱讀
& n$ B2 J; d; m: n
+ |3 u6 Z6 z4 N* C! D0 J! s7 ]1. 從instruction set開始研讀2 H" X6 A" I. O; M3 }
然後試著找一些assembly code trace看看4 T S( E, s+ E5 t! x
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
* B9 [, M y$ h9 ~像是interrupt處理 context switch等等都有assembly code
7 j8 | q& B5 S: B" p看完之後應該對CPU有初步的了解/ B2 `! K' x7 }3 i& O! R
( p, S' `! X& }) ~4 l1 u* R" w( e
2. 接著把MMU的觀念加入閱讀- ^7 k" F# G: M
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
5 u' E2 f! x% T- D" d
# y% }" Y; r! \& b3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
/ }1 W" T# {4 Z5 P" z6 y等技巧,有助於建立整個系統的感覺。6 G( E7 ]% P9 E# I* T
9 E$ y8 l2 n, L2 @
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得( |$ b0 j4 ^; @) n
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
1 r& S3 n0 X1 E; Y/ d; ?b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)$ n" A, F8 p z0 `' R5 D
2 K# V1 d# D. F; U" L4 o
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的9 Y5 z. O8 n, t6 {+ ?- C% [6 e3 U
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
8 S- x, Q- S. w* E1 w, u一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
8 K2 h3 C; _# X6 E# E3 Z7 I( I效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
7 {( ]/ b9 E( h$ D+ ~; O6 ?: vperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|