C 在嵌入式系统开发过程中,有3种不同的开发模式,这3种开发模式就会涉及本题所述的宿主机与目标机(调试程序运行的机器称为宿主机,被调试程序运行的机器称为目标机)。下面将详细说明这3种开发模式。本机开发:本机开发也就是在目标机(在嵌入式系统中通常把嵌入式系统或设备简称为目标机)中直接进行操作系统移植及应用程序的开发。在这种方式下进行开发,首先就得在目标机中安装操作系统,并且具有良好的人机开发界面。交叉开发:意思就是在一台宿主机(在嵌入式系统中通常把通用PC称为宿主机)上进行操作系统的裁剪,以及编写应用程序,在宿主机上应用交叉编译环境编译内核及应用程序,然后把目标代码下载到目标机上运行。这就需要在宿主机上安装、配置交叉编译环境(交叉开发工具链),使其能够编译成在目标机上运行的目标代码。模拟开发:建立在交叉开发环境基础之上。除了宿主机和目标机以外,还得提供一个在宿主机上模拟目标机的环境,使得开发好的内核和程序直接在这个环境下运行以验证其正确性,这就不需要每次的修改都下载到目标机中,待程序正确后再下载到目标机上运行。这样就可以达到在没有目标机的情况下调试软件的目的。比较著名的模拟开发环境有SkyEye,它能够模拟如ARM等处理器的开发环境。模拟硬件环境是一件比较复杂的工程,所以多数商业嵌入式系统的开发采用的是交叉开发模式。从以上解释可以看出,宿主机与目标机可能是一台机器上,也可能在不同机器上。宿主机与目标机之间既要有逻辑连接,还要有物理连接。至于通信方式,串口只是其中一种标准,还可采用其他方式。