用过Keil的小伙伴们肯定对Ulink很熟悉。在日常的程序开发中,我们往往需要利用Debug的模式对程序进行调试以找到Bug的位置或者是程序运行到某一步的状态。在软件开发,特别是前端的开发过程中,可以通过编译器设置断点的方式或者单步调试的方式对程序进行调试;然而,对于单片机而言,调试往往没有像软件调试那么简单,因为单片机是一个个体独立于PC机,想要调试单片机,那么得有中间的驱动器来辅助调试(e.g.:Ulink设备),这个设备既可以通过USB协议来与PC机建立通信,也可以通过串口协议(e.g.:JTAG协议或者SWE协议)来与被调试的单片机建立通信。这就是仿真器的作用。

值得注意的是,仿真器相当于一个独立于PC机,并且独立于被调试的单片机的一个模块,其实也可以说这个模块也算是一个单片机,在这个单片机上集成了主控和外围电路,通过提前设计好的驱动程序(这个驱动程序存在于仿真器的主控当中,当然,如果你的程序容量特别大的话可以在你的仿真器上加一个外接存储芯片来存储驱动程序)来连接PC机和被调试的单片机,如下图所示。

除此之外,用户要在PC机上的Keil顺利地完成对单片机的调试仿真,还需要创建一个动态链接库(dll库),该库集成了USB协议和驱动命令,主要作用是与仿真器进行命令和数据的交换。当用户在仿真过程中,命令通过动态链接库发送USB总线,仿真器接收到命令后根据提前下载好的驱动程序进行命令的解析,然后向串口发送驱动单片机主控的指令,单片机的主控接收到相应的指令后进行对应的操作,包括数据的交换等等;

例子:PC机发送读取单片机中ACC累加寄存器的数值:

第一步:Keil通过动态链接库向USB总线发送读取ACC寄存器数值的命令,假设为命令为0x01;

第二步:仿真器通过USB总线接收该命令后,主控会向串口发送单片机读取寄存器ACC的指令,例如在八位机框架中,根据八位机8051的指令文档可以得到读取ACC的指令为0x0a,因此发送0x0a的指令到串口;

第三步:单片机接收到指令后会让单片机主控中的调试寄存器DREG执行相应的操作,然后将读取ACC寄存器的数值通过串口再传输回仿真器,仿真器接收到数值后再发送给USB总线;

第四步:PC机通过USB总线接收到ACC寄存器的数值,最终显示到界面上。

附:8051单片机的指令文档

指令 寄存器 数据长度 描述
... ... ... ...
1010 ACC 8 返回当前ACC寄存器的数值
1000 PC 16 返回当前PC寄存器的数值
... ... ... ...

