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

简单介绍TLDebugModuleInner中生成DMI控制和状态寄存器使用到的状态。

1. abstractCommandBusy

表示是否处于等待状态,如果不是在等待状态,则视为Busy:

2. ABSTRACTCSWrEnLegal

如果正处于等待状态,则可以合法写入ABSTRACTCS寄存器:

3. COMMANDWrEnLegal

如果正处于等待状态,则可以合法写入COMMAND寄存器:

4. ABSTRACTAUTOWrEnLegal

如果正处于等待状态,则可以合法写入ABSTRACTAUTO寄存器:

5. dmiAbstractDataAccessLegal

如果正处于等待状态,则可以合法写入Abstract Data寄存器:

6. dmiProgramBufferAccessLegal

如果正处于等待状态,则可以合法写入Program Buffer寄存器:

7. errorBusy

如果写寄存器的时候不是等待状态,则出现错误,错误在于调试模块正忙,置位errorBusy:

8. commandWrIsAccessRegister

表示调试器写入的抽象命令的类型是不是AccessRegister:

9. commandRegIsAccessRegister

表示当前抽象命令寄存器中的抽象命令的类型是不是AccessRegister:

10. commandWrIsUnsupported

表示调试器写入的抽象命令不是AccessRegister,当前仅支持这一种命令类型:

11. commandRegIsUnsupported

commandRegIsUnsupported是一个标志位,如果没有更改其值,则为真:

如果抽象命令寄存器中的命令是AccessRegister,考虑把commandRegIsUnsupported的值置为假,也就是支持该命令:

这分为三种情况:

a. 读Custom源节点的寄存器:当命令为read transfer时,命令被支持;亦即write transfer不支持;

b. 如果transfer为0,命令也支持;

这是一种特殊情况,也就是直接执行Program Buffer中的指令。需要配置transfer为0,postexec为真:

这种情况下,生成的抽象命令是两条nop指令。

c. 根据截断式或的特性,此时transfer为真。在transfer为真的情况下,无论write是何值,当访问的是GPR时是支持的。亦即,访问其他寄存器是不被支持的:

12. commandRegBadHaltResume

commandRegBadHaltResume是一个标志位:

表示核心的halt/resume状态是否是错误的:

如果抽象命令是AccessRegister:

a. 如果核心处于暂停状态,则不是错误的;

b. 如果核心不处于暂停状态,则是错误的;

13. accessRegIsGPR

accessRegIsGPR表示访问的寄存器是GPR:

仅支持访问GPR寄存器:

14. accessRegIsCustom

accessRegIsCustom表示访问的是Custom源节点的寄存器:

15. wrAccessRegisterCommand

表示向抽象命令寄存器中合法写入了命令,将要生成抽象命令并执行:

16. regAccessRegisterCommand

如果抽象命令寄存器中的是合法指令,并且触发了执行抽象命令(autoexec),就像刚写入抽象命令一样:

可以生成抽象命令并执行:

最新文章

  1. 窗体作为控件嵌入panel
  2. Jmeter教程索引贴
  3. iOS开发之滤镜的使用技巧(CoreImage)
  4. http和htpps
  5. 利用getchar()消除多余字符数据(主要是“回车”)
  6. api.connectionType 判断当前网络技术经验
  7. Oracle 日期处理
  8. Struts1 中$ 没有解析的问题
  9. 用HTML5、地理定位API和Web服务来开发移动应用
  10. NOIP2002-普及组复赛-第三题-选数
  11. 对端口Com1的访问被拒绝
  12. openstack controller ha测试环境搭建记录(二)——配置corosync和pacemaker
  13. Pycharm配置(二)
  14. hibhibernate中hql中的语句where语句查询List出现空
  15. JavaScript开发者应懂的33个概念
  16. 点赞功能与redis
  17. LinkedQueue的底层实现
  18. 8-安装Kafka
  19. linux Email 体系
  20. angular 表单元素的验证清除问题

热门文章

  1. linux解压缩tar.gz文件
  2. leetCode刷题 | 两数之和
  3. apply call bind的用法与实现
  4. Flutter中如何使用WillPopScope
  5. [hdu5266]区间LCA
  6. HTML简单的伪装与造假
  7. 高性能MySQL之索引深入原理分析
  8. 【蓝桥杯C组】备赛基础篇之前缀和算法
  9. Postman学习之Authorization
  10. pyppteer下