|
貼文很久了1 H# [" K o: r* d6 C( X9 r
現在回不知道回了作者看不看得到
; \3 J, z$ ~7 Y3 K- g* ^: n6 ~$ W. A- F" M% ?
假如想走底層一點的工作
& E* f3 a( \# N對於計算機架構可能要深入了解' e6 J; A- ~# F
建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE9 e6 _4 V, ?$ M# d$ i. ]
x86也可,不過x86指令和暫存器比較多
- ]/ U- A: z& ]# r. \* E" \要多花一些時間閱讀
5 p& f9 R/ ]2 s0 K) M& G+ k( i& `. J3 T6 D. N$ m) \, K0 l; u+ V
1. 從instruction set開始研讀
' Z* `9 C4 ?- x5 ?! C然後試著找一些assembly code trace看看0 y; K6 L$ F; ~ b" S& r* Q
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考- N8 Q8 k$ y2 E) v6 O- I) P
像是interrupt處理 context switch等等都有assembly code$ ^" n' `% q- _% K3 a
看完之後應該對CPU有初步的了解
2 V( E8 ? ~# d1 a% Y( m: O( ]9 y% t/ D, j% n
2. 接著把MMU的觀念加入閱讀% H8 v# b) p' k/ A8 t2 V: l# J! J
MMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。. c) G4 [, ~; f- S$ k8 ?3 `
: O- F# i+ V. J+ P. k3. 找一些device driver study,目的在於熟悉irq handler, DMA control等
- @6 j4 Y F# [* t0 M等技巧,有助於建立整個系統的感覺。
( M! X- b5 ]1 o3 t1 H/ g2 E4 Z. t2 Y" u0 y, A6 B
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得' P6 d0 S9 Q' J' o' C
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)/ R9 l+ X2 s5 r1 q! y( _
b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)% Z8 g' q4 m8 P1 V8 E
- T! a5 ~) c. H- a8 v因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的$ E: O) M/ s6 ]5 o0 q* D6 H: S
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
5 {( B4 L: W* b4 ?( b, H& {6 W" l一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
3 N2 x2 O+ l; k4 [; S6 ~效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
7 E# V0 Z/ ?' Q3 l7 [performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|