|
貼文很久了$ h! n2 @$ C( S1 q4 {; |
現在回不知道回了作者看不看得到 6 f) a6 C q' V# u1 a
: Q8 G) i3 y% C3 k3 ?- W, Z
假如想走底層一點的工作
' y6 E3 n' H, Q8 M( g3 ? r對於計算機架構可能要深入了解
( S; w2 g- K4 V- M建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
* n9 e! S% y# N% g5 n( [. y1 H5 {- sx86也可,不過x86指令和暫存器比較多
, Y$ S {# q! i9 ~" A$ D要多花一些時間閱讀- F p/ C. @0 ^3 i# Z
# H0 R7 }4 U# _/ E6 s, @1. 從instruction set開始研讀
: a9 v6 M. o: D' m( @; i然後試著找一些assembly code trace看看
" \. k. w1 d( H! {6 d; c) ^現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
+ V1 z! W" f$ d7 ]4 o5 ?像是interrupt處理 context switch等等都有assembly code. W* ^5 w& i5 T# o% Q% d
看完之後應該對CPU有初步的了解
+ O" T/ K! B" f. k/ \
! V2 F, T3 }+ M5 G2. 接著把MMU的觀念加入閱讀) \) B! _4 U' Q: s* m7 ^& X
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。2 F# W* E# f; j7 R
% Q6 B" J& N: @& L, e, H, q# Z3. 找一些device driver study,目的在於熟悉irq handler, DMA control等( J* l$ B0 P5 E
等技巧,有助於建立整個系統的感覺。% o/ _; ~. G5 _% l
" h/ S1 W) e L4 P, i
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得" Y, r$ c% R* X6 v6 z
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)7 Y; n$ H+ [+ U2 [( u- Y
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)6 R2 W M# e' ?1 x1 ~# p' u. F' _
1 b& Q6 }0 g9 Z, A+ q$ v* Z$ E% H
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的
& W9 T9 n0 t2 ]4 _5 q, C9 h/ q機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
$ R( o! |5 @9 q一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
/ k) Q& ^# U8 h( q效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,6 t& U. n& S" c, U
performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|