崴泰科技是一家专业供应BGA返修设备的厂家,产品:BGA拆焊台,BGA返修台,BGA植球机,BGA自动除锡机和回焊炉等

联系电话:18816818769  
bga返修设备供应商-崴泰科技

Powerpc处理器开发出稳定和易用可靠的仿真调试平台

  PowerPC( MPC8270) 处理器是一款易用、稳定、可靠的仿真调试平台。针对PowerPC体系结构,构建出一套完整的全系统模拟仿真平台,并重点阐述了ELF解析、指令集解析、虚拟 MMU 和 时钟中断模块的实现方法。

  嵌入式领域不断增大的应用需求,而传统的嵌入式软件往往需要等待硬件平台制作完成后才可以进行调试、开发,这极大的延迟了产品的研发周期,并且在实际硬件平台上调试软件也具有一定难度。所以,基于软件环境开发一套可以仿真硬件平台的系统( 即虚拟机)是十分必要的。虚拟机( Virtual Machine) 系统实际上是真实硬件平台的一个软件抽象。通过这里我们就可以看出BGA芯片返修行业又将迎来一次新的洗礼,对于BGA返修台的制造要求更高了。

  Powerpc处理器开发出稳定和易用可靠的仿真调试平台

  它以一个普通的应用程 序运行在宿主机的操作系统之上,它将目标平台的 硬件行为抽象为宿主机的软件行为,从而达到模拟的效果,软件架构。PowerPC体系结构在嵌入式领域有着广泛的应用和卓越的表现,构建一个针对它的仿真调试系统是十分必要的。

  所以本文以PowerPC体系结构为仿真目标,在X86体系结构的PC机上构建一个全系统虚拟化调试平台。 1、虚拟平台总体设计 1. 1 平台整体设计本仿真平台主要是针对MPC8270这一款高性能、低功耗32 位超标量RISC微处理器。其是Power-QUICC TM II族的一款CPU,使用了E603的核心工作频率最高可达450MHz,拥有独立的16k数据和程序 cache,以及独立的 DMMU 和 IMMU。
多接口Powerpc处理器
  拥有多种可定制接口,广泛应用于网络交换机和工业控制模块中。 虚拟机系统框架图整个仿真平台核心功能就是在一台X86架构的机器上,仿真一个PowerPC平台,可以如真实的硬件平台一样加载运行相应的PowerPC的可执行文件,并提供更方便的调试接口。

  MPC8270 软件仿真平台主要分为三层,整体架 构如图 2 所示: 1) 目标层: 目标 PowerPC 平台上的运行环境; 区进行读写操作。已达到调试的目的。

  PowerPC 体系结构映射单元: 此单元维护了 源体系结构寄存器映射表,主要用于解释执行和维 护 PowerPC 体系结构的各个寄存器在运行时状态。

  虚拟化层: 整个系统的核心,即运行在主机 系统的虚拟机进程;平台工作流程 PowerPC 虚拟调试平台首先分析带有调试信息 主机层: 实际宿主机的运行环境。
Powerpc处理器运行环境
  分析出行号表( 即执行指令对应的程 序地址),变量地址以及对应的可执行文件。而后 我们将分析好的可执行加载进虚拟机中。而后虚 拟机开始执行加载进来的可执行文件。其内部以 一种 busyloop 的方式实现,首先检查是否有外部的 回调函数,外部可以通过此接口完成与虚拟机的通 信。而后检查将要执行指令是否有断点,如果有断 点则暂停运行,控制权交由上层的图形界面操作。 最后执行 interpret 完成取址、译码与执行。

  

仿真平台总体结构各个模块主要功能如下:

  1. 虚拟机总控模块: 负责整个系统的初始化, 虚拟机的空间申请以及释放,协调各个的消息传递。

  2.ELF 文件分析与加载模块: 分析可执行文件 的 ELF 格式,分析出相应的行号,符号信息。识别 相应的数据段、代码段等信息。并加载可执行文件 到相应的内存区域。

  3.MMU 仿真模块: 仿真实际硬件的 DMMU 和 IMMU,分别用于数据和指令的地址转换,由虚拟地 址翻译为物理地址。

  4. 解释器模块: 即将相应指令 PPC 指令翻译 为 x86 指令执行的模块。这里为了达到与真实系统 执行完全一致,选取了经典的处理器的取址-译码- 执行循环。这样可以保证在任何指令处下断点都 可以与真实系统的执行结果一致。

  5.调试接口模块: 主要负责外部与虚拟机的通 信,可以向虚拟系统下断点、设置监视点。可以在 暂停虚拟机执行的状态下,对虚拟机的数据或程序 图 3 平台工作流程 , 7692 科学技术与工程11卷作数,以及一个目的操作数。
