再上一篇:6.1.3 Sitsang 开发板寄存器
上一篇:6.1.4 Sitsang 板上设备及 IO 接口
主页
下一篇:6.2.2 Angel 系统的结构
再下一篇:6.2.3 Angel 的通信结构
文章列表

6.2 Angel 和 ADS

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

6.2.1 Angel 的概述

除了前面介绍的 JTAG,Angel 是另一种用于 ARM 体系处理器底层开发的调试工具。 与 JTAG 调试中的目标机代理程序相对应的是 Angel,它也是 ARM 调试中目标机端的监控 程序。它通过ADP(Angel Debug Protocol) 通讯协议和主机通讯,完成主机应用程序的调试。 ADP 的传输接口是普通的串行口,USB,或其它常用的通讯接口,因此使用 Angel 可以开 发没有JTAG 支持的处理器。但是Angel 必须驻留内存,而无法向JTAG 调试代理程序那样 只驻留在指令Cache 中,所以使用Angel 调试无法避免Angel 本身的影响。另一方面,Angel 也能作为高层应用程序的底层支持,成为应用的一部分。
一、 Angel 的功能:

• 对应用程序进行硬件调试;

• 在开发板上开发新的应用程序;

• 运行基于ARM处理器的硬件设备;

• 装载基于ARM的操作系统。

二、Angel 的提供方式:

• 在ARM开发板上的Flash 或 ROM中的执行程序;

• 编译完成的,可下载Flash或ROM的文件;

• 源程序,可以重新修改编译;

ADS 提供的ANSI C 和 C++ 库可以支持Angel的调用。

三、Angel 系统具有下列特点:

• 支持调试

• 支持C 库半主机方式

• 支持通讯

• 任务管理

• 例程处理

1.调试

Angel 提供了下列基本的调试支持:

• 察看和修改内存和处理器状态内容;

• 下载应用程序至目标机中;

• 设置断点,运行用户程序。

2.C库半主机

Angel 采用了一种软件中断 software interrupt (SWI) 方式,可以应用程序完成半主机的 请求,这些请求如:打开主机上的一个文件或者得到主机调试器的调试命令,只有和主机通 讯才能实现。这些请求之所以被称之为半主机请求,是因为它们必须依赖主机中的C库才能 完成。

Angel 使用了一个SWI指令,完成半主机请求,在缺省状态下, SWI 的参数在ARM状 态是0x123456 ,在Thumb状态是 0xab 。用户也可以改变它。
如果不需要半主机功能,可以禁止它,在ARM 调试器中,设置

semihosting_enabled 变量:

• 在armsd set中:

$semihosting_enabled = 0

• 在 AXD, ADW 或ADU中, 从View菜单下选择 Debugger Internals 选项,编辑变量

semihosting_enabled。

3.Angel通讯

Angel 在通讯时使用ADP协议, 通过通道使得多个独立信息包可以共享一个通讯连接, Angel 提供了检错的功能。主机和开发板的连接既可以是串行/并行连接,也可以是以太网 连接,对于ARM开发板而言,需要ARM公司提供的Ethernet Adaptor Kit (No. KPI 0014D)。

主机和目标机系统中具有通道管理功能,保证了逻辑通道是多路复用的,设备驱动检测 和丢弃中断的数据包,监测数据流量,在缓冲器中保存发送的数据以防止重发。

Angel 设备驱动结构使用了Angel 任务管理功能,以控制数据包的处理,保证长时间的 传输。用户可以使用在设备驱动器输入,驱动其它调试设备,例如:ROMulator ,当然也 可以扩展Angel 支持其它外设。

4.任务管理

Angel 的任务管理功能控制Angel 所有的操作包括通讯、调试操作,它的作用包括:

• 保证在任何时候必须只有一个操作在实现;

• 分配任务的优先级,以及分配任务;

• 控制Angel 环境中的处理器模式。

5.例程处理

Angel 例程处理功能提供了调试、C库支持和任务管理的基础, Angel 为ARM例程类 型(Reset除外)设置了例程句柄。Angel 例程类型包括:

1)SWI

Angel 设置一个SWI例程句柄,支持C 库半主机请求,允许应用程序和Angel进入 管理模式

2)Undefined

Angel 使用三条Undefined 指令来设置断点。

3)Data, Prefetch Abort

Angel 设置了基本数据和Prefetch Abort 句柄,可以将例程报告给调试器,暂停应 用程序等。

4)FIQ, IRQ

Angel 设置了IRQ 和 FIQ 句柄,在通讯时机可以单独使用,也可以混合使用。 用户可以将IRQ作为Angel 通讯之用,将FIQ 作为用户自定义中断之用。