C++在嵌入式领域的应用

在早期嵌入式产品软件的开发过程中,我们基本上都是使用C语言开发的,因为C语言是一个极其精简、高效、完备的高级语言,没有任何一种语言可以代替它的地位。

在早期的嵌入式时代(单片机为主)里,使用C语言开发非常高效,那个时候要做的工作基本上是一些控制以及简单的图形处理,项目的业务逻辑不是很复杂,所以使用C语言开发完全可以应对。但在技术高速发展的今天,嵌入式的硬件更新换代越来越快,市场的需求越来越复杂,仅仅使用C语言开发已经不能完全胜任现实的需求,当然在嵌入式开发中也不可能完全抛弃C语言,一个产品的开发在某个阶段甚至还需要汇编语言来完成。

当今嵌入式产品开发使用的编程语言通常是汇编语言、C语言和 C++(或其他面向对象语言)协同工作:
  • 项目开发在某些情况下,C语言的使用环境还不满足,如 Boot Loader 开发的第一阶段就必须使用汇编语言来完成,当然这样的场合非常少,但不可避免。
  • 对于底层软件的开发,通常使用C语言就可以满足需要了,例如,内核开发、驱动开发等工作。
  • 应用软件通常使用 C++ 这类面向对象语言开发,这部分的开发代码量较大,因为不仅仅要实现产品的业务逻辑,还要完成和使用交换的界面,因此这部分程序的开发效率直接影响整个项目的开发进度。

下面分析常见的嵌入式操作系统开发产品过程使用 C++ 语言的场合。

1. 嵌入式Linux

嵌入式 Linux 的内核基本上都是使用C语言开发的。但是在嵌入式产品的开发过程中,如在 Linux BSP 的开发过程中,为了提高产品的开发效率,方便应用开发工程师的调用,往往需要在 BSP 中实现大量的中间件,这些中间件如果采用 C++ 开发,其开发效率与重用率将大大提高。

基于嵌入式 Linux 的产品,稍微规模大点的,应用软件基本上是使用 C++ 开发的。如果需要使用 GUI 界面,建议考虑使用 Qt,Qt 提供的类都是使用 C++ 完成的。如果已经熟练使用 C++,那么使用 Qt 开发也没有任何难度。

2. Windows CE

如果接触过 Windows CE 开发,就会知道 Windows CE 的内核开发大部分是采用 C++ 完成的,因此需要开发 Windows CE 的 BSP。如果不会 C++,开发工作将会困难重重,看到内核里面好多通信机制使用 C++ 实现的代码犹如天书一样。

基于 Windows CE 的产品,应用软件的编写选择空间较大,可以选择 C++、C#、VB等,当然如果会用 C++,其他都不是什么大问题。

3. Vxworks

基于 Vxworks 的产品,BSP 部分开发通常使用C语言,如果应用部分的业务逻辑过于复杂,建议使用 C++ 开发。

4. iOS

iOS 是不开源的操作系统,可以使用其提供的 API 编写应用程序,开发语言是 Objective-C 和 Swift,Objective-C 是一种类似于 C++ 的面向对象开发语言。