最近在学习ARM,调试时总用JTAG接口的方式进行,但对JTAG的印象一直很模糊,不甚了了,所以今天特意查阅了下,找到一篇不错的文章,分享下,虽然作者说的是手机方面的,但大道相通。

1.

JTAG,不管是东海也好,东海的对手也好,已经做了一些科普工作了,我这里给大家说说JTAG应用的事情。
JTAG大家可能以为从来没接触过,但我告诉大家,即使是最古老的倚天、最古老的DH48N,里边的芯片,就是我们用JTAG数据线灌入的程序,才能干活的,实际大家使用这个功能,有快10年了。
JTAG是最基本的通讯协议之一,大家可以理解为与RX TX或者USB的道理是一样的,只是一种通讯手段,但与RX TX以及USB有很重大的不同,那就是这个JTAG协议是最底层的,说的通俗一点,一般来说,手机里边,CPU是老大,对吧?但在JTAG面前,他就不是老大了,JTAG协议就是用来控制CPU的,在JTAG面前CPU变成喽啰了。一般的协议是求着CPU读写字库的程序,但JTAG可以读写CPU的程序,命令让CPU啥活都干,擒贼先擒王,JTAG就是屠龙刀。
所有的手机CPU都支持JTAG协议,也必须支持JTAG协议,因为CPU里边的数据只有通过JTAG功能才能写入,在内部数据错乱的时候或者其他部分重要数据错乱的时候,CPU可能就不理会RX TX或者USB了,在这个时候,用JTAG协议功能,强制手机的CPU乖乖的干活。因此,所有的手机,所说的变成砖头了,真实的技术原因是,让手机响应RX TX或者USB进行操作,所必须需要的基础数据丢失了,手机CPU就不搭理RX TX或者USB了,因为这时候CPU是老大,他说不干一般人就没办法了;唯一的解决之道,就是用JTAG功能,让CPU变成马仔,强制他把这些基础数据恢复,砖头就又变成手机了。

JTAG信号,最基本的要有5条线,TCK TMS,TDI,TDO,复位信号。
复位信号,有的一条,有的多条,他的作用是镇压CPU,让他停下所有工作,等着JTAG信号对它进行控制,或者让 其某部分工作某部分暂停工作。
TCK信号,上位机的时钟信号,上升沿送入给手机CPU的数据,下降沿手机CPU回来数据。
TDI信号,上位机的数据信号。
TMS信号,上位机的另外一个数据信号,实际是命令指示以及区分的信号。
TDO信号,手机CPU回来给上位机的数据信号,让上位机知道手机CPU现在的状态是很乖还是不乖,进而根据CPU的状态进行控制。
说的更简单一点,让大家理解,就是在CPU由于软件原因不联机的时候,JTAG是唯一能够恢复这部分软件的工具。JTAG能够指挥CPU干任何事,在JTAG面前CPU只是一个马仔。
学无先后,达者为师,如果我说的有所疏漏,欢迎行家批评指正,呵呵。

2.

借这位兄弟的地方一用,以摩托罗拉为例,从另一个角度对JTAG做点介绍:摩托罗拉手机FLASH,SHX,JTAG,bootloader的解释。

FLASH是装载手机程序、存放用户信息、存放手机工作参数的载体、FLASH一般包括下面几个部份:
FLASH区域:NOR FLASH 存放手机的整个程序和字库、图形、音乐等信息;
参数区域:存放手机的工作参数,和一些与其它部位相对应的密码;
加密位或者隐含扇区:是独立于常规区域的一个小部份,存放的是一些加密信息,必须和FLASH参数区域对应;
NAND FLASH:大容量的存储器,用来存储MP3、电影等等,就是等同于U盘一样;
暂存器(RAM):运行手机程序,就像电脑的内存一样。
SHX文件的通常的3种类型:
1、Lang Pack语言包-包括手机语言集和字体,可以使手机快速更改可用的语言而不用修改整个手机FLASH芯片,语言包不会更改用户数据,FLASH或者FLEX,只包含BOOtloader(引导区)和一个语言包,通常在2M大小左右;
2、Flash--手机的升级文件,包含引导装入(ROM),Flash,DSP,语言包,DRM(制图),和Signature(签名)。一般正常带语言包(Lang Pack),除原厂软件外,在上传其它外版版本的FLASH文件时一般会把语言包删除掉,这样我们刷机过后,原来是什么语言刷过后也还是什么语言,而没有改变语言!因为我们在外国网站上找到的FLASH包一般都是带外语的语言包。方便一般的朋友刷机时刷完FLASH后,不用再刷中文语言包了,不过有时也根据需要要带上相匹配的中文语言包,如V3的41C3R,用9CR的中文语言包在41C3R的版本中查看不了内存!所以在上传时就把相匹配的中文语言包41COR的中文语言包加上去,这样就省去了很多朋友的麻烦!
3、Monster Pacd--我们通常简称为一体包;和FLASH内容相似,但是包括FLEX在内,包括引导装入,FLASH,FLEX,DSP,Lang Pack,DRM,Signture;是手机FLASH芯片完整的升级软件包!但是注意在升级时会清除你的数据,因为带FLEX!                    不过也还有一种类型是很少见的,就是SHX格式的FLEX,但通常用来强刷进去的,比方说刷HS格式的FLEX刷不进机内,所以就把它转换成SHX格式,然后强刷进去!
JTAG(Joint Test ActionGroup)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,即IEEE1149.1-1990。通过这个标准,可对具有JTAG口芯片的硬件电路进行边界扫描和故障检测。
    具有JTAG口的芯片都有如下JTAG引脚定义:
