周全 ES体系结构的研究及其应用
图4.5 Embedded ICE接口协议转换
ADS中来自AXD的调试命令并行口输出到Multi-ICE,Multi-ICE将这些命令翻译成ARM core中的调试单元EmbeddedICE的控制命令。
ARM7和ARM9 core都具有作为片上调试资源的EmbeddedICE core扩展部分。 EmbeddedICE包含2个实时观测点单元和相关的控制与状态寄存器,和一组用于实现与调试器进行通信的Debug Communications Channel (DCC)。一个或者二个观测点单元可以通过编程停止ARM核的指令执行。当编程设置到Embedded ICE宏单元的值,与当前出现在地址和/或数据总线上的值相等的时候,停止执行。可以屏蔽任意位来防止它影响比较。
任何观测点单元可以配置为一个数据观测点(监测数据访问)或者一个指令断点。
断点分为硬件的和软件的。硬件断点典型的是监视地址总线值,并且可以在地址空间中包括ROM的任何地方设置。软件断点监视一个从任何地址取出的特殊的bit pattern。一个Embedded ICE观测点单元可以用于支持任何数目的软件断点。软件断点一般仅仅可以在RAM中设置,因为一条指令必须被特殊的bit pattern替代或者patched,来产生一个软件断点。
图4.6所示的Embedded ICE寄存器被映射到Embedded ICE模块,并且通过扫描链2的JTAG接口访问。在Watchpoint单元的Control Value寄存器允许设置复杂的断点条件,读/写访问,字节、字或者半字访问,取指令或者内存访问——所有的操作都可以区别开来。复杂的breakpoint dependencies可以被配置。
Embedded ICE Control 寄存器允许通过JTAG扫描链提交异步调试请求。Embedded ICE Status寄存器用于确定core state;并且不论处在32 bit ARM或者16 bit Thumb指令模式的调试模式入口。 (ARM core技术的一个主要特点是支持16 bit指令集,称为Thumb,同时支持完全的32 bit指令集。这样可以提高代码密度,并且降低32 bit环境的内存宽度要求。实现零开销的片上Thumb压缩指令到相应的完全32 bit指令。)
41
扬州大学硕士学位论文
图4.6 典型的带JTAG的ARM系统访问扫描链和EmbeddedICE单元
对EmbeddedICE的物理访问是通过JTAG实现的,并且JTAG TAP控制器和相应的扫描链一起,构成了到目标系统的强大的调试访问。
EmbeddedICE用于所有的ARM core实现。基于EmbeddedICE的调试,是与目标运行速度无关的。
4.2 Easy Pack仿真器介绍
Easy Pack仿真器是MICETEK公司开发的8051系列的仿真器。该仿真器采用双CPU架构、全开放设计,不占用用户系统资源。可支持标准8031/32/51/52/54/58 微控制器,完全即时仿真,最高仿真速度可达33 MHz。提供自我诊断测试功能和Serial接口传输设计。
Easypack/E-II(如图4.7)可支持128K仿真存储器( 64K ROM + 64K RAM ),映射分辨率达 128 Bytes,按下列属性进行映射:
(1) Overlay / Overlay Read only : 仿真存储器(可读写或只读) (2) Target / Target Read only : 目标板存储器(可读写或只读) (3) Guard : 禁止读写区
(4) Combination / Combination Read only : RAM/ROM 混合使用可读写或只读
图4.7 Easy pack 仿真器介绍
目标处理器可完整保留本身的存储器和I/O空间。该仿真器还具有以下特点:
42
周全 ES体系结构的研究及其应用
① 单步操作
针对原汇编码或C语言进行 Single Step。可做 Cycle Step,执行后显示地址总线、数据总线、周期状态、接口状态及外部追踪位等数据。
② 硬件中断
所有程序空间均可设定执行断点,允许2总线断点 (EV1、EV2),1 个外部触发输入断点(EV3)。
③ 即时追踪记录功能(Real-time Trace)
可追踪记录资料:深 32K Frame,宽 32 Bit。包括16位地址总线、8位数据线、3位CPU状态、5位外部追踪点;可设定 On/ Off 追踪功能;可过滤追踪记录的讯息,有效利用32K 的深度。
④ 复合中断触发追踪
共有 2 级触发层次。每个层次可为单一事件,或为 Ev1、Ev2 和 Ev3 的逻辑组合,提供事件计数 ( Event Count ) 功能。可使用外部触发输入端 ( ETI ) 与外部触发输出端 ( ETO ) 同步信号。
⑤ 执行时间可测
执行时间可使用内建的定时器测出:最大测量时间为36.4小时,最小时间单位为1毫秒。
43
扬州大学硕士学位论文
44
周全 ES体系结构的研究及其应用
第五章 基于μC/OS-II的嵌入式系统
5.1 获得源代码v2.51
μC/OS-II[18]是源代码开放的实时操作系统。源代码随作者出版的《μC/OS-II——源码公开的实时嵌入式操作系统》提供。读者可以自由地使用源代码用于研究等非赢利性工作。如果在产品中使用μC/OS-II,需要与作者协商,交纳一定的版权费用。
目前www.uCOS-ii.com网站上公布的最新版本是V2.62,这个版本不再向读者免费提供。国内出版的《μC/OS-II——源码公开的实时嵌入式操作系统》随书附送的代码是V2.00版本。本人通过email向Labrosse索取了V2.50版本的源代码,并且根据www.uCOS-ii.com网站上公布的Bug fixes,将V2.50修改成V2.51版本。这个版本是目前V2.5x系列的最新版本。
与V2.00版本相比,V2.51版本具有了Mutex(互斥信号量)和Event Flag(事件标志)等等功能。Mutex是消息的一种,用于互斥资源的管理。Event Flag是可以处理多个异步事件的工具。
μC/OS-II移植方法在《μC/OS-II——源码公开的实时嵌入式操作系统》一书中有详细的介绍,通过改写3个源代码文件和若干个体系结构相关的函数完成移植工作。
μC/OS-II官方网站提供了该操作系统内核到各种MCU/MPU的移植,其中有一些针对51系列单片机和ARM7的移植。但是,这些移植使用的开发工具和目标平台各不相同,不能直接用于μC/OS-II v2.51版本。本课题以μC/OS-II官方网站上和随书附送的移植代码[18]为参考,经过修改、重新编码和调试,成功的运用到应用系统中。移植和开发的其他信息参见www.uCOS-ii.com。通过移植工作,构建了自己的8051和ARM7开发平台,并且验证了对嵌入式操作系统内核的理解。
5.2 代码结构图
为了便于使用和管理源代码,方便项目的开发。我采用μC/OS-II的源代码组织习惯,将源代码和应用代码分离。将项目和代码分离。代码的目录结构如下: 根目录:H:\%uCOS-II到8051的移植
根目录下面有一个目录(SOFTWARE)和一个文件(README.txt)。
45