easier 发表于 2020-1-5 10:50:43

STC的(硬件)在线仿真, 請問高人 它如何實現

https://www.amobbs.com/thread-5724524-1-1.html

health 发表于 2020-1-5 12:34:35

少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序,占用一个串口。
可以实现运行,停止,单步,断点,查看变量等功能。
停止是通过PC发数据使单片机进入串口中断程序,从而打断用户程序运行。
运行是退出串口ISR,恢复用户程序运行。
断点是通过修改用户程序断点位置的指令,跑飞至监控程序运行。单步运行同理。

keil原版的Monitor-51,用户程序是在外扩RAM里运行的,非常便于修改,但掉电就丢失了。
后来一家叫SST的公司,推出的51单片机具有IAP功能,就是程序可以自己改写Flash内容。
SST将Monitor-51改造,用户程序也可以放在Flash中,直接一片单片机就可以仿真,不需要专用硬件,但是每加一个断点,单步每走一步,都要擦写Flash,所以速度慢一些,对Flash寿命也有影响。
这一时期出现了很多简易的51仿真器,都是基于SST这一方案做的。
再后来,STC横空出世,终于一统全宇宙,独霸51单片机。
但因为STC单片机内部没有仿真部件,要想仿真,还是采用了监控程序的方案,基本照搬SST的Monitor-51。

现代的单片机一般集成仿真部件,不占用单片机运行资源,例如ARM,STM8,C8051F等。
单片机内部仿真部分通过特定接口与调试主机通讯,例如JTAG,SWD,SWIM等,这种单片机使用的所谓仿真器其实是一个接口协议转换器,例如JLINK,STLINK等,就是USB-JTAG-SWD接口转换,实际的仿真功能是在单片机内部实现。

早期51比较功能完整的仿真器是采用的专用仿真芯片,仿真时用专用仿真芯片替代目标芯片,调试完成后再换回正式芯片,适合DIP封装使用芯片插座的场合。现在应该见不到这中了。
简单的OTP单片机也是采用这种仿真技术。

myxiaonia 发表于 2020-1-5 12:42:22

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

把这段历史都回顾了,终于看明白了

WHOOK 发表于 2020-1-5 12:47:38

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

再后来,STC横空出世,终于一统全宇宙,独霸51单片机。
但因为STC单片机内部没有仿真部件,要想仿真,还是采用了监控程序的方案,基本照搬SST的Monitor-51。
这个说到了点子上了,{:lol:}

Puppey 发表于 2020-1-5 12:53:37

51仿真还是silicon lab做的最好,stc赶紧仿制啊

hzpyl 发表于 2020-1-5 12:57:28

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

现代的单片机,仿真不错。

health 发表于 2020-1-5 13:14:23

hzpyl 发表于 2020-1-5 12:57
现代的单片机,仿真不错。

呵呵,这个现代是相对于古代说的,不是韩国那个现代。

easier 发表于 2020-1-5 13:18:35

謝謝各位!
看來,STC 不僅重新定義了 (EEPROM),唯一序列號,
現在更重新定義 硬件仿真!

rom 发表于 2020-1-5 16:07:56

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

所以STC就不应该吹的震天响,还鄙视各种link,呵呵

XA144F 发表于 2020-1-5 16:14:30

stc压根不明白什么叫jtag吧?

laujc 发表于 2020-1-5 16:40:37

不懂2楼这段历史的人,以为STC又发明了什么黑科技了呢
不过STC的芯片,性价比的确不错。

huangqi412 发表于 2020-1-5 16:56:34

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

有瑕疵现代的是调试器不是仿真器内含的监控调试模块 不是仿真模块

huangqi412 发表于 2020-1-5 16:57:55

Puppey 发表于 2020-1-5 12:53
51仿真还是silicon lab做的最好,stc赶紧仿制啊

那个调试器记得掉固件超级频繁

huangqi412 发表于 2020-1-5 17:01:20

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

51仿真器应该就是大概10年前基本消失的08年还有在卖

Qhjh 发表于 2020-1-5 17:53:38

