开发模式:
本机开发:本机开发也就是在目标机(在嵌入式系统中通常把嵌入式系统或设备简称为目标机)中直接
进行操作系统移植及应用程序的开发。在这种方式下进行开发,首先就得在目标机中安装操作
系统,并且具有良好的人机开发界面。
交叉开发:意思就是在一台主机(在嵌入式系统中通常把通用PC称为主机)上进行操作系统的裁剪,以
及编写应用程序,在主机上应用交叉编译环境编译内核及应用程序,然后把目标代码下载到目
标机上运行。这就需要在主机上安装、配置交叉编译环境(交叉开发工具链),使其能够编译
成在目标机上运行的目标代码。
模拟开发:建立在交叉开发环境基础之上。除了主机和目标机以外,还得提供一个在主机上模拟目标机
的环境,使得开发好的内核和程序直接在这个环境下运行以验证其正确性,这就不需要每次的
修改都下载到目标机中,待程序正确后再下载到目标机上运行。这样就可以达到在没有目标机
的情况下调试软件的目的。比较著名的模拟开发环境有SkyEye,它能够模拟如ARM等处理器
的开发环境。模拟硬件环境是一件比较复杂的工程,所以多数商业嵌入式系统的开发采用的是
交叉开发模式。
开发方式:
Crash and Burn:
1. 在宿主机上编写代码
2. 在宿主机上编译应用程序,生成可执行程序
3. 固化(Burn)到目标机的存储器(EPROM/FLASH等)中
4. 启动运行,若正确则转到7
5. 不正确则在宿主机上改写代码,纠正错误
6. 返回2重复操作
7. 固化成功,结束
ROM Monitor:
ROM Monitor是固化在目标机上的一段程序,用来监视目标机上被调试程序的运行,与HOST端的程序一起完成对目标机上的应用程序的调试。此时宿主机上要有一个和ROM Monitor相配的交叉调试器。该调试方法中目标机复位后首先执行的就是ROM Monitor。
1. 在宿主机上编写代码
2. 在宿主机上试用调试模式交叉编译应用程序,生成可执行程序
3. 将代码下载到目标机上的RAM空间
4. 用户试用调试器进行交叉调试
5. 如果正确转8
6. 不正确则在调试器帮助下定位错我
7. 修改错误,重复2~7
8. 将程序固化到目标机上,结束
ROM Emulator:
用ROM Emulator 替代目标机上的ROM芯片
不完全的调试方法
ICE(In-Circuit Emulator 常用的开发方法):
替代目标机上的CPU设备
厂家提供的开发板
价格昂贵,不利于团队开发
所仿CPU有限
OCD(On Chip Debugging):
OCD 是CPU芯片提供的一种调试功能
存在各种实现方式、标准不统一:
1. BDM(Backgroud Debugging Mode)
2. JTAG(Joint Test Access Group)
3. OnCE(On Chip Emulation)
Simulator:
软件仿真器。在宿主机上虚拟目标机。
仿真内容:
仿真处理器
仿真外设
仿真环境
适用范围:对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序。