|
貼文很久了
( V* z% m9 r1 { s( Q現在回不知道回了作者看不看得到 , i6 @( _' C, A7 e
1 }' k7 J+ l" O8 n) }: b
假如想走底層一點的工作9 s0 z7 v0 ^' W: Z2 g1 d, r7 P2 G
對於計算機架構可能要深入了解( A& m" n0 a, q' l" ?/ U' C& T( Q. U1 d2 J
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
" U) v" X2 D3 U# N+ E5 Ux86也可,不過x86指令和暫存器比較多+ Z$ q2 }& v; x6 T
要多花一些時間閱讀
_$ g9 e. m9 j# K. T G: L/ a2 B' {
1. 從instruction set開始研讀" b6 I r/ S3 F- c% b" q% k" O. s
然後試著找一些assembly code trace看看7 C: w1 h6 v" T% m9 @. L8 h
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考: f d0 l, J1 x. l1 p2 `# h7 \
像是interrupt處理 context switch等等都有assembly code
% x$ i& W% S/ Y' R- Q看完之後應該對CPU有初步的了解6 C5 X( [) i2 D' p" t3 a
! C- k$ T; u% @& h5 s2. 接著把MMU的觀念加入閱讀$ {. T# p. C4 x7 f) o' D# l1 t
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
& O4 I' m/ u, D' u. q; G- q- }$ A z
3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
8 X: Z5 t# |4 T1 g! H, f9 ]4 H# e3 i& O% ?等技巧,有助於建立整個系統的感覺。
' \: d& @" P: o. M+ U# l- P( d
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得/ O$ k {' e* N+ V" v
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)1 M" s1 o* Q i" z8 @" G |
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver). a) |1 `4 h; g0 e' I. Q# b
. O! ]+ C. \ Y2 K' I4 }
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的6 p# m1 C) N K
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
' \* |, R) z% C' A( o0 D z/ k一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver1 A$ H8 r# m! J! t" D4 o& {9 l
效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
/ n6 M- ]5 B9 o: l4 k) s4 eperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|