background image

目前我之前做过的技术主要集中于软件层,语言上只是精通 C 语言因为它在嵌入式

开发有着天生的优势。能够看懂简单的汇编(大学一年单片机的结果)。硬件系统的架构
和软件系统的架构非常熟悉。目前的能力只有软件上的提高自己才是最现实的。是我的近
期目标。

1. 嵌入式软件课程体系

自学嵌入式确实不大现实(当然也不是说没有这个可能),毕竟嵌入式难度也是比

较大的。嵌入式的应用主要是几个方向:

一是系统开发:侧重开发环境搭建、内核原理、交叉编译等;
二是嵌入式 Linux 应用开发:侧重 Linux 应用编程、内核编译、系统调用;
三是底层驱动开发:侧重嵌入式 Linux 系统下的驱动开发、内核的深入分析。
不过初进门者主要往系统开发和应用开发发展,有了相关工作经验再进一步向底层

驱动靠。

嵌入式课程的目标,想自学完课程,要掌握以下知识点:

Linux 命令、工具和 C 编程基础

嵌入式 Linux C 语言强化

嵌入式 Linux 上的 C 编程训练

Linux 高级编程及编程训练

嵌入式 ARM 处理器体系结构及编程训练

嵌入式 Linux 内核环境搭建和编程训练

嵌入式 Linux 驱动理论及驱动程序开发训练

Android 应用研究和系统开发

Android 体系结构和系统移植

嵌入式 ARM Linux 项目实践和训练

 

嵌入式软件方面最重要的课程包括:
(1  

) 嵌入式微处理器结构与应用

这是一门嵌入式硬件基础课程,我院用这门课取代了传统的 微机原理与接口 课程

(目前国内已有少部分高校 IT 专业这样做了,因为讲 x86 微机原理与接口很难找到实际
用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对
ARM 处理器工作原理和接口技术有充分了解,包括 ARM 的汇编指令系统。若不了解处理
器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软
件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?
很多公司招聘嵌入式软件人员时都要求熟悉 ARM 处理器,将来若同学到公司中从事嵌入

 

式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须
能看懂其中的内存分布和端口使用等最基本的说明(就像 x86 汇编一样),否则怎么设
计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等
我们的嵌入式实验室 10 月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同
学对 ARM 汇编不感兴趣,以为嵌入式开发用 C 语言就足够了。其实不应仅是将汇编语言
当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言
的人,怎么能在该处理器写出最优的 C 语言代码。在嵌入式开发的一些关键部分,有时还
必须写汇编,如 Bootloader 等(可能还包括 BSP)。特别是在对速度有极高要求的场合
(如 DSP 处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到