补充下, 国内用MON51协议第一个在SST芯片上做出51仿真器的人,他的ID叫etool . 他已经离开这个世界了.大概是在20年, etool推出SST-51仿真器. 然后他到周立功公司, 继续做仿真器. 记得曾经为了某件事情,他也来过这里..

lxa0 发表于 2020-1-5 18:26:23

性价比高==========便宜没好货!!!

hailing 发表于 2020-1-5 18:28:42

IAP15和STC8测试频繁掉线,没法用。相比stlink就是就是垃圾

nanfang2000 发表于 2020-1-5 18:37:56

"早期51比较功能完整的仿真器是采用的专用仿真芯片,仿真时用专用仿真芯片替代目标芯片,调试完成后再换回正式芯片,适合DIP封装使用芯片插座的场合。现在应该见不到这中了。"学生时代看到别人用这个仿真器羡慕的要死,但最后没钱只买了51编程器

XIVN1987 发表于 2020-1-5 18:53:04

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...


原理讲的很明白,,感谢{:handshake:}

kation122 发表于 2020-1-5 19:26:03

easier 发表于 2020-1-5 13:18
謝謝各位!
看來,STC 不僅重新定義了 (EEPROM),唯一序列號,
現在更重新定義 硬件仿真! ...

哈哈,大火炉不是吹的,EEPROM 本来是24C01 一样的,可以字节编程的,STC 那种Flash 模拟出来的,真的重新定义了EEPROM ,

face9 发表于 2020-1-5 19:40:19

“再后来,STC横空出世,终于一统全宇宙”,我觉得不是他横空出世,而是ATMEL、PHILIPS、华邦、SST这些公司觉得51架构性能没办法提升了,不搞了。想想同期的silicon把c51性能提到极限高度,除价格外,其它方面是对手吗?

zllfdd 发表于 2020-1-5 20:11:27

nanfang2000 发表于 2020-1-5 18:37
"早期51比较功能完整的仿真器是采用的专用仿真芯片,仿真时用专用仿真芯片替代目标芯片,调试完成后再换回 ...

记得那时候连编程器也没有,天天研究用8139网卡做编程器,最后也没搞成,怕把电脑搞烧了

arm 发表于 2020-1-5 21:52:08

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

原来如此

nanfang2000 发表于 2020-1-6 13:52:57

zllfdd 发表于 2020-1-5 20:11
记得那时候连编程器也没有,天天研究用8139网卡做编程器,最后也没搞成,怕把电脑搞烧了 ...

哈哈我也研究网卡做编程器,还有改BIOS什么的,最后把主板弄成砖

wkman 发表于 2020-2-12 16:05:32

再后来,STC横空出世,终于一统全宇宙,独霸51单片机。==》基本上就没仿真神马事了,,,只要编程的时候思路清晰,一个几十k的程序,也就烧录个几十次差不多了,{:titter:}

wqsjob 发表于 2020-2-12 16:08:02

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

04年,飞利浦的P89C51RD2就已经是STC差不多的功能了。我当时用过。

xyz543 发表于 2020-2-25 12:15:50

就仅于 51 的仿真,个人觉得本坛的 mon51 大侠搞得还真不错!小巧好用。

lswood 发表于 2020-2-25 23:24:37

health 发表于 2020-1-5 12:34
少年,接触51单片机不超过20年吧。
keil自带的一个很古老的技术Monitor-51,单片机需要预先写入监控程序, ...

看了你的描述,明白了stc的调试原理,多谢。
10年前我自己写了一个类windows内核玩,运行在bochs、virtual pc上。后来嫌闭着眼调试太麻烦了,于是就写了一个和gdb通过串口通信的stub程序,其实就是一个串口isr,中断优先级设为最高,解析gdb发来的串对内存进行读写修改,从而实现单步、断点、修改变量等功能。现在看来,stc51仿真也是一个桩子而已。

823032003 发表于 2020-2-26 08:02:57

多谢2楼讲解

dongwang_fl 发表于 2020-2-26 08:17:41

STC还是很方便的。至少使用简单。STM32功能强大得多。

zmh169 发表于 2020-2-26 08:56:13

其实用串口来输出调试信息就够了,关键代码后面来个printf()。
页: [1]
查看完整版本: STC的(硬件)在线仿真, 請問高人 它如何實現