|
貼文很久了
/ G* K& i7 a- @+ ?現在回不知道回了作者看不看得到 1 P. Z5 x/ P( `3 P2 K5 n
$ A1 f. O; g. s8 X1 ~! z假如想走底層一點的工作( l8 t' Z# I) Z1 H7 R% r( R
對於計算機架構可能要深入了解
3 [) y5 l o: {. |( e: v建議先對某個特定平台熟悉 例如ARM+Linux or ARM+WinCE
) \3 _' \3 `4 W. v: H+ Sx86也可,不過x86指令和暫存器比較多
2 l- E. x* L; O4 X/ T, K J要多花一些時間閱讀7 h) V4 v; @+ p6 |, p
4 M9 y1 c8 Y/ h M& @! l6 T! C& p1. 從instruction set開始研讀
5 K; {2 s1 ^# x& {' _2 w8 v7 K然後試著找一些assembly code trace看看
3 m4 ~# @' g7 r) C4 h8 r- t現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考% g: _. b5 E# O
像是interrupt處理 context switch等等都有assembly code
! P8 n8 ~" w3 ]看完之後應該對CPU有初步的了解' z, L6 n0 E+ v, t% |
3 p8 D8 ~2 j. `, Z& t2. 接著把MMU的觀念加入閱讀
2 r9 H& ?3 f9 y! c$ j, dMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。" Y8 h) g" m; \9 j. d- |. Z& u
6 h& h* U; {' Z+ E2 F( O0 X) L- f3. 找一些device driver study,目的在於熟悉irq handler, DMA control等( ]/ c* j5 G; L* L* O* H
等技巧,有助於建立整個系統的感覺。
: m! R/ T3 w9 t, T: {( K2 S$ N$ m
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得+ e! L' O1 G# |5 z3 c# z" f: ?
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
( D% G) Z' S* C3 p' Gb. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
2 N5 {/ }) D1 S3 p! R' [ ~3 t9 `" }0 |" m- n3 P" \+ I
因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的: _% E; q" n g% P7 n2 O, Z3 g
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在
4 ?& O* H: }: x; K, z+ o一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver' C- o$ ^9 v/ F% n. N- E0 H
效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,
; Q2 U+ H3 C0 J, Nperformance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。 |
評分
-
查看全部評分
|