仿真平台总体结构各个模块主要功能
  这一指令格式的一些 变种使用部分目标和源寄存器操作数说明符作为 立即字段或作为扩展的操作码。Rc 标记是否记录 状态寄存器。

  

仿真平台模块实现

  1.指令解释 PowerPC 做为一款 RISC 处理器,所有指令的编 码长度都是 32 位。PowerPC 的位编号方式比较特 别: 第 0 位是最重要的位,第 31 位是最不重要的 位。指令首先由一个字段中较高的 6 位进行解码, 这 6 位被称为主要操作码( primary opcode) 。其余 26 位包含的字段分别是操作数说明、立即( immedi- ate) 操作数以及扩展的操作码( opcode) ,而且这些 还可能是保留的位或字段。

  

PowerPC 定义的基本指 令格式有如下几种:

  1. D-form 指令格式 条件转移指令使用的是这一指令格式。BO 指 令字段指定了条件的类型; BI 指令字段指定了以哪 个 CR 位作为条件; BD 字段用作转移位置。AA 位 指定了转移是绝对转移还是相对转移。LK 位指定 了下一个顺序指令的地址是否作为子例程调用的 返回地址保存在链接寄存器中。

  2. D-form 指令格式 这一指令格式提供至多两个寄存器作为源操作数 一个立即源,至多两个寄存器作为目的操作数。这一指 令格式的一些变种使用部分目标和源寄存器操作数说 明符作为立即字段或作为扩展的操作码。

  3.无条件转移指令使用这一指令格式。由于是 无条件的,BD 格式中的 BO 和 BI 字段改变为另外 的转移位置,以构成 LI 指令字段。 同 BD 格式一 样,这一指令格式也支持 AA 和 LK 位。

  对于一个真实的嵌入式系统,我们只需把可执 行的二进制文件烧录进相应的存储单元即可。我们的虚拟调试系统为了做到对真实硬件平台的完 全仿真,我们的执行步骤也是遵循硬件执行指令的经典步骤 : 取址、译码、执行。

  D-form 指令格式 这一指令格式提供至多两个寄存器作为源操 作数,至多两个目的操作数。这一指令格式的一些 变种使用部分目标和源寄存器操作数说明符作为 立即字段或作为扩展的操作码。

  取址: 通过访问内存得到 32 位的指令码。 译码: 译码的过程实际上就是找到相应指令

  A-form 对应的处理函数。我们按照每条指令的 0 至 5 位进 行一次 hash 操作,得到一个处理函数的入口。如果 此指令还有扩展操作码或者其他标志位,我们在处 理函数中通过第二次 hash 找 到最终的函数入口。 实践表明,这种译码方式比树形的查找更加迅速。

  这一指令格式提供至多三个寄存器作为源操

  执行: 调用译码过程查找到的处理函数。

  debug_macinfo&. debug _pubtypes: 包含全局 对象和函数的查找表

  debug_ranges: DIE 的引用地址区间 7) . debug _ str: 包含. debug _ info 段中使用的符 号表。

  里通过指向函数的指针以实现对上一层程序的接 口一致。

  2. 2 ELF 文件解析 最为一个调试系统,最基本的功能就是在函数 中设置断点,让虚拟机在执行到有断点的语句时暂 停,为了实现这个功能,调试系统必须知道高级语 言中的语句与机器代码地址的映射关系,即行号表 ( line number) ; 并且需要知道各个变量被存储的地 址,以达到分析执行状态的目的,这便需要符号信 息。

  这些信息被封装在 ELF ( Executable and Link- 2. 3 时钟中断的实现 时钟中断是十分重要的中断,操作系统的运行 是依赖时钟中断,例如任务调度,以及众多有超时 的函数调用。其相关寄存器是有: DEC 和 TB ( Time Base) 寄存器。

  其中 TB 是一个 64 位寄存器,由 TBL 和 TBU 构成,其中 TBL 表示低 32 位,TBU 表示高 32 位。他在每个时钟周期后自增 1。而 DEC 寄存器已 TB 寄存器自增的频率自减。可以通过指令 mfspr 和 able Format ) 格 式 文 件 中。 ELF 文 件 格 式 最 初 由 UNIX 系统实验室开发,目前已成为 32 位操作系统 环境下较为通用的可执行文件格式。ELF 文件作用 有 2 个:

  其一为构建程序,主要体现在连接过程中, 这与我们的调试系统无关。这里主要分析的是用 于运行程序的 ELF 文件,其大体结构如图 9 所示。 mtspr 进行读写,当向 DEC 中写入一个大于 0 的值时, 它将在下一个时钟周期后自减 1。当 DEC 自减至 0 时,便会触发时钟中断( 除非 MSR〔EE〕将其屏蔽) 。

  由于 MPC8270 拥有乱序执行的能力,并且拥有 多条并行的流水线和执行单元,由于仿真这些操作 对虚拟机的性能影响极大,并且他对于调用没有很 大的好处,我们这里就简化了时钟的仿真,DEC 值 时随着指令的执行而减少。我们建立一个数组区 来存储每条指令执行的周期,然后在指令执行后 DEC 减少相应的值。这样导致仿真的时间并不十 分精确。但简单易行,可以满足实际应用需求。

  MMU 仿真模块的实现 MMU 即 Memory Management Unit 它是 CPU 中用 来管理虚拟存储器、物理存储器的控制线路,同时也负 责虚拟地址映射为物理地址,以及提供硬件机制的内 存访问授权,是支持众多操作系统运行所必须的模块。 PowerPC 处理器的 MMU 是完全支持段页式管 理 的,整体结构如图 10 所示。

  其中段寄存器负责将 有效地址翻译为内部虚拟地址,页表负责将虚拟地 址 翻译为物理地址。现代操作系统一般对分段支 持较弱,主要使用分页的功能。 MMU 有2 个重要的模块: 图 9 ELF 文件结构 段主要描述各个段的信 息,这里我们主要关注. text 段( 执行段) ,和一系列包含调试信息的. de- bug 段( 即 DWARF) 。 在 ELF 文件中所有的调试信息都以DWARF( De- bugging With Attributed Record Format ) 格式组织起来, DWARF 最基本的描述个体为 DIE( Debugging Information Entry) 。每个 DIE 都有自己的标签( 包含类型和一系列 属性) 。

  DIE 以儿子兄弟树的结构存储,属性值可以指向 其他的DIE。其主要包括以下几项: 1) . debug_frame: 含有调用栈的信息

  debug _ info: ( DIES) DWARF 包 含 的 核 心 数 据 1) TLB( Translation Lookaside Buffer) 页表旁路 缓冲,其保存了最近所使用的页表地址翻译,可以 加速页表的查询。

  debug_line: 包含行号信息 4) . debug_loc: 包含宏的描述7694 科学技术与工程11卷图10MMU 整体结构我们在模拟MMU时也保持其与真实的硬件操 作一致。

  其大体流程首先得到进程 ID,切换到目标上下文环境,检查是指令访存还是数据访存;

  检查MSR寄存器,查看地址转换功能是否开启,如果没开启则有效地址就是物理地 址,可直接访问内存;

  查看BAT是否命中,如果 命中则可以跳过地址翻译步骤,直接检查访问权限,未命中则继续;

  执行段翻译,将有限地址翻译为内 部虚拟地址;

  执行页翻译前首先查看 TLB,看相关 翻译是否已被缓存;

  执行页翻译,将虚拟地址翻译 为物理地址,并更新相关 TLB 信息;

  检查访问权 限,如果权限不够则会引发相关;

  完成地址翻译。MMU 仿真流程 2 ) BAT ( Block Address Translation) ,他是由软 件控制的一个数组,用来缓存有效的块地址翻译。

  通过上文崴泰小编详细的说明了Powerpc处理器开发出稳定和易用可靠的仿真调试平台。Powerpc处理器是一个代表着高水准的仿真调试平台。

上一篇: 下一篇:
展开