|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 b5 ~% l. p9 V
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
) c1 k q$ O, I(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) ! I- q0 a* F9 b, c
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) 8 G# v) i* ` s8 {* ^+ S
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 , F& l+ `, Y& g( D7 b8 I
从事嵌入式软件开发的好处是:
: b3 O) H/ P5 y# w(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 3 @5 r0 a5 }7 e( @! W7 ?) ]: c2 ]
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
& \- C) u+ m6 _(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
3 N7 j4 I. K3 `; x8 w; @% E" K(4)兴趣所在,这是最主要的。
8 M3 R1 C0 z) d& K: P从事嵌入式软件开发的缺点是: $ P* j _( S, Z- T$ v- C
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 9 ~; h; ^( D, q5 u9 o+ i7 W% G/ `
(2)这方面的企业数量要远少于企业计算类企业。
5 U% X0 H7 z: e e(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
3 ?+ [# J/ H; {- x8 N(4)平台依托强,换平台比较辛苦。 9 S' U/ k1 N( B0 a( @( ~
兴趣的由来:
5 v! p4 a; X" v) h+ _1、成功观念不同,不虚度此生,就是我的成功。 ' b# [' r; k% n: C
2、喜欢思考,挑战逻辑思维。
; c. k) \/ [% U6 ?6 u% |3、喜欢C 7 b) r# s" v; C8 }, u
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
8 H1 G7 E" Z* V( O& P相信程序员。 " D4 K8 m0 N( ~: v, X& S8 Z! C
不要阻止程序员做那些需要去做的。 1 v4 E% N( k5 x% v: J0 x
保持语言短小精干。 ( ^ v; u- Y+ A# M" b6 [
一种方法做一个操作。
% f w( j: H* u% G7 F9 r使得它运行的够快,尽管它并不能保证将是可移植的。 $ U1 N) Z! }% P2 ]) `) X
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
& V$ w) R. V4 U8 b- w4 x5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
' I' O' Y. f+ x; [& t; u方法步骤:
4 h1 _9 G A8 k- U1、基础知识:
% {, W7 A5 S) Q; v% n3 V+ }5 x目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 1 r. d& q- Q9 z* a7 B
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
: U; @" ? E( B4 m$ A/ C汇编语言、C/C++、编译原理、离散数学。 - G a# u: b2 p3 [
数据结构和算法、操作系统、软件工程、网络、数据库。 4 X' C* m% a5 ^: r
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 : P: z B+ K1 l7 \$ q# O
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
! m w& L8 _' v+ M7 E1 |2、学习linux:
( _+ {& X- G f+ K目的:深入掌握linux系统。
2 g" x+ a: u; Q 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
) {! S5 B: @7 ]6 G1 u; j& H主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 # w( r& R& o) n* n6 L/ s2 w
3、学习嵌入式linux: 9 a' w3 r8 ~; I1 T; g
目的:掌握嵌入式处理器其及系统。 4 J+ i* u3 h: h; Z* w- c; q& Y O
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
5 k) c' Z) o% [) i a# P) [' y (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
k/ z! q! B3 P) Q: M& _7 y9 O1 W (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
5 ^; [" g7 H: r9 |+ n; R7 G3 X 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 8 |# ?! b' ~6 b# k& q- b5 V, O
4、深入学习: 6 Q" b. P6 s; _8 L
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 " t, G+ X( j. Z1 c. U$ k8 I; G1 o
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 1 G6 @$ V( { K& L
C、网络与信息安全技术:如加密技术,数字证书CA等。 4 x! R! B+ R k' U. G" |9 @ q+ \
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 : g: i+ R1 t+ L5 x6 i5 P& R
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一 种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
+ v4 U( M0 L- Q2 K+ \2 y o 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
6 g# ^- V' J0 f; z! o ` 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! - {' G& w: O/ [2 V T" `2 y! S- D
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
6 e3 e [6 L, s" q嵌入式书籍推荐 0 f5 J k# t8 \, A8 [ e
Linux基础 & P+ S8 o4 h2 L+ Y3 R4 k: F
1、《Linux与Unix Shell 编程指南》
: B0 ^& H; f7 p, m C语言基础 3 j" x" K" [0 S/ d; G
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
$ @8 _ A+ `- ? H, b6 q 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
: I5 k% |9 `1 y" j) q 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) - P2 H2 C' w, r1 b5 W
4、《嵌入式Linux应用程序开发详解》
$ r9 q; U$ R5 M, G2 H8 e5 ?' p Linux内核
) C8 Q* d" F8 p' i/ o z 1、《深入理解Linux内核》(第三版)
& x. b! g2 @1 j+ w3 ~- L 2、《Linux内核源代码情景分析》毛德操 胡希明著 $ @" u6 f. s4 |. |% _9 ~
研发方向 7 {1 y3 Y( |- S+ R$ F. Y
1、《UNIX Network Programming》(UNP)
1 S5 ]1 Z4 d. Q( r7 t& p! x: E 2、《TCP/IP详解》 0 Q! F$ a9 C8 S
3、《Linux内核编程》
' S4 z3 V+ o. `' q/ E( g* a 4、《Linux设备驱动开发》(LDD)
3 Q. t9 i1 X: ~ z0 f. L E3 P) h7 t 5、《Linux高级程序设计》 杨宗德著 K1 G, P" h+ N
硬件基础
& H; f8 e7 h8 V" u& U3 U 1、《ARM体系结构与编程》杜春雷着 2 c! P3 a+ j6 a
2、S3C2410 Datasheet 8 Z$ t+ D, X, y0 n9 q# j
英语基础 9 x2 x( ?: S$ I$ \
1、《计算机与通信专业英语》 / m5 l+ }/ c. N: i. N$ P3 J; k
系统教程 " _* }! l: `# C+ w/ p& T% e8 N
1、《嵌入式系统――体系结构、编程与设计》
4 z" m5 i k0 k; ?) P 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
& M( Q. n: g6 w+ t& ] 3、《Building Embedded Linux Systems》
$ }7 P% b- |# Y+ |/ ? 4、《嵌入式ARM系统原理与实例开发》 杨宗德著
! [' M9 O7 F6 V 理论基础
3 B: ]. l' s% D! c( L 1、《算法导论》 ! M/ L7 b2 U( ^; W x8 M. v
2、《数据结构(C语言版)》 # B0 n8 B- y* T- A5 x w. u! j* C
3、《计算机组织与体系结构?性能分析》
' B! z( _% D: A D' E* W2 @ 4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着 + V+ }3 r( S4 r4 I8 g$ t$ v
5、《操作系统:精髓与设计原理》 & N z9 l7 B* X. c6 }
6、《编译原理》 ( Y7 t7 v" e, j" ]
7、《数据通信与计算机网络》 " t8 O" O* Q' u4 E r
8、《数据压缩原理与应用》 # A5 g' n7 }$ Q: m0 |3 x
C语言书籍推荐 . @2 y( V2 @/ a0 S8 H4 r
1. The C programming language 《C程序设计语言》 % C/ O' }6 O0 j
2. Pointers on C 《C和指针》
9 r3 k7 x# H- _ P! J8 [ 3. C traps and pitfalls 《C陷阱与缺陷》 ! F# w5 p$ w$ W Y) L
4. Expert C Lanuage 《专家C编程》 2 D c0 V( r: W- Y* h: ?
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
! ^/ J% ?: a6 A' {) v 《编程精粹--Microsoft 编写优质无错C程序秘诀》 : E( p8 G4 Q4 [
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
, e: K5 R' q, J4 \ 7.《C语言嵌入式系统编程修炼》
, @% g4 h$ v& f9 T# B) s! |/ E 8.《高质量C++/C编程指南》林锐
$ q+ o I* t& r2 d5 z* D: q 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。- ?8 ?$ A, z. Z; e P6 x) Y
# W6 O) I9 c% S2 Q$ t7 L
7 M" B# x6 [1 ?7 R" | |
|