|
貼文很久了2 o' e- x. O! v, E
現在回不知道回了作者看不看得到 . v0 K# r2 J: I) r3 d u
c. P' w4 k w5 Q* M0 }; U
假如想走底層一點的工作& B ^7 x2 X! r( ^
對於計算機架構可能要深入了解
4 y1 n4 t5 G. D6 X9 p1 N0 E建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
) {% N6 }5 }* r# t4 Mx86也可,不過x86指令和暫存器比較多
: `* d* E! M0 M0 e- C" b& s' Y要多花一些時間閱讀+ P) A6 c: T# v a
6 B- i2 e& n' C2 K$ w. \8 W! j4 B- E1. 從instruction set開始研讀8 y; k% b. c* g7 p, a/ h4 O
然後試著找一些assembly code trace看看
# [+ X. t& U; K現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
# N( C4 h: V' j. [. Y$ `( l: S像是interrupt處理 context switch等等都有assembly code8 B4 _; L- N. T& w
看完之後應該對CPU有初步的了解9 ~% f# m- u, a( D6 N
" J( r; P) i1 i9 C) {
2. 接著把MMU的觀念加入閱讀$ H1 S/ e+ c0 }! |1 i+ n3 B
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
/ p5 i3 [. C+ G& P: N$ m
& R2 L+ J! I4 p3 o3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
4 o# ~; N9 W- f- k% H& d5 f! P' J0 a等技巧,有助於建立整個系統的感覺。
" [, Q% T/ K1 }& n
0 W8 Q" w7 r1 L6 n7 V以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
/ e; o2 |! f6 `6 R D4 |* h9 @a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)8 y7 p! j$ n& N9 x1 b( {2 r
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
1 O: S. ]9 r' U$ p4 h9 f6 x; o8 G
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的
6 {) g G6 g3 ~, c$ ?機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
% a! }; [/ @4 P+ D一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
) X7 ^* s7 v5 q8 T: _, l1 ]效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
0 p5 I1 d& T0 ], Eperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|