新闻中心

EEPW首页>嵌入式系统>设计应用> 基于USB的ARM仿真器的研究与设计

基于USB的ARM仿真器的研究与设计

作者: 时间:2010-06-29 来源:网络 收藏

(2)电路(包括供电电路)
接口电路如图4所示。为了使LPC2148的软件可以更灵活地控制设备与主机之间的连接,本接口电路使用P0.31(只能使用该引脚)来实现SoftConnect特性。当P0.31输出低电平时,D+线通过电阻上拉到VDD3.3,通知USB主机:USB设备与其建立连接;当P0.31输出高电平时,D+线断开与VDD3.3的连接,通知USB主机:USB设备已经断开与USB主机的连接。

本文引用地址://m.amcfsurvey.com/article/151764.htm

Q1选用的是P沟道MOS管,而不选用普通的PNP三极管,因为MOS管是电压驱动型,驱动电流几乎为0;而普通的PNP三极管是电流驱动,需要一定的驱动电流。导通时,P0.31_P17有可能被拉低,LPC2148要求该引脚在复位引脚为低电平期间不能被拉低,否则JTAG口将被禁止,因此必须选用P沟道的MOS管。LPC2148的P0.23引脚为USB设备控制器,用于检测USB总线是否插入检测引脚[4]。
4固件程序
LPC2148芯片中的固件程序实现的功能包括:通过USB与上位机软件进行通信,并将上位机发送过来的、经过封装的USB数据流转换为JTAG信号,并最终送到相应的引脚或者将相应引脚的数据经过封装后,通过USB传送到PC机中。图5为应用程序的流程图。

主函数首先将作为JTAG接口使用的5个引脚设置成相应属性,并完成USB设备初始化,配置中断向量、开中断,然后进入无限循环函数。
无限循环函数首先处理USB事件,如USB控制传输、USB总线复位等。然后判断标志位是否收到数据,如果未收到则继续执行无限循环;如果收到了数据,则将数据从端点缓冲区读出,再交给数据处理函数处理。数据处理函数按照上位机程序对数据封装方式进行解析,根据解析的命令(读取TDI、写TMS或TDO等),通过分支处理跳到相应的处理函数。在这个过程中如果上位机要读取调试目标数据,可将相应的值按同样格式进行封装,然后通过USB发送到上位机。数据封装格式如图6所示。

C语言定义的命令码如下:
#define UNKOWN_COMMAND 0x00 //未知指令
#define PORT_DIRECTION 0x01 //设置端口方向为输入或输出
#define PORT_SET 0x02 //将JTAG端口的引脚都设为高电平
#define PORT_GET 0x03 //读JTAG端口的引脚数据
#define PORT_SETBIT 0x04 //设置JTAG端口的某一位为1,由DATA[0]中数据决定设置的具体位数
#define PORT_GETBIT 0x05 //读取JTAG端口的某一位为1,由DATA[0]中数据决定读取的具体位数
#define WRITE_TDI 0x06 //写TDI信号命令
#define READ_TDO 0x07 //读TDO信号命令
#define WRITE_AND_READ 0x08 //读写指令,对TDI写一位,对TDO一位
#define WRITE_TMS 0x09 //写TMS信号命令
#define WRITE_TMS_CHAIN 0x0A //写TMS扫描链命令
经实际测试下载速度稳定在30 KB/s左右,具有单步、全速、设置断点(两个硬断点和无数软断点)等功能。本文提出了一种具有硬件电路简单、价格低廉、调试速度快的仿真器方案,是取代传统并口方式仿真器的一种确实可行的方案。
参考文献
[1] 田泽.嵌入式系统开发与应用[M].北京:北京航空航天大学出版社,2004.
[2] 邓春梅.嵌入式系统软件仿真技术的与实现[D].成都:电子科技大学,2004.
[3] 杨晶箐.USB接口的边界扫描测试控制器的设计与实现[D].成都:成都电子科技大学,2006.
[4] 周立功,张华.深入浅出7-LPC213x/214x[M].北京:北京航空航天大学出版社,2005.


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