|
貼文很久了
' f) y+ l# b2 V' P# j: I4 }現在回不知道回了作者看不看得到 + M- f( s0 F( K9 E% {
5 [' Z7 b5 M) d# J% ~
假如想走底層一點的工作
0 @0 m6 @7 {' j+ p, r% o對於計算機架構可能要深入了解3 j7 Z5 S, q! m$ a/ c# [) t
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
' c v, P! x, m2 v" Y4 _, F& wx86也可,不過x86指令和暫存器比較多3 c8 d1 o5 |/ _+ K3 F
要多花一些時間閱讀( n" Q7 @& T/ y' V
1 y6 d1 k: y7 j1 o* n, V2 L
1. 從instruction set開始研讀
% @% y- [: O o$ ?然後試著找一些assembly code trace看看# E1 ~, \: R5 m% a
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考! U' H' h5 I. G6 S- N# q) ~( q7 L9 V
像是interrupt處理 context switch等等都有assembly code% ~# Y/ m m( N L" n6 O
看完之後應該對CPU有初步的了解
4 Y9 [3 z9 y8 s ^) j
( h; a# A$ `0 Z: U' D2. 接著把MMU的觀念加入閱讀
5 ^9 M" x1 b3 F$ ^3 D5 m. UMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
3 i5 O" F8 R7 i
3 s- Z+ t8 i4 C: s3. 找一些device driver study,目的在於熟悉irq handler, DMA control等; w) ]9 R6 E! t5 _7 s
等技巧,有助於建立整個系統的感覺。9 O* z4 g& S/ Y F% d# l# B
; G: E7 p# K+ ]; K& J# V* z/ R以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
! v. z( d! F8 T; ^* ba. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分). _" Y+ ~4 F" Q, y: [$ x" g
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
1 s7 X* d, W; p9 g, K+ c1 o+ w6 J+ j% q0 E# _- ^1 f
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的
8 M1 {2 O( M' L& C7 O, N1 h9 b2 ^機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在0 U. }; ~* Q1 w+ D* {. [8 I
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver, B5 A0 ^# W0 u1 S% X
效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
7 E8 G/ q' H: l4 A7 }* [performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|