最近在开发一个新项目,芯片用的是STC15F2K60S2,而程序一个老工程师用汇编写的,需要在上面增加和修改一些内容。以前用惯了C,改用汇编的话的确有点吃力,里面跳转语句很多,指令也不太熟悉,用点灯的方式调试起来相当吃力。

后来想到要找一个类似jlink一样的调试器,但网上比较少,而且要好几百块。后来看到网上有人说用仿真器能够在keil里面能够单步调试、看寄存器的值,似乎这就是我要找的东西了。接下来就向STC的官网免费申请了几片样品,型号是:IAP15F2K61S2,刚好能够仿真STC15F2K60S2,而且还送了一个很不错的调试器,STC厂家的服务真不错呢!

把芯片焊上去,对着教程准备仿真,结果折腾了一个早上都没仿真成功,老是提示出错;"connection to target system lost ! please restet your arget system and try again"和“ error:target dll has been cancelled. debugger aborted !",最后顺着错误提示百度到解决方案:http://blog.csdn.net/weifengdq/article/details/23036531,原来是烧录芯片时设置STC-isp的用户程序IRC的频率太快,所以导致老是失败。把频率改小后就能仿真成功,仿真速度挺快的,功能和jlink有得一拼,可以单步调试、下断点、看内存变量的值、寄存器的值。(测试过把频率改为11MHz也能进行仿真,如果直接用默认的11.0592MHz则不行)

仿真芯片的仿真固件是保密的,但从实现的功能上看,能够猜出仿真器的大概的实现原理:利用往仿真芯片里烧录特制的固件,该固件负责在线烧录程序,把PC指针、PSW、各种寄存器的值和内存空间的值都发送给PC端,由Keil软件把这些数据解析出来。当我们把鼠标点击某一个变量的时候,Keil软件根据该变量的地址,发送一个请求该变量值的数据帧给仿真芯片,然后仿真芯片把读取的值回送给Keil把变量的值显示出来。程序的单步运行是把程序分成两段来运行,程序时刻在跑的是仿真固件的代码空间,当开始调试的时候,程序就跳到用户的代码空间里面运行,一旦点停止运行,程序就把用户代码空间的各种运行环境(PC指针,PSW寄存器)压栈,然后全力处理仿真程序;当点击运行键时,就把用户代码空间的运行环境出栈,重新开始执行用户程序。这个仿真器实际上相当于操作系统,能够自由切换用户空间和操作系统空间,切换的时候能够保存运行环境。至此,仿真器的原理大概就有了个清晰的认识了。

STC仿真芯片原理探讨相关推荐

  1. 关于 top、left 结合 translate 实现居中的原理探讨

    关于 top.left 结合 translate 实现居中的原理探讨 前情提要 在居中对齐的方法中常用的一种方法之一,就是使用绝对定位结合 translate.top.left实现居中,探讨原理之前先 ...

  2. MySQL 复制夯住排查以及原理探讨

    一 引子 研发反应,有台从库和主库不同步.由于业务读操作是针对从库的,数据不同步必定会带来数据的不一致,业务获取的结果会受影响,所以这个问题必须尽快解决. 登上服务器,查看 MySQL 的从库状态,并 ...

  3. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法:  1.从官网下载uv3.cdb的文件 网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb: 3. 然后 ...

  4. 51单片机(四)—— 51单片机仿真芯片的使用

    在前面的文章中,我们都是直接用串口将程序烧写到单片机中运行,在这种开发方式下,如果程序有问题,很难找到问题所在,用过一些高端单片机的人可能知道,一般单片机是可以用调试器调试的,可以单步调试.设置断点等 ...

  5. matlab 2ask,(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)

    <(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)>由会员分享,可在线阅读,更多相关<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实 ...

  6. USB之Cyusb3014芯片原理之四控制传输实现原理(十二) 2022-04-01

    1.写在前面 系列文章(一)到(十一)应该是总分的结构,最开始大致写明我要写的内容,后面将每一个点拆解出来作为一篇.本篇所要讲述的内容是基于Cyusb3014实现控制传输的原理,要求比较高,硬是从写文 ...

  7. USB之Cyusb3014芯片原理之三GPIF原理(十一) 2022-03-08

    Cyusb3014芯片原理之三GPIF原理 请参照GPIFII_Designer_User_Guide.AN65974第9节.AN87216以及(八)Cypress的技术支持之开发环境与应用架构学习关 ...

  8. STC系列芯片的串口通信编程

    STC系列芯片的串口通信编程 本人使用的是基于STC15F2K60S2芯片的开发板. 开发板上有关串口通讯的有:TMOD(定时器寄存器).CSON(串口通信寄存器).PCON(开发板电源控制寄存器)以 ...

  9. 触摸开关芯片原理及功能特点

    触摸开关,是随着科技进步的发展而研发出来的一种新兴产品,它是指应用触摸感应芯片原理设计的一种墙壁开关,是传统机械按键式墙壁开关的换代产品.能实现更智能化.操作更方便的触摸开关有传统开关不可比拟的优势, ...

最新文章

  1. 摇滚吧HTML5!Jsonic超声波前端交互!
  2. Spring REST XML和JSON示例
  3. disruptor消费者模型
  4. web端消息推送的方式介绍
  5. java中多态_java之多态
  6. requests 超时关闭_requests获取响应时间(elapsed)与超时(timeout)
  7. JAVA Maven和ANT 安装 Linux(Ubuntu/Centos),Mac
  8. 190106每日一句
  9. Python入门——爬取pubmed文献做分析
  10. python生成列表a到z_python实现 1-26=A-Z, then AA-AZ, BA-BZ...ZZA-ZZZ, AAAA, etc.
  11. Swift,任重而道远!
  12. 陈经纶2021年高考成绩查询时间,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  13. shell脚本实现猜大小游戏
  14. brew_install.rb 安装brew的文件
  15. python批量检索文献_基于Python的文献检索系统设计与实现
  16. shell笔记本xmind导出
  17. 电脑注册表编辑器在哪打开
  18. py实现外星人入侵(二次开发)——3.随机生成外星人和方向
  19. 算法训练营 图的应用(最小生成树)
  20. vue.js:父组件向子组件传递数据props

热门文章

  1. 《MATLAB智能算法30个案例》:第19章 基于模拟退火算法的TSP算法
  2. 平车调整刀片如何调整_最新电脑带刀平车基本故障与维修方法
  3. YOLOv3代码阅读笔记之utils.py(第六篇)
  4. python计算机视觉学习———图像分割
  5. 3D打印美容设备MagicBox
  6. 带宽、符号速率、比特率、码元速率、采样速率之间的关系
  7. 顺序栈的创建以及各种操作
  8. 动听的“教育之歌”,消费金融们的演奏响而不悦耳
  9. C++中流控制函数 setw() setfill() setbase() setprecision()
  10. Oracle数据库配置