|
貼文很久了* N8 Q* o0 C9 B8 I" d, p% X
現在回不知道回了作者看不看得到
. a2 ^& w' `( A m7 O5 t. O
& Y& r3 \ [, [/ @4 [假如想走底層一點的工作2 Z* t& u B: ]& Z
對於計算機架構可能要深入了解# U0 m* d" }! H# ~9 p! Y" ^& r; w. y
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE, s9 a% w: Z# ~* Z, ?
x86也可,不過x86指令和暫存器比較多; o( u: H4 q7 N* o% }
要多花一些時間閱讀
% z$ k# x; A( j) H3 b6 G }! J. H2 m* m& u" S" ]
1. 從instruction set開始研讀$ \1 |% H. S& J, \! |7 G
然後試著找一些assembly code trace看看
1 R. s$ [7 W' d& @+ H現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
! _* @ Z( N* t! {$ G% w像是interrupt處理 context switch等等都有assembly code
. B2 t3 L ~! w看完之後應該對CPU有初步的了解
, j' G1 c2 P5 y3 G: v% a: |2 i) ~- k/ n8 v) i k& Y$ o
2. 接著把MMU的觀念加入閱讀
4 B% `* f; @, g5 ]9 jMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。8 ^$ o$ V0 n' f0 i
4 N8 u; H/ M- ], Z6 N' g3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
$ V5 H. n& {5 G" d等技巧,有助於建立整個系統的感覺。
/ H. C, I& g, P. x& \
3 a1 F: A; `; l以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
* ]0 F* R; r3 B1 ?, {a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)# T( o; q U! L0 y/ @) K" \
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)4 K# s# O. X- h. g: z
5 C3 k( y! \2 p% Z6 f因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的+ W, |5 l$ V: H2 H, V8 l
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在# K; c# p4 f- |0 K9 W) S
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver1 n: ]" S& j9 n, X$ d' }, y
效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
/ I# i2 m; b- w% c! Lperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|