也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀,在这里,我希望能够将嵌入式开发的流程展现给大家。

嵌入式开发主要分为三个比较大的部分:

1.驱动程序开发

这部分开发是从硬件设计开始的,硬件工程师会设计PCB板,为我们提供标准开发板(SDBstandard development board)。当我们拿到开发板之后的第一件事情就是编写boot-loader,让开发板启动起来,一般是通过JTGAboot-loader烧录到开发板中的。我们可以将boot-loader看作PC中的BIOS,负责硬件设备的初始化工作,并且将操作系统运行起来。在此之后,我们需要根据开发板上的硬件开发各种驱动程序,比如串口、USB、鼠标、视频输入等。最后将这些驱动程序和boot-loader打包,称为一个板级支持包(BSP)。BSP是和开发板的具体硬件紧密相关的。

所以从事这方面开发的工程师往往具有比较强的硬件知识水平。

2.平台定制

我们可以将Windows CE想象为一盒积木,根据不同的应用场景和设备要求,我们要对这盒积木进行定制,堆积出不同形状的城堡、动物和生活用品。这个过程称为平台定制,定制产生的平台往往和具体的硬件设备相关,直接将平台下载到硬件设备上就可以运行了。整个开发过程,需要选择不同的组件来搭配出最适合当前硬件的软件平台。所以要对Windows CE的组件,也就是Catalog Item,有相当程度的了解。

3.应用程序开发

嵌入式设备上的应用程序开发与传统应用程序开发类似,只是要借助于硬件模拟器或者实际设备对程序进行调试。最常见的嵌入式设备应用程序开发,就是Windows Mobile的移动应用开发。平台定制工程师会在硬件出厂之前先提供平台相关的SDKSDK中会包括模拟器。应用开发者可以首先使用模拟器对程序进行开发和调试。等实际硬件出来之后,再将程序转移到实际硬件中。因为Windows CE采用了很多措施,这种转移几乎是无缝的,所以我们并没有使用移植这个词。

嵌入式领域的应用开发其实是普通软件工程师就可以进行的。

下图是对嵌入式开发整个流程的图示: