zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew

     

    简单介绍DebugTransport的实现。

     

     

    1. JtagDTMConfig

     

    1) JtagDTMConfig

     

    这是关于JtagDTM的配置:

    其中:

    a. idcodeVersion:表示Jtag模块的版本号;

    b. idcodePartNum:表示Jtag模块的Part number;

    c. idcodeManfId:表示设计者或制造者的编号;

    d. debugIdleCycles:表示需要多少个时钟周期DMI能够完成请求的操作:

     

    2) JtagDTMKey

     

    用于查找JtagDTMConfig的关键字:

     

    3) JtagDTMKeyDefault

     

    JtagDTMConfig的默认值:

     

    2. dtmJTAGAddrs

     

    记录JTAGDTM中使用的IR寄存器的地址:

     

     

    3. DMIAccessUpdate

     

    定义写入dmi寄存器的数据的结构:

     

    各个字段的意义如下:

     

    4. DMIAccessCapture

     

    定义从dmi寄存器中读取数据的结构:

     

    5. DTMInfo

     

    定义dtmcs寄存器的结构:

     

    规范中的定义如下:

    注:规范的版本相较于代码实现较新,代码中没有实现dmihardreset。

     

    6. SystemJTAGIO

     

    定义系统JTAG接口:

     

    7. DebugTransportModuleJTAG

     

    用于生成调试传输模块:

     

    1) io

     

    定义调试传输模块的IO接口:

     

    其中:

    a. dmi用于与DMI模块相连:

     

    b. jtag是JTAG标准接口,用于与外部连接:

     

    2) DTM Info Chain

     

    a. dtmInfo是一个DTMInfo结构的数据:

     

    其值基本上都是默认值:

     

    其中,dmiStatus是dmi的状态,其定义在规范中为:

     

    dmiStatus使用stickyBusyReg/stickyNonzeroRespReg实现:

     

    b. dtmInfoChain

     

    dtmInfo用于实现dtmInfoChain:

     

    dtmInfoChain是一个CaptureUpdateChain:

     

    所谓Capture就是在Capture-DR状态把dtmcs寄存器的值捕获到移位寄存器中:

     

    所谓Update是指在Update-DR状态把移位寄存器的值并出到dtmcs寄存器中:

    在当前的实现中,只有dmireset为可以写:

     

    3) Debug Access Chain

     

    dmiAccessChain用于实现对dmi寄存器的读写:

     

    读取数据的结构为DMIAccessCapture,写入数据的结构为DMIAccessUpdate。

     

    4) busyReg

     

    busyReg是一个寄存器,用于记录busy状态:

     

    当通过DMI接口发起请求时,进入busy状态;当响应返回时,退出busy状态:

     

    5) busy

     

    a. busy

     

    busy是一个布尔值:

     

    表示当前是否busy:

     

    b. stickyBusyReg

     

    stickyBusyReg是一个寄存器:

     

    表示之前是否存在读取dmi寄存器时而结果还没有返回的情况发生:

     

    当写dtmcs.dmireset被写1时,清除stickyBusyReg的值:

     

    6) skipOpReg

     

    当DTM处于busy状态时,跳过操作:

     

    在Update-DR状态,把skipOpReg的值置为false:

     

    在Capture-DR状态,根据是否busy设置skipOpReg的值:

     

    在Update-DR状态,如果skipOpReg为真,则不修改dmiRegReg的值:

    也就是跳过操作。

     

    7) downgradeOpReg

     

    当之前的操作有错误时,把请求的操作降级为nop:

     

    在Update-DR状态,把downgradeOpReg的值置为false:

     

    在Capture-DR状态,设置downgradeOpReg的值:

    不busy并且有错误返回时,downgradeOpReg置为true。

     

    若downgradeOpReg为真,则向DMI发送的请求为OP_NONE:

     

    8) nonzeroResp

     

    非零响应即是错误响应:

     

    a. nonzeroResp

     

    nonzeroResp是一个标志位:

     

    当返回的相应非零时,或者存在历史非零响应时置位:

     

    b. stickyNonzeroRespReg

     

    stickyNonzeroRespReg用于记录历史非零响应,在Capture-DR状态时置位:

     

    9) dmiResp

     

    Capture-DR状态捕获的值,存在三种情况:

     

    a. 当busy为真时,使用busyResp:

     

    其中:resp=3,规范中定义为:

     

    b. 否则,当响应返回时,为dmiResp:

     

     

    c. 当响应没返回时,使用nopResp:

     

     

    10) dmiReqReg

     

    dmiReqReg用于向DMI发送请求:

     

    a. 当skipOpReg为真时,不改变dmiReqReg的值;

    b. 当downgradeOpReg为真时,dmiReqReg为全零;

    c. 正常情况下,dmiReqReg的值从移位寄存器中更新:

     

    d. 只有正常情况下,才向DMI发送请求:

     

     

    e. 针对不同的请求,接收响应的时机有所不同:

    如果是写请求,则响应返回时即可接收;

    如果是读请求,则需要在Capture-DR状态才能接收响应;

     

    11) idcode

     

    idcode是执行IDCODE命令时在Capture-DR状态获取到的值:

     

    这里之所以可以直接调用get,而不用担心返回None,是因为使用JtagTapGenerator时传入的icode是有值的:

     

    12) tapIO

     

    tapIO是使用JtagTapGenerator生成的JtagTap模块的IO:

     

    其类型为JtagBlockIO:

     

    13) io连接

     

    a. io.jtag

     

    io.jtag连接到tap的jtag接口:

     

    b. io.jtag_reset

     

    io.jtag_reset输出到tapIO.control.jtag_reset:

     

    作为Jtag状态机的复位信号:

     

    c. io.fsmReset

     

    当状态为TestLogicReset时,jtagTap输出reset信号:

     

    这个reset信号进而输出到io.fsmReset:

     

    io.fsmReset又被输出到DebugTransportModuleJTAG的复位信号:

                 

     

  • 相关阅读:
    JAVA窗口程序实例一
    内存容量出现异常的解决办法
    Android Studio 2.0使用指南
    Android 开机自启服务
    Android 图形总结
    今日课堂总结
    JSON
    GET方法和POST方法
    ajax的简单介绍
    网页-豌豆上的公主
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12683359.html
Copyright © 2011-2022 走看看