嵌入式系统软件开发基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 嵌入式系统的设计方法
14
3.5 嵌入式软件调试技术
1.模拟器方式 2.在线仿真器方式 3.监控器方式 4.在线调试器方式
第3章 嵌入式系统的设计方法
15
ห้องสมุดไป่ตู้
1.模拟器方式
调试工具和待调试的嵌入式软件都在主机上运行, 通过软件手段模拟执行为某种嵌入式处理器编写的 源程序。简单的模拟器可以通过指令解释方式逐条 执行源程序,分配虚拟存储空间和外设,进行语法 和逻辑上的调试。
第3章 嵌入式系统的设计方法
16
2.在线仿真器方式
在线仿真器ICE是一种完全仿造调试目标CPU设计的仪器, 目标系统对用户来说是完全透明的、可控的。仿真器与目 标板通过仿真头连接,与主机有串口、并口、以太网口或 USB口等连接方式。该仿真器可以真正地运行所有的 CPU动作,并且可以在其使用的内存中设置非常多的硬 件中断点,可以实时查看所有需要的数据,从而给调试过 程带来很多便利。由于仿真器自成体系,调试时可以连接 目标板,也可以不接目标板。使用ICE同使用一般的目标 硬件一样,只是在ICE上完成调试后,需要把调试好的程 序重新下载到目标系统上而已。由于ICE价格昂贵,而且 每种CPU都需要一种与之对应的ICE,使得开发成本非常 高。
第3章 嵌入式系统的设计方法
4
3.3 嵌入式系统软件设计和调试流程
编辑
创建工程 添加文件、编写程序 汇编语言加C语言
编译
配置编译、汇编和连接参数 编写连接脚本文件 编译
第3章 嵌入式系统的设计方法
5
调试
连接调试器 下载程序 运行、调试
固化
通过仿真器烧写flash 专用或通用的编程器 通过bootloader烧写flash
特征
程序复位运行入口点 通常用汇编语言+C语言编写 代码量较小(相对)
第3章 嵌入式系统的设计方法
11
基于操作系统的软件开发-嵌入式操作系统移植
Linux Windows CE uC/OS II uClinux Nucleus
第3章 嵌入式系统的设计方法
12
基于操作系统的软件开发-BSP设计
第3章 嵌入式系统的设计方法
17
3.监控器方式
主机和目标板通过某种接口(通常是串口)连接,主机上提供 调试界面,被调试程序下载到目标板上运行
监控程序是一段运行于目标机上的可执行程序,主要负责监控 目标机上被调试程序的运行情况,与宿主机端的调试器一起完成对 应用程序的调试。监控程序包含基本功能的启动代码,并完成必要 的硬件初始化,等待宿主机的命令。被调试程序通过监控程序下载 到目标机,就可以开始进行调试。监控器方式操作简单易行,功能 强大,不需要专门的调试硬件,适用面广,能提高调试的效率,缩 短产品的开发周期,降低开发成本。正因为以上原因,监控器方式 才能够广泛应用于嵌入式系统的开发之中。
BSP功能和特征 功能
为应用程序提供统一的硬件操作接口
特征
高度硬件相关 高度依赖于具体硬件平台 各种操作系统各异
第3章 嵌入式系统的设计方法
13
基于操作系统的软件开发-应用程序设计
应用程序功能
功能
GUI图形、人机交互 控制 算法
特征
硬件依赖程度小 部分可仿真调试 各种操作系统各异
监控器调试主要用于调试运行在目标机操作系统上的应用程序, 不适宜用来调试目标操作系统。有的微处理器需要在目标板工作正 常的前提下,事先烧制监控程序,而且功能有限,特别是硬件调试 能力较差。
第3章 嵌入式系统的设计方法
18
4.在线调试器方式
使用ICD和目标板的调试端口连接,发送调试命令和接收 调试信息,可以完成必要的调试功能。一般情况下,在ARM芯 片的开发板上采用JTAG边界扫描口进行调试。摩托罗拉公司 采用专用的BDM调试接口。使用合适的开发工具可以利用这些 接口。例如,ARM开发板,可以将JTAG调试器接在开发板的 JTAG口上,通过JTAG口与ARM处理器核进行通信。由于 JTAG调试的目标程序是在目标板上执行,仿真更接近于目标 硬件,因此许多接口问题,如高频操作限制、电线长度的限制 等被最小化了。该方式是目前采用最多的一种调试方式。
第3章 嵌入式系统软件开发基础
3.1 嵌入式系统软件组成 3.2 嵌入式系统软件开发方法 3.3 嵌入式系统软件开发主要内容 3.4 嵌入式系统软件调试方法. 3.5 嵌入式软件集成开发环境 3.6 嵌入式软件开发语言
应用 OS 驱动层 电源管理
Flash SDRAM SRAM
看门狗 复位电路
典型嵌入式系统组成
第3章 嵌入式系统的设计方法
3
3.2 嵌入式系统软件开发方法
采用宿主机/目标机交叉开发方式 嵌入式系统本身不具备自举开发能力,即使设 计完成以后用户通常也是不能对其中的程序功能进 行修改的。嵌入式软件以宿主机/目标机模式开发, 所需要的开发环境称为交叉开发环境,分为宿主机 部分和目标机部分,两者以统一的通信协议进行通 信,宿主机向目标机发送命令,目标机接收、执行 命令并将结果返回宿主机,从而实现两机之间的交 互控制。
启动代码功能和特征 功能
硬件初始化 引导C代码
特征
通常用汇编语言编写 程序复位运行入口点 代码量非常小
第3章 嵌入式系统的设计方法
8
无操作系统软件开发-启动代码
启动代码程序流程
设置中断、异常入口 关中断 硬件寄存器初始化(GPIO配置、总线配置、PLL时钟) 初始化栈指针 数据区初始化 C入口函数调用 BL Main
第3章 嵌入式系统的设计方法
9
无操作系统软件开发-应用软件开发
应用软件功能和特征
功能
硬件驱动 应用
特征
通常用C语言或者嵌入式汇编语言编写 程序较复杂,代码量较大
第3章 嵌入式系统的设计方法
10
基于操作系统的软件开发-bootloader开发
Bootloader功能和特征
功能
硬件初始化 引导操作系统 下载程序(串口、网口、USB) 烧写flash
文件系统/GUI/API Linux、u/COS、Wince…
BSP/driver/HAL
GPIO USB LCD
处理器
MMU
CAN DMA 以太网
LCD/触摸屏/鼠标
第3章 嵌入式系统的设计方法
软件 硬件
输入 输出
2
3.1 嵌入式软件组成
BSP Bootloader 操作系统内核 文件系统 库,应用软件
第3章 嵌入式系统的设计方法
6
3.4 嵌入式软件开发主要内容
无操作系统的软件开发主要包括两部分
启动代码 应用程序
基于操作系统的软件开发包括:
Bootloader开发 操作系统开发移植 BSP板级支持包开发移植 应用程发开发移植
第3章 嵌入式系统的设计方法
7
无操作系统软件开发-启动代码开发