土豆油 发表于 2025-7-22 16:04:41

请教:AI8H2K32U在KEIL设置为xdata时仿真会卡死 | USB通信还要被占用 1024字节 xdata

请求支持:使用Ai8H2K32U,
KEIL设置为Small:variables in DATA时,可以正常仿真,
使用 large:variables in xdata仿真:开始运行后就程序就卡死了,停不下关不掉。
使用USB Link1D或USB直接仿真都是这样。
使用2个产品的板子测试也都一样。
是怎么回事啊?搞2天了没解决,求支持。


DebugLab 发表于 2025-7-22 16:27:57

仿真程序占用xdata最后768字节,注意xdata冲突问题
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
C语言、汇编语言、编译器、仿真问题:
包含startup.a51时,默认会初始化data(也是idata的低128字节)为0,xdata不操作为上电随机数;不包含startup.a51时,data和xdata为上电随机数
程序只能在函数内执行,全局变量禁止在声明时赋值,赋值的语句必须在函数内,函数外的非声明语句无效
数组可以在初始化时用memset函数全部清零(或其他初始化值)
养成好习惯,函数内的局部变量也不要声明时赋值,而且必须在函数开头声明
制作完仿真芯片必须重新上电才可以正常仿真
如使用 U8W/U8W -Mini 进行仿真,需要先设置“直通模式”
https://www.stcaimcu.com/data/attachment/forum/202505/06/220036agjvkjvwdj6g2bw7.jpg
工具使用说明书.pdf
仿真时注意不要勾选“当目标文件变化时自动装载并发送下载命令”,否则当重新编译后,就会正常下载一次,导致仿真程序被覆盖掉,从而无法继续仿真
https://www.stcaimcu.com/data/attachment/forum/202505/18/152904faxjnm6yltlcbibi.jpg
仿真程序占用P3.0/P3.1口,但不占用串口1,用户程序可以将串口1切换到其它IO使用
仿真监控程序占用内部扩展RAM(XDATA)的最后768字节,程序使用XDATA+768字节不能大于芯片XDATA的容量
不能仿真时钟/复位相关的功能,例如程序里面不能修改系统时钟频率,不能开启看门狗,不能进入休眠/空闲模式
仿真通过P3.0/P3.1口与 KEIL 驱动进行通信,如P3.0/P3.1口数据受到干扰可能会导致仿真异常(如接触不良、P30/P31接了其他电路等)
单步仿真DPTR只能使用USB Link1D通过SWD仿真
使用USB或UART仿真,当停止运行用户代码时,定时器0~4会全部停止,此时和定时器相关的硬件都会停止,包括串口时钟、定时器中断、定时器时钟输出等
芯片的时钟不能在仿真时(Keil中)修改,只能在烧录时通过硬件选项设置
USB或UART仿真时,全速运行不能实时更新变量的值,因为USB或UART仿真是软件完成的,全速运行时CPU完全在执行用户程序,无法同时运行仿真程序,如此时运行仿真程序,就会影响用户程序的全速运行,所以不支持在全速运行时实时更新变量的值

vb2002 发表于 2025-7-22 23:09:38

我试了,好像没有你说的问题

神农鼎 发表于 2025-7-22 23:27:45

AI8H2K32U, 如用 串口仿真,
===xdata 会被占用 768字节;


AI8H2K32U, 如用 USB仿真,
===xdata 会被占用 768字节;
===USB通信还要被占用 1024字节 xdata

土豆油 发表于 2025-7-24 08:59:59

DebugLab 发表于 2025-7-22 16:27
仿真程序占用xdata最后768字节,注意xdata冲突问题
新手必读:
https://www.stcaimcu.com/thread-16535-1-1 ...
感谢回复!
上电是把有设置P_SW2 |= 0x80;
编译结果显示:Program Size: data=17.1 xdata=390 code=9048
我把程序中不同的部分屏蔽,屏蔽少了解决不了问题,几乎把所有程序调用都取消了才好,到今天为止问题仍没有解决。换上AI8H8K64U芯片是可以正常仿真的,但引脚功能又不同,因为我要用16 17 19脚做AD口。

土豆油 发表于 2025-7-24 09:29:52

神农鼎 发表于 2025-7-22 23:27
AI8H2K32U, 如用 串口仿真,
===xdata 会被占用 768字节;


我是用串口仿真的,现在资源占用情况是:Program Size: data=17.1 xdata=390 code=9048

土豆油 发表于 2025-7-24 09:41:53

我怀疑是因为我的程序大了所以才不能仿真,我现在想换别xdata空间大一些的型号,但只有这个AI8H2K32的16 17 19脚有ADC功能,怎么办?改板好麻烦的。请求支持!

AI芯 发表于 2025-7-24 09:52:27

仿真程序占用xdata最后768字节

土豆油 发表于 2025-7-24 10:00:09

AI芯 发表于 2025-7-24 09:52
仿真程序占用xdata最后768字节

没有使用USB功能,使用的是串口仿真

土豆油 发表于 2025-8-1 11:08:27

到今天为止没有解决,放弃了,换个别的型号用吧。程序小了没问题,程序大一些就会出错。
页: [1] 2
查看完整版本: 请教:AI8H2K32U在KEIL设置为xdata时仿真会卡死 | USB通信还要被占用 1024字节 xdata