<2012 12 03> 使用JTAG接口进行裸板开发
2012-12-04 09:57
253 查看
So,What's JATG?
JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试和DEBUG。现在多数的高级器件都支持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大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。例如下载程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要参照SOC DataSheet的寄存器说明,设置RAM的基地址,总线宽度,访问速度等等。有的SOC则还需要Remap,才能正常工作。运行Firmware时,这些设置由Firmware的初始化程序完成。但如果使用JTAG接口,相关的寄存器可能还处在上电值,甚至是错误值,RAM不能正常工作,所以下载必然要失败。要正常使用,先要想办法设置RAM。在ADW中,可以在Console窗口通过Let 命令设置,在AXD中可以在Console窗口通过Set命令设置。
JTAG已经事实上成为了去多高级芯片(如DSP、ARM、FPGA)的测试与编程标准,那么对于普通开发者来说,能使用的JTAG的工具主要有两类:
一类是并口的JTAG工具:由于JATG是基于并行操作的,因此如果计算机有并口,那么只要经过简单的电平转换和软件辅助(如H-JTAG),就可以进行开发了。这类工具关键还是辅助软件的开发。
另一类是串口的JTAG工具:由于现在的很多笔记本电脑根本不带有并口,因此需要一块转换板,讲串行信号(如UART、USB)转换成并行信号,这个转换不仅是电平的转换,还需要有关控制芯片的支持。市面上常见的这类工具有OpenJTAG、JLink。OpenJTAG配合Oflash这款开源软件能够进行一般的JTAG编程,但是支持的芯片数量不多。SEGGER公司的JLink是一款商业的强大工具,配合其软件包,能够进行几乎市面上能想到的所有芯片的开发,并且由公司的支持不断升级,能支持最新的芯片。但这个工具不幸非常昂贵,因此我大天朝发挥了其传统,强势山寨了一批产品,价格之低廉、性能之好,令人触目惊心。总是,山寨的JLink使用的软件还是官方的软件,或者是试用版,或者是破解版。
----------------------------------------------------------------------------------------------------------
下面说说怎么用Jlink和SEGGER公司的J-Link ARM进行JTAG的编程与调试:
. . . . . .
JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试和DEBUG。现在多数的高级器件都支持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大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。上面说的只是JTAG接口所具备的能力,要使用这些功能,还需要软件的配合,具体实现的功能则由具体的软件决定。例如下载程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要参照SOC DataSheet的寄存器说明,设置RAM的基地址,总线宽度,访问速度等等。有的SOC则还需要Remap,才能正常工作。运行Firmware时,这些设置由Firmware的初始化程序完成。但如果使用JTAG接口,相关的寄存器可能还处在上电值,甚至是错误值,RAM不能正常工作,所以下载必然要失败。要正常使用,先要想办法设置RAM。在ADW中,可以在Console窗口通过Let 命令设置,在AXD中可以在Console窗口通过Set命令设置。
JTAG已经事实上成为了去多高级芯片(如DSP、ARM、FPGA)的测试与编程标准,那么对于普通开发者来说,能使用的JTAG的工具主要有两类:
一类是并口的JTAG工具:由于JATG是基于并行操作的,因此如果计算机有并口,那么只要经过简单的电平转换和软件辅助(如H-JTAG),就可以进行开发了。这类工具关键还是辅助软件的开发。
另一类是串口的JTAG工具:由于现在的很多笔记本电脑根本不带有并口,因此需要一块转换板,讲串行信号(如UART、USB)转换成并行信号,这个转换不仅是电平的转换,还需要有关控制芯片的支持。市面上常见的这类工具有OpenJTAG、JLink。OpenJTAG配合Oflash这款开源软件能够进行一般的JTAG编程,但是支持的芯片数量不多。SEGGER公司的JLink是一款商业的强大工具,配合其软件包,能够进行几乎市面上能想到的所有芯片的开发,并且由公司的支持不断升级,能支持最新的芯片。但这个工具不幸非常昂贵,因此我大天朝发挥了其传统,强势山寨了一批产品,价格之低廉、性能之好,令人触目惊心。总是,山寨的JLink使用的软件还是官方的软件,或者是试用版,或者是破解版。
----------------------------------------------------------------------------------------------------------
下面说说怎么用Jlink和SEGGER公司的J-Link ARM进行JTAG的编程与调试:
. . . . . .
相关文章推荐
- <开发笔记>搭建LAMP服务器及使用FFMPEG进行切片、生成m3u8文件
- <2012 12 05> 在U-boot上用tftp进行文件传输需要注意的地方
- <2012 12 06>[转] U-boot研究与移植心得
- <2012 11 3 > linux设备驱动程序开发初探(1) 目次 概念 框架 最小驱动程序
- <2012 11 6 > linux设备驱动程序开发初探(6) 异步通讯机制: Kernel ---> APP
- <转载>在Eclipse中使用JUnit4进行单元测试
- <2012 12 13> 裸机编程与OS环境编程的有关思考
- <2012 12 05> FL2440开发板的U-boot-2010.09版本移植(七)NAND Flash启动支持
- <2012 12 17> Why ARM's EABI Matters?有关ARM-Linux平台浮点计算性能。
- <Android学习笔记6>——Android应用开发SharedPreferences存储数据的使用方法
- <2012 12 12> Linux and the GNU System —— by Richard Stallman
- <2012 11 4 > linux设备驱动程序开发初探(3) 练习:从零写一个查询式按键驱动程序
- <2012 12 11> 昨日看了一本书《Android技术内幕.系统卷》
- <2012 12 05> FL2440开发板的U-boot-2010.09版本移植(八)LCD的支持
- 使用ionic框架的<ion-scroll>进行水平滚动时,导致页面难以上下滑动的解决方案
- <新手>使用java8的Stream,根据Object某些属性对List<Object>进行筛选。
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程<二>
- <2012 11 13> 一步步建立linux&嵌入式linux应用与开发环境(based on 虚拟机)
- <iOS开发>之蓝牙使用
- <转载>在Eclipse中使用JUnit4进行单元测试