[] 边界扫描(Boundary Scan) 初次研究

这篇具有很好参考价值的文章主要介绍了[] 边界扫描(Boundary Scan) 初次研究。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Boundary Scan 初次研究

1 本文用简单直白的方式介绍了边界扫描的原理,用途,实现方法。

2 使用STM32做了一个简单的JTAG时序模拟器。

3 能够测试BYPASS指令,读出ID,以及IO状态。

4 上位机目前空白,有时间在写吧,串口发送实在痛苦。

      想必玩过FPGA的都知道FPGA有一个调试的接口叫JTAG,玩过单片机的都知道有个东西叫JLINK,这两个又有啥关系呢   JLink 是个在线仿真器,平时用来烧个程序,在线调试个程序啥的,这其中用的接口协议叫JTAG,(STM有个专用接口叫SWD),现在觉得这个接口调试程序还挺方便的,不过最初设计这个接口的目的可不是这个,有点无心插柳柳成荫的感觉。早年随着大规模集成电路的出现,PCB板制造工艺向小,微方向发展,传统的ICT测试已经没有办法满足这类产品的测试要求。由于芯片的引脚多,元器件体积小,板的密度特别大,根本没有办法用探针进行测试。一种新的测试技术产生了,联合测试行为组织(Joint Test Action Group)简称JTAG, 定义这种新的测试方法即边界扫描测试。就是我们今天要讲的Boundary scan。

借用网上的图来说明

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

如上图,如果一个芯片的引脚很多,用的还是BGA封装,那么传统方法将无法扎针测量,于是测试人员就想起来了,在芯片内部设计一个移位电路,将所有引脚的状态通过移位方式读出来。那么这样就可以用很小的成本实现可测性。只需两个引脚TDI TDO.

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

由于移位电路的特性,即使多个芯片也只需将TDI和TDO串联在一起即可,多发几个时钟而已。

于是科研人员就专门制定了标准和接口,所有的IC都按照这个标准执行,接口叫JTAG。 IEEE1149.1标准就是由JTAG这个组织最初提出的,最终由IEEE批准并且标准化的。而实现Boundary Scan 是通过TJAG接口由IC内部的TAP 控制器来实现各种操作。

JTAG接口由四根线组成:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线,(还有可选引脚TRST——测试复位,输入引脚,低电平有效)

TAP Controller 是一个有限状态机,扫描测试的每个环节都由它来控制。TAP Controller 由TMS在时钟上升沿触发,主要有以下三方面的功能:

1 加载Instruction 指令

2 产生控制信号,移入和移出数据

3 执行测试操作,如捕获,转移,更新

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

BYPASS

IDCODE

EXTEST

SAMPLE/PRELOAD

首先介绍

BYPASS指令

   所有的芯片都必须支持这个指令,因为在测试系统中,通常会出现多个芯片,如果仅仅只是想与一个芯片通信,根据移位原理,需要移所有个脚数量的时钟,显然是比较浪费的,通过跳过不测试的芯片用于节省时钟,提高速度,这就是Bypass的功能,但是你会发现这个基于硬件的最小回路(短接)是由移位寄存器实现的,因此不同于直连,需要消耗一个时钟才能将数据移入或移出,这点在后续的数据处理中尤其重要。我也在此处花了很长时间才搞明白。这里留个问题,是否可以通过移入数据和移出数据对比来判断回路中连个多少个IC呢?

IDCODE 指令

    顾名思义,这个指令是用来获取被链接芯片的唯一序列号的。注意他是32位的,包含

内容包括IC的生产厂商,芯片类型,版本等,并且在执行这个指令时,并不会影响CPU的正常执行。这里也留一个问题,是否可以通过读出的这个唯一值来判断电路中接的IC是那个型号以及链路中的位置呢?

SAMPLE 指令

 这个就是Boundary scan关键的指令用来监控当前引脚的状态。注意执行他的时候并不会影响CPU的正常运行

EXTEST 指令c

这个也是Boundary scan关键的指令用来控制指定引脚的状态。注意执行它的时候会影响CPU的运行,也就是说CPU这时无法控制输出了,而是由发送的命令来控制,当然有点“危险”需要谨慎操作。如外部电路接到了地,本来是输入脚,误被命令配置成了输出拉高,将造成不可逆的损伤,当然这部分会有上位机软件严格来配置执行。

接下来将重点说说TAP ,先来展示一张经典的TAP状态图

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

先别看这么复杂,其实这里面的 0和1 指的是TMS引脚的状态,在每次TCLK的上升沿通过改变TMS的高低来切换不同状态。而DR指的是数据寄存器,IR指的是指令寄存器。

这里面有个重点就是数据的位宽并不是我们通常C里面的8位 16位这些,而是在BSDL文件中定义的。这个在后续写程序中也尤其重要。

那什么是BSDL文件呢,这个是每一个IC的身份文件,用来描述引脚的位置,数量,排列以及支持哪些命令等等信息,可以在官网免费下载的到。我们以STM32为例,可以在如下网址下载

Search - STMicroelectronics

打开后有没有点似曾相识,他其实就是一份VHDL写的硬件描述信息,最开始定义引脚信息,往后看到了

这个就是

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

这个就是它所支持的命令,看到了吧。位宽只有5位。用单片机发这玩意就是折腾。

本人熟悉单片机想着先用单片机试试写个简单的时序来玩玩。于是找来了两个STM32F103的核心板。简单的用杜邦线搭起来。写个时序。

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

顺便把逻辑分析仪也加上,初次验证似乎不太顺利。

