英利智能投资在三个月内完成两轮融资,融资总额超过1亿美元,
06-17
简介 目前,国产的一些在线仿真调试器可以对一些嵌入式芯片进行仿真和调试。
但本质上,这些仿真调试器并不能仿真和调试所有具有在线调试功能的嵌入式芯片。
BDI、TRACE32等仿真器可以通过下载特定嵌入式芯片的调试“内核”来模拟和调试不同的嵌入式芯片,而无需改变硬件。
但它们的价格非常昂贵,难以适应中国大多数中小企业的需求。
实际需求。
本文设计了一种基于SOPC软硬件协调设计验证技术的通用在线调试器。

SOPC技术将传统的在线调试器以芯片的形式呈现,采用知识产权核(IP核)复用技术,抽象出各种架构的嵌入式处理器接口,提供支持统一调试接口的IP核架构。
提出了基于通用在线调试器的嵌入式软件调试方法。
本文介绍了系统架构,以及关键子系统的工作原理及其与硬件环境的交互。
最后对JTAG IP核子系统进行了仿真和验证。
1 总体设计 系统由用户交互、在线仿真和JTAG IP核三个子系统组成,如图1所示。
用户交互子系统包括TCP/IP通信端口和用户交互接口。
主要负责源文件的访问和处理;接收调试命令,按照TCP/IP协议封装成调试命令请求报文,发送给通用调试器;同时解析目标机的响应。
其中,通讯口负责与通用在线调试器进行通讯。
在线仿真子系统是一个高度可扩展的嵌入式系统,适用于不同类型的嵌入式处理芯片。
它包括硬件部分和软件部分。
硬件部分采用SOPC技术加载Altera的IP核,形成以NiosII CPU为核心、TCP/IP和JTAG IP核端口为通信模块的硬件平台。
软件部分包括网络传输处理和JTAG IP核接口程序部分。
JTAG IP核是业务信号处理逻辑模块,可以是ARM、PowerPC、MIPS等不同架构的嵌入式处理器。
1.1核心子系统设计 JTAG IP核是核心部分系统的。
负责目标机调试命令的格式转换、传输逻辑控制、JTAG状态机状态转换控制。
JTAG IP核子系统分为5个模块,每个模块又由子模块组成。
模块的执行顺序不同,可以是并发的,也可以是顺序的。
JTAG IP核子系统的结构图如图2所示。
总线读写模块负责接收参数和指令,同时将处理后的数据输出到总线。
接收总线数据子模块接收来自Avalon总线的数据并更新标志位;读信号触发发送数据子模块向总线进行数据传输。
总线读写模块的逻辑流程如图3所示。
参数指令传递模块用于将总线读写模块接收到的参数和指令进行合并。
当写入有效且主控模块不工作时,将从Avalon总线接收到的第一位数据拼接起来存入参数寄存器,后32位数据由指令寄存器接收;当写入无效时,停止输入并启动状态机模块。
参数寄存器和指令寄存器均在此模块中定义。
状态机模块负责模拟JTAG状态机中的16种状态。
它依靠主控模块中的TMS序列驱动器来实现状态之间的转换。
同时,它发送TMS序列到JTAG TMS端口来控制目标机中的JTAG状态机。
跑步。
在SHIFT_IR和SHIFT_DR状态下,相应的目标机指令(如ARM指令)和数据通过JTAG的TDI端口发送到目标机。
目标机TDO序列接收模块负责接收目标机发来的数据并存储到相应的寄存器中。
JTAG状态机运行前,主控模块根据参数指令传输模块中指令寄存器的值更新状态机的TMS和TDI序列数据;然后初始化TMS寄存器、TDI寄存器、标志寄存器,并通过标志寄存器的值来判断JTAG状态机的操作;其操作完成后,将来自目标机的数据发送至状态机端处理子模块中的输出寄存器,并设置读取有效,启动总线读写模块。
1.2 JTAG IP核接口程序 在线仿真子系统中,JTAG IP核接口提供JTAG IP核子系统与NiosII CPU硬件环境之间的数据交互服务。
接口程序分为宏定义、写入数据、读取数据三部分。
宏定义部分,JTAG IP核中的操作指令包括:进入调试状态、获取CPU IDCODE、读/写寄存器、读/写内存、设置断点、设置观察点、退出调试状态等等。
数据写入部分,将目标机的内存地址和寄存器号作为参数数据传递给JTAG IP核子系统,调试指令(即宏定义中的指令)与参数一起写入 JTAG IP 核子系统。
部分程序代码如下: 其中,pi 表示参数数据(i=0,...,3),ir 表示指令。
IOWR_32DIRECT(JTAGTEST_0_BASE, ADDR(i), pi) 表示将 pi 或 ir 的值写入 JTAG IP 核。
数据读取部分的功能是从JTAG IP核子系统中读取目标机返回的数据。
当在线仿真子系统的Nios II CPU准备从JTAG IP核子系统读取数据时,JTAG IP核子系统中的寄存器数据不一定是有效数据,因此需要设置一个寄存器(名为read_ready)来循环通过检测数据是否有效。
如果寄存器的值不为0,则允许读取数据。
2 JTAG IP核子系统仿真验证 JTAG IP核子系统设计完成后,为了验证逻辑的正确性,在QuartusII环境下对IP核模块进行了仿真验证。
仿真中,将NiosII CPU给出的触发信号cLK修改为除以2,以便更直观地看到触发子系统允许的TCK信号的产生。
当启动JTAG IP核接口程序时,总线读写模块开始从Avalon总线读取参数和指令(如图4,writedata、address、inst|reg_in[0,1,4]和ir寄存器出现数据)。
当参数指令传输模块中的palm和ir寄存器出现数据时,主控模块开始工作;同时主控模块的busy_flag信号触发状态机模块工作。
从图中可以看出,TMS序列中出现数据,TDI端口开始发送数据。
JTAG IP核模块可以根据预定的设计输出TMS和TDI调试序列,表明IP核逻辑上是正确的。
结论 本文提出了一种基于知识产权核(IP核)复用技术的通用调试器设计思想和实现方法。
下一步可以基于ARM和MIPS系列芯片并结合本文的方案来实现具体的IP核,同时加入多线程调试等优化工作。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-06
06-21
06-17
06-17
最新文章
PCBA质检员的日常工作内容
美国法院裁定VoIP不属于电信服务,需征税
雷达嵌入式工控主板如何使用?工控主板故障分析
摩托罗拉在西班牙促销Z8手机
中宇买下了一台三星机型,品牌和规模是合作的主要原因
舰载军用加固计算机热设计
谷歌开始对仍由HTC生产的谷歌手机进行内部测试
英国EE分享LTE发展经验教训,面临终端-语音-回传三大挑战