第一章 仿真器的工作原理相关推荐

  1. 第五章 路由器的工作原理及其配置

    第五章 路由器的工作原理及其配置 5.1 广域网服务 WAN连接的目的是在两个远离的网络之间尽可能高效率传递数据.连接的效率越高,到最终用户的连接就越透明.WAN连接通常比L A N连接要慢.例如,一 ...

  2. 单片机搭建环境烧录方法_单片机仿真器的工作原理解析

    仿真器出现的原因 1.早期的单片机内部没有ROM,比如8031.8032,这种单片机只能外部扩展紫外擦除的EPROM存储器,就是芯片上带窗口的ROM.紫外擦除的ROM需要用紫外灯照射较长时间(10分钟 ...

  3. 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理

    本节和<Android群英传>中的第3章Android控件架构与自定义控件详解有关系,建议先阅读该章的总结 第4章 View的工作原理 4.1 初始ViewRoot和DecorView ( ...

  4. 第一章 神经网络如何工作(附Python神经网络编程.pdf)

    Python神经网络编程.pdf 链接: https://pan.baidu.com/s/1RkNfeNgT3Qtt_sEqRhw5Bg 提取码: 98ma 第一章 神经网络如何工作 神经网络的思考模 ...

  5. 第5章 8051单片机工作原理

    通过前面4位计算机的结构.指令和程序,我们对计算机这一事物有了比较深入的理解,但这个4位机结构简单.指令集不丰富.运算速度慢.不支持高级语言编程,基本没有多少实际应用价值,仅能用来理解计算机工作原理. ...

  6. 第一章 操作系统引论-操作系统原理和实践

    目录 三课合一: 要求学完要做到什么? 教材 目录 第一章操作系统引论 引例:操作系统在做什么? 你知道哪些操作系统的名字? 什么是OS操作系统? 1.1 操作系统的目标和作用 目标:方便性.有效性. ...

  7. 【hadoop权威指南第四版】第六章MR的工作原理【笔记+代码】

    6.1 运行MR作业 工作原理 四大模块: 客户端,提交MR作业. jobtracker,协调作业的运行.jobtracker 是一个java应用程序,主类是Jobtracker. tasktrack ...

  8. 第一台计算机如何工作原理,世界上第一台计算机是什么原理_世界上第一台计算机...

    世界上第一台电子计算机叫什么 史上第一台笔记本电脑 世界上第一台计算机诞生于 世界上的第一台电子计算机叫什么 今天你如何和远方的他交流 20世纪改变世界的通讯技术 世界上第一台电脑靠什么作为动力 向蒸 ...

  9. 第一章 引论(数据库系统原理)

    第一章 引论 前面一半听的是浙江大学陈岭老师的课,后一半听的是中国人名大学王珊等老师的课. 1 引论(浙江大学 陈岭) 1.数据库系统目的数据处理和管理是计算机应用最重要的领域,数据库系统知识对于计算 ...

最新文章

  1. 空间深度学习——ConvLSTM原理及其TensorFlow实现
  2. Host ‘XXX‘ is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
  3. 人工智能产品化的关键是基础架构和数据,而非算法
  4. 大话设计模式(十 会修电脑不会修收音机?——聊设计模式原则)
  5. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)
  6. 富士通大数据架构解决方案闪耀存储峰会
  7. actor对自己不可见
  8. vue+webpack5项目中全局引入scss
  9. 基于GIS+BIM技术的高速公路征地拆迁管理系统应用
  10. 解决NUC8豆子峡谷装黑苹果键盘错位的设置
  11. 为什么“家徒四壁”中的徒是仅仅,只有的意思?
  12. android判断apk的版本,Android APP 版本检查
  13. Incorrect string value '\xF0\xA0\x9D\xB9\xE5\x82...' for column 'CONTENT' at row 1
  14. 机器学习系列文章-决策树
  15. Android获取所有App信息
  16. Matlab画三维图笔记
  17. android插件化好处,写给程序员的Flutter详细教程,面试必问
  18. 【视觉高级篇】27 # 如何实现简单的3D可视化图表:GitHub贡献图表的3D可视化?
  19. 设计原则:单一职责原则
  20. Kindle PaperWhite3 越狱和PDF插件的安装

热门文章

  1. 机器学习入门 --- LDA与PCA算法(公式推导、纯python代码实现、scikit-learn api调用对比结果)
  2. 爱好-文化-冢:象冢
  3. 剑胆琴心护平安:致第二个中国人民警察节
  4. python可以开发桌面应用软件吗_用Python可以开发出桌面软件吗?
  5. 艾默生DCS(ModbusTCP)与西门子S71500系列PLC(PROFINET)通讯
  6. Qt学习3-Qt Creator四则运算计算器(哔站视频学习记录)
  7. HTML标签图文详解(二)
  8. 计算机三级网络技术知识点大纲,全国计算机等级三级网络技术考试大纲
  9. CentOS7 输入正确密码提示Sorry,that didnt work,please try again
  10. 2022年自己动手升级2015款MacBook Pro为1TB SSD 关键步骤详解