发了命令怎么回的乱七八糟的,一堆0101的看不懂。仔细翻看协议,原来是要先发送LSB.

先试下读ID吧

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

完全没看懂,不过似乎读出的值没变,但解析出来的值,怎么看着都不对

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

根据手册中的值,应该是0x16410041呀。难道命令发错了。于是又试了下BYPASS指令

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

随便发了点数据,总算发现规律了原来,数据发生了移位。但为啥移了两位不是以为吗?

再仔细看手册,原来STM32内部可不是一个TAP控制器,还有个SWD的,要两个时钟才能移出原数据,这下对上了。

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

在回去看下读ID的命令,

boundary scan,stm32,边界扫i描,Boundary Scan,单片机,fpga开发,stm32

将数据左移移位,然后在高低bit反转,果然解析出来的数据就是0x16410041。

命令找到了,数据位也对上了。接下来就是正常的发命令读写就是了。

不过这玩意最好还是搞个上位机,数据量太大了。

本文所用到的源工程, 源文件,参考PDF和BSDL文件,上传CSDN,供大家学习参考。共同交流。

下载网址  https://download.csdn.net/download/snail_dongbin/87695314文章来源地址https://www.toymoban.com/news/detail-615306.html

到了这里,关于[] 边界扫描(Boundary Scan) 初次研究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 磁盘调度算法之先来先服务(FCFS),最短寻找时间优先(SSTF),扫描算法(SCAN,电梯算法),LOOK调度算法

    寻找时间(寻道时间) Ts:在读/写数据前,将磁头移动到指定磁道所花的时间。 ① 启动磁头臂 是需要时间的。假设耗时为s; ② 移动磁头 也是需要时间的。假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道。 则寻道时间 T s = s + m ∗ n Ts =s + m*n T s = s + m ∗

    2024年02月08日
    浏览(13)
  • 第三章:boundary-value analysis

    边界值分析是在等价类划分的基础上进行的,其目的是为了找到更好的 test cases 边界条件是应用于 输入等价类 和 输出等价类 的边界上方、下方和直接上的谓词。 直观地说,边界值分析旨在选择测试用例 以探索程序的边界条件 。边界值分析和输入划分密切相关。它们都利用

    2024年02月05日
    浏览(10)
  • Content type ‘multipart/form-data;boundary=解决方案

    记录一个小问题 今天在用postman调试接口,发送请求的时候没进入断点就报错\\\" Content type \\\'multipart/form-data;boundary=--------------------------xxxxxxxxxxxxx;\\\" 当时我就纳了闷了,东研究西研究的找了半天原因。 最后找了一个老师傅,一眼就看出来问题了。因为接口是别人写的,我属于后面

    2024年02月15日
    浏览(22)
  • python中redis进行模糊查询(keys()、scan()、scan_iter())

    python中使用redis进行模糊查询,可以使用scan()命令模糊匹配key。 keys命令 :简单粗暴,但是由于Redis是单线程,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产生的阻塞时间越长。 scan命令 : 以非阻塞的方式

    2024年02月07日
    浏览(7)
  • 强大的JTAG边界扫描(4):STM32边界扫描应用

    试想这样一个场景,我们新设计了一款集成了很多芯片的板卡,包括BGA封装的微控制器,如FPGA/MCU,还有LED、按键、串口、传感器、ADC等基本外设。 我们需要测试一下硬件电路工作是否正常、焊接是否良好,通常我们会写个测试代码,比如控制LED闪烁,读取按键的输入,串口

    2024年02月09日
    浏览(11)
  • Deep learning of free boundary and Stefan problems论文阅读复现

    在这项工作中,作者提出了一个基于物理信息神经网络的多网络模型,来解决一类一般的正和逆自由边界问题,称为Stefan问题。具体地说,用两个深度神经网络来近似未知解以及任何移动边界。作者提供了三个案例研究(一维一相Stefan问题,一维二相Stefan问题,二维一相Ste

    2024年02月08日
    浏览(15)
  • 【CVPR 2023 论文解读】TriDet: Temporal Action Detection with Relative Boundary Modeling

    发表时间:CVPR 2023 作者团队:北航,美团,JD Explore 代码链接: GitHub - dingfengshi/TriDet: [CVPR2023] Code for the paper, TriDet: Temporal Action Detection with Relative Boundary Modeling [CVPR2023] Code for the paper, TriDet: Temporal Action Detection with Relative Boundary Modeling - GitHub - dingfengshi/TriDet: [CVPR2023] Code for t

    2024年02月05日
    浏览(20)
  • FileUploadException: the request was rejected because no multipart boundary was found

    前端使用 form 提交文件到后端。 使用 jquery/axios/fetch 或其他HTTP客户端程序发送HTTP请求,但是后端(Spring框架)报错如下: 我是因为设置了 \\\"Content-Type\\\": \\\"multipart/form-data\\\" 这样的头,才会失败。 这个请求头的格式样例(见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type):

    2024年02月10日
    浏览(16)
  • redisTemplate.scan 使用注意

    2024年02月12日
    浏览(9)
  • redis应用 9: Scan

    在平时线上 Redis 维护工作中,有时候需要从 Redis 实例成千上万的 key 中找出特定前缀的 key 列表来手动处理数据,可能是修改它的值,也可能是删除 key。这里就有一个问题,如何从海量的 key 中找出满足特定前缀的 key 列表来? Redis 提供了一个简单暴力的指令 keys 用来列出所

    2024年02月10日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包