TCK——测试时钟输入;
TDI——测试数据输入,数据通过TDI输入JTAG口;
TDO——测试数据输出,数据通过TDO从JTAG口输出;
TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。
可选引脚TRST——测试复位,输入引脚,低电平有效。
含有JTAG口的芯片种类较多,如CPU、DSP、CPLD等。
bootloader是用来完成系统启动和系统软件加载工作的程序。它是底层硬件和上层应用软件之间的一个中间件软件,完成处理器和周边电路正常运行所要的初始化工作;可以屏蔽底层硬件的差异,使上层应用软件的编写和移植更加方便;不仅具有类似PC机上常用的BIOS(BasicInput Output System,基本输入、输出系统监控程序)功能,而且还可具有一定的调试功能。目前,在嵌入式系统开发中有多种bootloader可供选择,其中Motorola公司的名为dBUG的bootloader比较优秀。它可以移植在Motorola MC68000、ColdFire和PowerPC系列所有微处理器上面,有强大的调试功能,支持单步、下载、网络更新等;其良好的软件架构使用户能很方便地修改其代码,扩展新的功能。

这是我找到的两个不错的,分享了。

原帖地址:http://bbs.eastsea.com.cn/forum.php?mod=viewthread&tid=774636

JTAG是把屠龙刀,说说其作用和原理相关推荐

  1. volatile关键字的作用、原理

    在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到"半个"单例. 而发挥神奇作用的volatile,可以当之 ...

  2. Bundler 的作用及原理

    Bundler 的作用及原理 翻译 · yesmeck · Created at one year ago · Last by teacafe2000 Replied at one year ago  ...

  3. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架...

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  4. Batch Normalization的作用及原理

    目录 声明 BN是什么[1] 为什么提出BN[1, 2] BN的作用及原理 加速训练,提高收敛速度[1] 缓解梯度消失(梯度爆炸)[3] 缓解过拟合[4] 其他相关问题 BN和激活函数的顺序问题[5] ...

  5. 【原创】uC/OS 中LES BX,DWORD PTR DS:_OSTCBCur的作用及原理

    1 LES BX, DWORD PTR DS:_OSTCBCur ;OSTCBCur->OSTCBStkPtr = SS:SP!!! 2 MOV ES:[BX+2], SS ;将当前SS(栈的基 ...

  6. python super()方法的作用_详解python的super()的作用和原理

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递.uz0免费资源网 今天我们介绍的主角是s ...

  7. 主从复制面试之作用和原理

    主从复制面试之作用和原理 有些同学连集群和主从都分不清楚的,这里我说一下他们最本质的区别,其实也就是data-sharing和nothing-sharing的区别.集群是共享存储的.主从复制中没有任何 ...

  8. Java之String系列--intern方法的作用及原理

    原文网址:Java之String系列--intern方法的作用及原理_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的String的intern方法的原理. 常量池简介 在 JAVA 语言中 ...

  9. 计算机中数值怎么比较大小,数值比较器,数值比较器的作用和原理是什么?

    描述 数值比较器,数值比较器的作用和原理是什么? 一.数值比较器的定义及功能 在数字系统中,特别是在计算机中都具有运算功能,一种简单的运算就是比较两个数A和B的大小.数值比较器就是对两数A.B进行比较 ...

  10. 代理ARP的作用和原理

    Proxy(代理)ARP作用及原理 代理ARP是ARP协议的一个变种.对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机 ...

最新文章

  1. Java正则表达式--Matcher.group函数的用法
  2. 网页表格隔行显示不同颜色,怎样实现?
  3. Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...
  4. 程序员到底该怎么给女朋友挑礼物
  5. 知乎首页 粒子效果 动态背景
  6. ActiveMQ的几种集群配置
  7. IntelliJ IDEA 2019.1 windows找不到文件‘chrome’
  8. mybatis如何防止sql注入
  9. ucc编译器(中间代码生成)
  10. 林锐:5 C++/C程序的基本概念
  11. java反编译 luyten_Java——反编译工具 JD-GUI procyon-decompiler luyten crf (转)
  12. hd计算机技术,BD和HD的区别是什么?
  13. 宝塔面板强制绑定手机号码解决办法
  14. 计算机类外文翻译论文,计算机专业毕业论文 外文翻译.doc
  15. Cinnamon 任务栏网速绘制内存和CPU使用率竖线
  16. 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接
  17. 叮叮获取所有用户信息_使用Postman获取微信公众号用户列表,循环遍历查询所有用户的详细信息...
  18. [单调栈 扫描线] BZOJ 4826 [Hnoi2017]影魔
  19. python结合mitmproxy抓包实践
  20. 【分布式版本控制系统】GIT 托管网站 客户端

热门文章

  1. java aio_【Java】Java AIO使用
  2. JXL导出excel
  3. MSP432安装与环境配置(ccs) 学习笔记
  4. UIPageControl修改圆点图片及间距
  5. vue confirm 使用
  6. 产品未出 百度朋友圈“开演”
  7. qq日历android,QQ日历 | im.qq.com
  8. 瑜伽教学法 | 我是如何做到让馆主主动要给我加课的?
  9. 插件实现了钉钉和企业微信推送消息
  10. 用C语言做一个走迷宫代码