(3) 哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软
件那样容易被盗版。我们这届有个同学自己有点此类小生意
,具体做什么的没细问,
他每月要进货几千片
8 位单片机,现在自己已经有车有房了。还有现在开发的饭馆用的
点菜
PDA(WinCE
平台,可无线连网和上网),据说销路不错,饭馆点 点
PDA 让客户点
菜,多显派头档次。这些
PDA
“
”
的硬件设计一般都是请别的公司给订做(这叫 贴牌
:
OEM
),都是通用的硬件,我们只管设计软件就变成自己的产品了。
从事嵌入式软件开发的缺点是:
(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操
作系统级软件功底不深,则可能不适于此行。
(2) 这方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较
多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有
Intel
、
Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、
Microtek、研华、华为、中兴通信、上广电等制造类企业)。这些企业的习惯思维
方式是到电子、通信等偏硬专业找人。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数
公司也并无此要求,只要有经验即可。
同学们若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是
我们的强项。
对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这
样写的):
(1)
掌握主流嵌入式微处理器的结构与原理
(2)
必须掌握一个嵌入式操作系统
(3)
必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。
在嵌入式软件方面最重要的课程包括:
(1) 嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我们说过,嵌入式
是软硬件结合的技术,搞嵌入式软件的人应对
ARM
处理器工作原理和接口技术有充 分
了解,包括
ARM 的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么
能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效 率),怎
么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员
时都要求熟悉
ARM
处理器,将来若同学到公司中从事嵌入式软件开 发,公司都会给你
一本该设备的硬件规格说明书
(xxx Specification),你必须能看懂其中的内存分布
和端口使用等最基本的说明(就像
x86 汇编一样),否则怎么设计软件。有些同学觉
得嵌入式处理 器课程较枯燥,这主要是硬件课程都较抽象的原因。还有同学对
ARM 汇
编不感兴趣,以为嵌入式开发用
C 语言就足够了。其实不应仅是将汇编语言当成一个
程序设 计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的
人,怎么能在该处理器写出最优的
C 语言代码。在嵌入式开发的一些关键部分,有时
还必 须写汇编,如
Bootloader 等(可能还包括 BSP)。特别是在对速度有极高要求的
场合(如
DSP
处理器的高速图像采集和图像解压缩),目前还会用到 汇编写程序的
,
尽管用到的机会相对
C 要小得多。当你在一个嵌入式公司工作时,在查看描述原理的
手册时,可能很多都是用汇编描述的,这是因为很多硬件设计人 员只会写或者喜欢
用汇编描述,此时你就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌
入式职位招聘时都要求熟悉汇编。
[
小 知识
] 目前嵌入式处理器常见的有 ARM、PowerPC、MIPS、Motorola 68K、ColdFire
(冷火)等,但 ARM 占据了绝对主流(有资料说手机中几乎 90%都是 ARM 处理器)。ARM 是
一个只卖知识产权的公司,目前获得 购买了
ARM CPU 核授权许可的大公司很多,包括
Intel、Samsung、Amstel、Motorola、Philip 等,他们都在 ARM CPU 核的基础上进行
了一些外围扩展,形成自己的处理器(如
Samsung S3C2410,Motorola i.MXL9328 等
处理器都是采用
ARM 9 内核,指令一级是相同的)。而众多中小公司又购买了这些处
理器,设计了各种各样的开发板,如华恒等国内很多著名嵌入式公司都生产基于
Samsung
S3C2410 的开发板,供最终用户使用或供教学实验。在 ARM 这个食物链上,ARM 公司是
大鱼,
Intel、Samsung
等公司是小鱼,而华恒等则是 虾米,最终用户(我们这些要
采购嵌入式开发板的)则是喂虾米的。
Intel 早期生产的是低端 ARM(Strong ARM,相
当于
ARM 7),现在转向主要生产高端 ARM(即 Intel Xscale 处理器,属于 ARMv5 家族,主