Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 12278|回復: 9
打印 上一主題 下一主題

[問題求助] 想當嵌入式系統工程師!

  [複製鏈接]
1#
發表於 2009-4-8 17:51:28 | 顯示全部樓層
貼文很久了
+ x1 d! V$ b" q" ]' q現在回不知道回了作者看不看得到  
9 J% i3 z5 D- ?+ e# R
4 g5 I9 @! q8 v4 p6 d) T& f假如想走底層一點的工作4 }: F6 U* `5 {- _
對於計算機架構可能要深入了解
; ^* J: M4 Q# x) G: P  N( b* J建議先對某個特定平台熟悉  例如ARM+Linux or ARM+WinCE
4 m/ X1 {$ }+ c' h# W0 `x86也可,不過x86指令和暫存器比較多
4 d# \$ _$ Y& H: b7 G要多花一些時間閱讀, K+ w/ _4 T! |

! }) }; v! i5 Z6 D* q4 N7 F  i1. 從instruction set開始研讀
" d/ O2 n' Z# B  ^; v- `: Q9 Q然後試著找一些assembly code trace看看
% D$ p+ i* f9 [2 M現在有蠻多書對於控制ARM的各種模式都有程式碼可以參考
& N( \( g7 ], G像是interrupt處理 context switch等等都有assembly code
9 y& e: G. G: o" b# g  X# G看完之後應該對CPU有初步的了解) m5 Q/ c! U" R+ W3 H

5 I; v% s5 U3 Z% r- z) P6 [! H2. 接著把MMU的觀念加入閱讀
3 |7 S) }! G  R! x. dMMU是個很重要的元件,理解之後對於深入系統操作有蠻大的幫助。
2 _! P' q5 n5 i5 R3 w/ p/ m2 A, k( O
, ?* M, c8 W$ V) z3. 找一些device driver study,目的在於熟悉irq handler, DMA control等# c- L6 U9 T2 U, E9 [, I
等技巧,有助於建立整個系統的感覺。" \% J/ H$ l0 e6 C7 |6 S8 ^1 R" P
2 X0 `- Z+ T' u: o! r% E' N
以上會了之後,混口飯應該不難。要變成超級工程師的話,就得  q" B& e9 j/ N" c" Y0 U. I
a. 熟悉CPU進階功能 (通常是慢慢演進,port OS需要懂這部分)
3 p9 P& d  h, Z0 V% _% _b. 熟悉硬體介面和特性 (規畫系統非常需要具備,也可以因應不同架構修改自己的driver)
7 g; F- O' [5 H' E$ h+ c0 v- k& h
: _& e, }; j3 T/ U0 p' _因為CPU現在趨於複雜化,通常都帶有一些特殊功能,像是cache, write buffer的+ r* s/ y0 ~9 `& B7 E
機制等等。而熟悉硬體介面和特性的好處是,有時候因為硬體平台整體規劃不良,存在3 d" u* `4 c5 V7 O" W, X6 C
一些bottleneck,最常見就是某段memory bandwidth不夠,這些對device driver
! E% y5 ?- _" k, a1 C3 C: b效能有很大的影響,如果只是單純懂寫driver的技巧,有時候雖然寫出很精簡的driver,5 w/ |  n0 m- ?6 j
performance卻出不來,要適時地修改driver架構或使用其他讀寫方式才能讓系統表現更好。

評分

參與人數 1Chipcoin +5 收起 理由
masonchung + 5 言之有物!

查看全部評分

2#
發表於 2009-7-14 16:49:24 | 顯示全部樓層
補一下知道的wince狀況
% ~. `7 I% }8 hwince 6.0 很難說他是比較容易或比較難
* t2 t1 R+ c, r: j/ S因為他還是沒完整的source code (據說逐步開放,不知道現在如何?)
* ?7 |8 l1 J( `3 P6 s; I大多就是把他開放給你的 interface 補起來就會動了
! ~4 Z$ \: |! M% x( ?* ?* L缺點是他的building sequence和dependence 做的不夠好- j& g) _; A9 x- k6 l
有實會只改了一個檔
- x& x. f1 z) l) v7 R2 u. y按錯編譯button就變成整包重新編譯  等到海枯石爛才編好. y/ d1 E6 V! \$ }
不然選擇只編譯某部分  結果發現你改的那個檔案還是沒編譯到
% q5 B& c  w+ k  j! h! v2 h一開始就要熟悉他編譯的過程  自己打指令的話  應該會省去不少等待編譯的時間, z; {9 }6 p+ M/ g/ e+ G8 K
相較之下,我覺得Linux可能有比較清楚一點點 (至少還有code可以看)/ b* s: g8 p$ t% Y- `" n9 r2 q6 V
wince可能適合有同事一起討論或帶領9 P3 R. u9 U0 @7 N& r/ V
不然就是要先熟讀相關的文件比較不會不知道自己在幹嘛~
8 n/ h3 a+ p$ b2 J. N' h+ c$ x' h; \5 k5 x3 z+ P) b  A) X
簡單的對照是, w& |* j* @. k" m% B! |1 k
wince   <---->  linux
3 }6 j& i- ]: N0 _8 T6 N7 s7 reboot   <---->  uboot   (bootloader)
! B3 N: K  p, T* u- u8 Gnk.bin   <---->  uImage (kernel, nk.bin還包含一些file system.): E9 F$ m" U9 a) U& c0 ^% ~
5 b  R3 ]' ~2 ^. H" N+ g9 N  H
基本上linux對技術人員來說$ I  L' x* X5 T1 w5 L4 ?7 |
技術上的學習和收穫會比較完整
$ W2 C2 _* [& [) S; v  h( zwince可能比較偏向純粹的產品開發應用
6 n  k" d' k9 {% g) R4 E不太合適當作學習平台
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-13 05:07 AM , Processed in 0.109006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表