|
貼文很久了9 b7 x b, i) `) |$ ]# {
現在回不知道回了作者看不看得到
' s4 Z, B4 T- b* I) F, [# i4 n- \
* C& f& D( I8 S" B' y$ L3 z: k4 H假如想走底層一點的工作7 D/ q) @+ E6 \9 D4 |4 t8 C) ?
對於計算機架構可能要深入了解! y& ?, l* L H5 B) a# `, }
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
) R( U- P. h3 d/ J b+ H0 px86也可,不過x86指令和暫存器比較多4 H2 @& L, F1 N) U# V' r# f
要多花一些時間閱讀
5 q0 A" }1 Y) i. f* g4 _- D# D4 n& M% i: k
1. 從instruction set開始研讀3 S( p5 r( T: A Q C" P4 d1 O/ j0 `
然後試著找一些assembly code trace看看9 v8 d8 Z& W# y+ R+ P# [* q
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考6 Q8 `, x: \0 n
像是interrupt處理 context switch等等都有assembly code3 e) P) B: W# f& C+ v" h2 A Y
看完之後應該對CPU有初步的了解/ z7 [( M7 @7 n( ^% H: l$ Y0 _7 Y
* b% O$ ^4 V+ p$ V9 M. d- ~: r2. 接著把MMU的觀念加入閱讀8 A( `4 V1 c6 f1 w+ J
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。 k4 G+ ]6 I: ]; l8 h
( z) `8 Q# ^) G' T( @
3. 找一些device driver study,目的在於熟悉irq handler, DMA control等, U( u! z; B: i k" n/ j9 h
等技巧,有助於建立整個系統的感覺。5 w, y* O; ], o. j" k, d
b7 J) k* a% j" U以上會了之後,混口飯應該不難。要變成超級工程師的話,就得+ z& W) E7 i; l% l
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
+ v) W% r+ z- G; ~b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)- {: v2 L* M0 F
% e+ F( w! F9 X$ M) q
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的
" n8 O4 V. e" L. W4 [機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
1 m y' I3 A, x a6 ~& r一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
! Y0 O2 `; ?# C. X3 X: l# P效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,+ d( }9 W D9 k+ ~
performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|