中国BGA返修台行业第一品牌
CN   |   EN
  • 1
  • 2
  • 3
  • 4
新闻资讯 / News
联系我们 / Contact

深圳市鼎华科技发展有限公司

深圳总公司

联系人:张先生 手机:18902853808

电话:0755-29091833 29091633

传真:0755-29091622

· 您现在的位置 :首页 > 新闻资讯 > 技术知识

Powerpc软硬件仿真调试开发环境和硬件设计工具环境

时间:2014-05-27 17:36:56 来源:鼎华科技 点击: 3565次

针对 PowerPC 体系结构,构建出一套完整的全系统模拟仿真平台,并重点阐述了 ELF 解析、指令集解析、虚拟 MMU 和 时钟中断模块的实现方法。

并基于一款 PowerPC( MPC8270) 处理器,开发出整套的仿真调试平台。经实践测试,所构建系统 易用、稳定、可靠。 

 嵌入式领域不断增大的应用需求,而传统的嵌 入式软件往往需要等待硬件平台制作完成后才可 以进行调试、开发,这极大的延迟了产品的研发周 期,并且在实际硬件平台上调试软件也具有一定难 度。所以,基于软件环境开发一套可以仿真硬件平 台的系统( 即虚拟机) 是十分必要的。 虚拟机( Virtual Machine) 系统实际上是真实硬 件平台的一个软件抽象。


它以一个普通的应用程 序运行在宿主机的操作系统之上,它将目标平台的 硬件行为抽象为宿主机的软件行为,从而达到模拟 的效果,软件架构如图 1 所示。 PowerPC 体系结构在嵌入式领域有着广泛的应 用和卓越的表现,构建一个针对它的仿真调试系统 是十分必要的。所以本文以 PowerPC 体系结构为仿 真目标,在 X86 体系结构的 PC 机上构建一个全系 统虚拟化调试平台。 1 虚拟平台总体设计 1. 1 平台整体设计 本仿真平台主要是针对 MPC8270 这一款高性 能、低功耗 32 位超标量 RISC 微处理器。其是 Power- QUICC TM II 族的一款 CPU,使用了 E603 的核心,工作 频率最高可达 450 MHz,拥有独立的 16 k 数据和程序 cache,以及独立的 DMMU 和 IMMU。

拥有多种可定 制接口,广泛应用于网络交换机和工业控制模块中。 图 1 虚拟机系统框架图 整个仿真平台核心功能就是在一台 X86 架构 的机器上,仿真一个 PowerPC 平台,可以如真实的硬 件平台一样加载运行相应的 PowerPC 的可执行文 件,并提供更方便的调试接口。 2011 年 8 月 17 日收到 第一作者简介: 孙胜杰( 1986—) ,男,汉族,陕西省西安市人,硕士 研究生,研究方向: 嵌入式应用技术。 MPC8270 软件仿真平台主要分为三层,整体架 构如图 2 所示: 1) 目标层: 目标 PowerPC 平台上的运行环境; 区进行读写操作。已达到调试的目的。 6) PowerPC 体系结构映射单元: 此单元维护了 源体系结构寄存器映射表,主要用于解释执行和维 护 PowerPC 体系结构的各个寄存器在运行时状态。 2) 虚拟化层: 整个系统的核心,即运行在主机 系统的虚拟机进程; 1. 2 平台工作流程 PowerPC 虚拟调试平台首先分析带有调试信息 3) 主机层: 实际宿主机的运行环境。 的 ELF 文件,分析出行号表( 即执行指令对应的程 序地址) ,变量地址以及对应的可执行文件。而后 我们将分析好的可执行加载进虚拟机中。而后虚 拟机开始执行加载进来的可执行文件。其内部以 一种 busyloop 的方式实现,首先检查是否有外部的 回调函数,外部可以通过此接口完成与虚拟机的通 信。而后检查将要执行指令是否有断点,如果有断 点则暂停运行,控制权交由上层的图形界面操作。 最后执行 interpret 完成取址、译码与执行。


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

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

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

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

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

5) 调试接口模块: 主要负责外部与虚拟机的通 信,可以向虚拟系统下断点、设置监视点。可以在 暂停虚拟机执行的状态下,对虚拟机的数据或程序 图 3 平台工作流程 , 7692 科 学 技 术 与 工 程 11 卷 作数,以及一个目的操作数。

