|
貼文很久了
/ l. o( X/ {/ E7 Z% N5 B現在回不知道回了作者看不看得到 $ G" f2 z& p0 T8 i- \/ W; r5 a2 \% e
& q. C5 m, R* n: F& p; ~0 v4 @0 i8 s8 ?假如想走底層一點的工作, O* e. w5 D! S# l, `! G- c
對於計算機架構可能要深入了解
# n& Y2 |, ~6 K6 m0 K1 w建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
1 Y3 V2 y% X: {1 Ix86也可,不過x86指令和暫存器比較多3 J: ~: ?' J$ C+ D+ [ e X
要多花一些時間閱讀
1 G& X1 [6 h2 c2 S( X
' M+ v* h( F! k: X/ L( R1. 從instruction set開始研讀
e/ z2 f! {8 b然後試著找一些assembly code trace看看+ ^6 M. {+ a0 |& H. q# J6 y- P
現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
' O. R% |* d+ K* {2 f) J9 J- _像是interrupt處理 context switch等等都有assembly code
% [6 n, ]2 M8 d m) M* u* [看完之後應該對CPU有初步的了解: C) X) E7 b$ t L7 Y4 ]
: p; X v) M6 n0 y
2. 接著把MMU的觀念加入閱讀
3 X9 Y q' T1 a; |" {, a! w5 JMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。& T. f0 {# N2 m3 x
1 ^% a( h# f3 o
3. 找一些device driver study,目的在於熟悉irq handler, DMA control等; |4 h- m5 P* M, S2 E9 T. w+ [
等技巧,有助於建立整個系統的感覺。
1 w! x. N* G( d) a* N9 `5 ]' @) L6 J+ Z# S d1 H1 C
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得
- h8 k; K2 m9 u2 F* K: f7 ?a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
: E3 f6 z# i ? S7 U7 xb. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
) y: ^/ b1 W" W, o) g
0 q f* B) M! F因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的/ x7 t" c" g x" B
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
- a: A( j q6 d% {3 d: u一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
$ C3 Z8 K2 f& Z, Y4 x效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
( d m$ s+ k6 ~- r7 t0 s" E8 U s. lperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|