background image

 

在嵌入式软件方面最重要的课程包括:
(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 内核,指令一级是相同的)。而众多中小公司又购买了这些处理器,设计了各
种各样的开发板,如华恒等国内很多著名嵌入式公司都生产基于 SamsungS3C2410 的开发
板 , 供 最 终 用 户 使 用 或 供 教 学 实 验 。 在 ARM 这 个 食 物 链 上 , ARM 公 司 是 大 鱼 ,
Intel 、Samsung 等公司是小鱼,而华恒等则是虾米,最终用户(我们这些要采购嵌入式开
发板的)则是喂虾米的。Intel 早期生产的是低端 ARM(Strong ARM,相当于 ARM 7),现在
转向主要生产高端 ARM(即 Intel Xscale 处理器,属于 ARMv5 家族,主要用在高端 PDA 上,
如 HP 和 DELL 生产的 PDA 都采用 Intel Xscale,价格较高)。目前应用最多的是 ARM 7 和
ARM 9

 

两类处理器。 ARM 7 较便宜,可跑 uclinux(是一个不支持高级内存管理功能的嵌

入式 Linux 系统统)、Vxworks、uc/os II 等实时操作系统,但因处理器不带内存管理单元
MMU(无内存分页和地址映射机制,所以不能使用虚拟内存),所以不能跑 Windows 
CE,另外通用 Linux 中的某些内存管理功能也不能用在 ARM 7 上。ARM 9 大都是一个带
MMU 功能的高端处理器,可跑 WinCE 或通用 Linux 的大多数功能。ARM7 和 ARM9 的区
别是在与体系结构上,前者是冯·

 

——

诺伊曼结 构,后者是哈佛结构

指令和数据总线是分

开的。以上是我的一点了解,可能有不对的地方。我们学院有十几套 ARM 7 开发系统(采
用 Samsung S3C44b0x 开发板,主要用于嵌入式处理器结构、实时操作系统等课程实验
用),ARM 9 的系统好象也已经到了(采用的芯片我不知道也没去问),还有以前的十
几套 MPC860

 

开发板(听说价格都很贵,很容易损坏),同学应爱护使用和珍惜这样 的

 

实验机会。
(2) 

嵌入式操作系统类课程

 

除了 WinCE 的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时