泽文i 发表于 2021-5-25 15:32:49

关于STC单片机,硬件仿真的心得,可以解决99%不能仿真的问题!

本帖最后由 泽文i 于 2021-5-26 09:09 编辑

#​ELL库​ 关于STC系列MCU,硬件仿真的心得。

【8051 ELL库 完美支持STC硬件仿真!-哔哩哔哩】https://b23.tv/ypkBI7

STC-Monitor硬件仿真,和Keil提供的Keil-Monitor原理类似,都是通过在MCU的RAM或者ROM上开辟一段空间用来存放仿真程序。

在硬件仿真时,Keil先和这个仿真程序交互,这个仿真程序再控制我们自己写的程序,以此来实现断点、单步、全速、查看变量值、寄存器值等基本的仿真调试操作。

STC-Monitor分为两个部分,一个是安装在Keil中的调试组件(相当于上位机),一个是下载到MCU中的仿真程序(相当于下位机)。

我们需要先把仿真程序烧录到我们的MCU中,才能让MCU具备仿真功能,在STC8系列里面,绝大多数型号是占用XRAM最后768个字节作为仿真程序的执行空间。烧录方法是使用STC-ISP助手的下载。

同理,上位机部分也是通过STC-ISP助手安装到Keil中(它和STC的芯片包一同注入到Keil当中)。

之后,在Keil里面选择硬件仿真,然后设置仿真COM口和波特率即可。

但我们有一些问题要特别注意,这是我们能够正确仿真的关键。

1.在Keil 的debug按钮按下之前,我们需要对MCU进行断电复位(最好是串口下载器也断电,防止其他应用占用这个COM口),让程序从仿真程序开始执行。

2.保证用户自己的程序,对XRAM的使用不得访问最后768个字节,也不能对这768个字节进行清零初始化( ELL已经对启动文件做了优化,大家不用担心)。

3.使用硬件仿真,会占用P3.0和P3.1两个IO口,要将串口1的工作IO切换到别的复用IO上。

4.仿真使用的通讯波特率(在Keil debug里面设置),要大于等于115200。

5.断点不易过多。

6.对于STC8,XRAM小于2K的型号,不建议使用硬件仿真,容易跑飞,可以先用资源丰富的型号仿真完毕,再烧录到对应MCU中。

7.仿真过程中,不能对MCU进行复位。

8.仿真过程中,要保证串口稳定(保证供电稳定)。

泽文i 发表于 2021-5-25 15:33:57

可以使用ELL库进行仿真, ELL库对一些仿真需要注意的细节,做了处理,可以解决一些问题,对硬件仿真的支持更好。

cjp88811283 发表于 2021-5-25 16:11:05

very good,有用

rclong 发表于 2021-5-25 17:30:47

{:lol:}老姚有没有想找你去他那工作

泽文i 发表于 2021-5-25 17:45:32

还没有,哈哈哈

rei1984 发表于 2021-5-26 07:09:13

建议lz去stc上班。一年100w。安心搞lib

ahfong2006 发表于 2021-5-26 08:20:50

STC 能真正突破一下,搞个傻LINK就更方便了,赛元的仿真器就比STC的仿真好用很多,不用说JLINK,DAPLINK这些了

lb0857 发表于 2021-5-26 08:28:30

楼主泡泡流水灯等等简单的仿真是可以滴
话说简单的项目到公司上班之后不需要仿真来解决问题{:titter:}
稍稍复杂一点代码楼主 上一个视频看看效果咋样{:lol:}

泽文i 发表于 2021-5-26 08:58:25

lb0857 发表于 2021-5-26 08:28
楼主泡泡流水灯等等简单的仿真是可以滴
话说简单的项目到公司上班之后不需要仿真来解决问题{:titter: ...

【8051 ELL库 将完美支持STC硬件仿真!-哔哩哔哩】https://b23.tv/ypkBI7

amazing030 发表于 2021-5-26 09:12:33

话说STC的库函数版本好像我是最早开始搞的

chishangpiao 发表于 2021-5-26 09:17:25

哎,芯片不好买有毛用

泽文i 发表于 2021-5-26 10:45:36

amazing030 发表于 2021-5-26 09:12
话说STC的库函数版本好像我是最早开始搞的

膜拜大佬

泽文i 发表于 2021-5-26 10:45:53

chishangpiao 发表于 2021-5-26 09:17
哎,芯片不好买有毛用

哈哈哈,真实

泽文i 发表于 2021-5-26 10:55:56

欢迎加群讨论

kundi 发表于 2021-5-26 11:03:59

其实不是不能用,比如STC8G1K08,SOP8,我2-3KB代码,占用不到200字节变量,仿真也没什么问题。

泽文i 发表于 2021-5-26 13:14:29

是的,只是不建议

elevator2021 发表于 2021-8-29 10:14:04

本帖最后由 elevator2021 于 2021-8-29 10:16 编辑

我在开发板上使用STC硬件仿真,弹出一个对话框 不知什么原因

kundi 发表于 2021-8-29 14:41:16

elevator2021 发表于 2021-8-29 10:14
我在开发板上使用STC硬件仿真,弹出一个对话框 不知什么原因

串口被其他应用占用,或者没有安装必要的驱动程序

kundi 发表于 2021-8-29 14:44:45

我在STC8H1K16上,程序编译后大小约13KB,RAM只用了几十字节,用串口仿真没发现问题。

kundi 发表于 2021-8-29 15:03:12

后来,我用stc8a8k64d做DMA驱动TFT实验,RAM也就几百字节,但是因为图片放在数组里,程序代码大小是53KB,结果仿真就跑不起来了。
见https://www.amobbs.com/forum.php?mod=viewthread&tid=5753566&extra=page%3D1&mobile=2

rei1984 发表于 2021-8-30 08:02:33

kundi 发表于 2021-8-29 15:03
后来,我用stc8a8k64d做DMA驱动TFT实验,RAM也就几百字节,但是因为图片放在数组里,程序代码大小是53KB, ...

你得看下xram 最后768b 有没有被 clear掉。

startup.a 文件也要看一下

xdming 发表于 2021-11-2 17:58:47

Mark,谢谢LZ分享
页: [1]
查看完整版本: 关于STC单片机,硬件仿真的心得,可以解决99%不能仿真的问题!