教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

ARM嵌入式实验开发环境熟悉实验 - 图文(7)

来源:网络收集 时间:2026-09-12
导读: 在调试状态下,指令的执行是由DCLK驱动的。而对存储空间(内存)的访问需要MCLK的驱动。那在调试状态下,如何实现对存储空间的访问呢?这个时候,边界扫描链1的BREAKPT位就派上用场了。在通过扫描链1插入一条指令的

在调试状态下,指令的执行是由DCLK驱动的。而对存储空间(内存)的访问需要MCLK的驱动。那在调试状态下,如何实现对存储空间的访问呢?这个时候,边界扫描链1的BREAKPT位就派上用场了。在通过扫描链1插入一条指令的时候,如果将BREAKPT位置1,意味这条指令的下面一条指令将在MCLK的驱动下执行,执行完毕后,自动返回调试状态。这样,通过扫描链1的BREAKPT位,我们就可以实现对系统存储空间的访问。让我们来看看要读取内存地址ADDR上的32位数据的大概步骤。首先,我们将要访问的地址ADDR写到寄存器R0当中去;然后用指令LDR R1, [R0]将地址ADDR处的32位长的数据拷贝到寄存器R1当中去;最后,将寄存器R1的值读出来,就得到了存储空间地址ADDR处的值。修改寄存器R0的值和读取寄存器R1的值的步骤在前面都详细介绍了,在下面,我只介绍结合BREAKPT如何用指令LDR R1, [R0] 来真正的访问系统存储空间,将地址R0处的内容拷贝到寄存器R1当中去。具体过程如下(在下面描述的每一个步骤,TAP状态都是从RUN-TEST/IDLE状态出发,最后回到RUN-TEST/IDLE状态):

? 插入空指令MOV R0, R0 & BREAKPT = 1:

——首先插入一条空指令,该指令的主要目的是将扫描链1的BREAKPT信号置1。这样,这条空指令的下一条指令将在MCLK的驱动下,回到正常状态下运行。

? 插入指令LDR R1, [R0]& BREAKPT = 0:

——因为上一条指令将扫描链1的BREAKPT置1了,所以,这条指令将在MCLK的驱动下,回到正常的系统状态下去执行;

? 将JTAG RESTART指令插入到ARM7TDMI的JTAG指令寄存器当中去:

——将RESTART插入到JTAG指令寄存器当中去有几个作用。一是,使ARM7TDMI重新同步于MCLK信号;二是,使刚才插入的指令LDR R1, [R0]在系统正常状态下,在MCLK的驱动下执行;三是,在系系统正常状态下执行完指令LDR R1, [R0]后,使ARM7TDMI自动返回到调试状态下;

在将RESTART写入到JTAG指令寄存器,并且在TAP Controller回到RUN-TEST/IDLE状态后,ARM7TDMI将会暂时返回到正常的运行状态。在正常的运行状态下,ARM7TDMI将以系统速度(MCLK驱动)完成指令LDR R1, [R0]的执行。执行完毕后,ARM7TDMI将自动返回

到调试状态。这样,寄存器R1中就已经有了地址ADDR处数值的一个拷贝了。最后需要做的就是通过前面介绍的方法,在调试状态下,将R1的值读出来。在需要访问内存的时候,需要注意的就是扫描链1中BREAKPT位的设置,以及JTAG RESTART指令的使用。

(4)写内存:

修改内存的过程和读取内存的过程类似,大概步骤如下:将内存地址ADDR写到寄存器R0当中去,将新的值写到寄存器R1当中去,最后利用指令STR R1 [R0]完成实际的内存访问。在将指令STR R1 [R0] 插入插入到扫描链0之前前,将扫描链1的BREAKPT位置1,以使得关键指令STR R1 [R0] 能在MCLK的驱动下,回到正常的系统状态下去执行,以便能正常访问系统存储。

在这个小节里,我们主要介绍了通过边界扫描链1如何访问ARM7TDMI的通用寄存器和系统存储空间。在我们的讨论当中,为了简单起见,我们使用了最简单的LDR和STR指令。在实际的调试过程中,可以使用LDM和STM指令,这样一次可以读写多个寄存器或者是多个地址上的数据,提高效率。从上面的讨论可以看出,在调试状态下,每次对通用寄存器和系统存储系统进行访问都需用多条指令来实现。每次插入一条指令到扫描链1中去,都需要33个TCK时钟周期。因为并口的速率限制,通过并口进行调试时,速度会比较的慢。如果使用USB接口或者网络接口,调试的速度将能够获得很大的提升。

五 实验过程

1

超级终端的建立

思考:建立超级终端的目的是什么?

(1)、运行Windows 系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端(请见图19)。如图20所示,如果要求输入区号、电话号码等信息请随意输入;出现如图21所示对话框时,为所建超级终端取名为arm(也可以选择其它的名字),可以为其选一个图标,单击“确定”按钮。

请大家注意:在windows xp操作系统下,当初次建立超级终端的时候,会出现如下对话框:

图19 可能的选择

图20 创建超级终端

图21 创建超级终端

(2)、在接下来的对话框中选择ARM 开发平台实际连接的PC 机串口(如COM1)如图22所示,按确定后出现如图23所示的属性对话框,设置通信的格式和协议。这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。按确定完成设置。

图22 创建超级终端

图23 创建超级终端

(3)、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置保存为一个特定超级终端到桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了

2 JTAG安装过程

JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输

入和数据输出线。

JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System Programmable;在线编程),对FLASH等器件进行编程。

JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程实现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程. 在本实验将要利用JTAG多加载引导程序vivi进行烧写,所以必须安装其驱动。

具体步骤如下:

图24 创建超级终端

(1)连接电源,将5V电源线的连到UP-NETARM2410-S的电源接口;连接串口线,一端连接PC的串口,另一端连接到UP-NETARM2410-S的串口(上面的);

(2)把并口线插到pc机的并口,并把并口与JTAG相连,JTAG与开发板的14针JTAG口相连,打开2410-S电源.

(3)把整个GIVEIO目录拷贝到C:\\WINDOWS下,并把该目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下。

(4)在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:\\WINDOWS\\GIVEIO\\giveio.inf文件,点击确定,安装好驱动。

3 利用JTAG烧写vivi

Bootloader (引导装载器)是用于初始化目标板硬件,给嵌入式操作系统提供板上硬件

资源信息,并进一步装载、引导嵌入式操作系统运行的固件。简单地说,bootloader就是在操作系统内核运行前运行地一段小程序。通过这段小程序,我们可以初始化必要的硬件设备,创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。在嵌入式系统开发过程中, …… 此处隐藏:2287字,全部文档内容请下载后查看。喜欢就下载吧 ……

ARM嵌入式实验开发环境熟悉实验 - 图文(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/445567.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)