这一指令格式的一些 变种使用部分目标和源寄存器操作数说明符作为 立即字段或作为扩展的操作码。Rc 标记是否记录 状态寄存器。 2 仿真平台模块实现 2. 1 指令解释 PowerPC 做为一款 RISC 处理器,所有指令的编 码长度都是 32 位。PowerPC 的位编号方式比较特 别: 第 0 位是最重要的位,第 31 位是最不重要的 位。指令首先由一个字段中较高的 6 位进行解码, 这 6 位被称为主要操作码( primary opcode) 。其余 26 位包含的字段分别是操作数说明、立即( immedi- ate) 操作数以及扩展的操作码( opcode) ,而且这些 还可能是保留的位或字段。PowerPC 定义的基本指 令格式有如下几种: 4) BD-form 图 7 D-form 指令格式 条件转移指令使用的是这一指令格式。BO 指 令字段指定了条件的类型; BI 指令字段指定了以哪 个 CR 位作为条件; BD 字段用作转移位置。AA 位 指定了转移是绝对转移还是相对转移。LK 位指定 了下一个顺序指令的地址是否作为子例程调用的 返回地址保存在链接寄存器中。 1) D-form 5) I-form 图 4 D-form 指令格式 这一指令格式提供至多两个寄存器作为源操作数 一个立即源,至多两个寄存器作为目的操作数。这一指 令格式的一些变种使用部分目标和源寄存器操作数说 明符作为立即字段或作为扩展的操作码。 图 8 D-form 指令格式 无条件转移指令使用这一指令格式。由于是 无条件的,BD 格式中的 BO 和 BI 字段改变为另外 的转移位置,以构成 LI 指令字段。 同 BD 格式一 样,这一指令格式也支持 AA 和 LK 位。 


对于一个真实的嵌入式系统,我们只需把可执 行的二进制文件烧录进相应的存储单元即可。我 们的虚拟调试系统为了做到对真实硬件平台的完 全仿真,我们的执行步骤也是遵循硬件执行指令的 经典步骤 : 取址、译码、执行。 2) X-form 图 5 D-form 指令格式 这一指令格式提供至多两个寄存器作为源操 作数,至多两个目的操作数。这一指令格式的一些 变种使用部分目标和源寄存器操作数说明符作为 立即字段或作为扩展的操作码。 1) 2) 取址: 通过访问内存得到 32 位的指令码。 译码: 译码的过程实际上就是找到相应指令 3) A-form 对应的处理函数。我们按照每条指令的 0 至 5 位进 行一次 hash 操作,得到一个处理函数的入口。如果 此指令还有扩展操作码或者其他标志位,我们在处 理函数中通过第二次 hash 找 到最终的函数入口。 实践表明,这种译码方式比树形的查找更加迅速。 图 6 D-form 指令格式 这一指令格式提供至多三个寄存器作为源操 3) 执行: 调用译码过程查找到的处理函数。这 5) . debug_macinfo&. debug _pubtypes: 包含全局 对象和函数的查找表 6) . 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 减少相应的值。这样导致仿真的时间并不十 分精确。但简单易行,可以满足实际应用需求。 2. 4 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: 含有调用栈的信息 2 ) . debug _ info: ( DIES) DWARF 包 含 的 核 心 数 据 1) TLB( Translation Lookaside Buffer) 页表旁路 缓冲,其保存了最近所使用的页表地址翻译,可以 加速页表的查询。 3) . debug_line: 包含行号信息 4) . debug_loc: 包含宏的描述 7694 科 学 技 术 与 工 程 11 卷 图 10 MMU 整体结构 我们在模拟 MMU 时也保持其与真实的硬件操 作一致。其大体流程如图 11 所示: 1 ) 首先得到进 程 ID,切换到目标上下文环境,检查是指令访存还 是数据访存; 2) 检查 MSR 寄存器,查看地址转换功 能是否开启,如果没开启则有效地址就是物理地 址,可直接访问内存; 3 ) 查看 BAT 是否命中,如果 命中则可以跳过地址翻译步骤,直接检查访问权限, 未命中则继续; 4) 执行段翻译,将有限地址翻译为内 部虚拟地址; 5) 执行页翻译前首先查看 TLB,看相关 翻译是否已被缓存; 6) 执行页翻译,将虚拟地址翻译 为物理地址,并更新相关 TLB 信息; 7) 检查访问权 限,如果权限不够则会引发相关; 8) 完成地址翻译。 图 11 MMU 仿真流程 2 ) BAT ( Block Address Translation) ,他是由软 件控制的一个数组,用来缓存有效的块地址翻译

相关文章:

360网站安全检测

首页 | 关于我们 | 新闻资讯 | 产品中心 | 服务支持 | 人才招聘 | 联系我们

业务咨询电话:0755-29091633 0755-29091833  传真:0755-29091622  手机:18902853808
Copyright © 2013 深圳市鼎华科技发展有限公司版权所有  粤ICP备13023878号
主营业务:BGA返修台|BGA返修设备|BGA焊台|BGA技术|自动螺机丝|BGA测试治具|BGA拆焊台|