|
貼文很久了
2 |& g7 d3 @ \ d' i現在回不知道回了作者看不看得到 ' |( A. i8 h+ m1 }; e
- t$ H$ S+ q) x2 _" G! ^
假如想走底層一點的工作( i2 y* t8 u% W, z. ^" g
對於計算機架構可能要深入了解) n& E, D2 b# A% e" A
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE; @. e g7 A7 j/ K6 i
x86也可,不過x86指令和暫存器比較多5 N6 ?' Z+ A* a5 |
要多花一些時間閱讀
, [& c* @& p5 j5 N9 Z
& ~1 x+ B3 o' M3 @8 R1. 從instruction set開始研讀' \2 u3 n; d7 [5 A& S+ I2 B
然後試著找一些assembly code trace看看. o1 R3 ?* o2 N& s# d/ Q
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
# @+ U9 E7 C% G; i% t像是interrupt處理 context switch等等都有assembly code0 ]8 ` F2 J# `& B
看完之後應該對CPU有初步的了解- \: M! R% v7 C; G) x1 R8 m
! \& I9 n, l3 c, c4 p4 X% N( Z
2. 接著把MMU的觀念加入閱讀! e! g3 E/ n0 X" H+ I
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。( u9 u) |4 v) k# ^, A. O
0 v# ?2 s2 x$ R! P0 @3. 找一些device driver study,目的在於熟悉irq handler, DMA control等; W( A( Q* x8 p& w1 g' E1 G3 l
等技巧,有助於建立整個系統的感覺。
' n9 `) A5 N* k, j% q' |# v) b: x' O- N# l' a( g* d
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得+ L- ~3 e$ P9 J2 a7 Q' M4 a
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)3 J% N! D5 Q; v1 a
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
1 D9 A8 H6 E6 b3 K. J% S! q% A* E9 w) @3 `$ N$ p/ R
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的( \0 ~$ O0 z' \' B O6 \% X, r* e/ W
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在# F5 R+ O3 F3 Y( K* b" r
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
8 y1 G! e$ Q3 H7 p* E效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
) W3 U4 i9 x! H( k% V$ C5 vperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|