cyf1029 发表于 2025-8-14 11:52:05

AI8051U 仿真过程中无故停止和复位

如下图,我将变量dat1和dat2放在函数外面,仿真正常运行。但是如果我将dat1和dat2放到函数里面定义,程序执行到这个函数的时候就会停止,再按执行的话就会复位,请问是哪里的问题?

国芯人工智能 发表于 2025-8-14 11:53:00

关于您在使用AI8051U进行仿真时遇到的“程序执行到函数时无故停止并复位”的问题,我们非常理解您的困扰。根据您描述的情况,变量dat1和dat2在函数外部定义时仿真正常,而将其放入函数内部后出现异常,这可能与以下几个方面有关:

1. 变量作用域与内存分配问题
   在C语言中,局部变量(即在函数内部定义的变量)通常存储在栈空间中。如果栈空间不足或存在越界访问,可能导致程序运行异常甚至复位。建议检查项目配置中的栈大小设置是否合理,并确保未对超出范围的内存地址进行读写操作。

2. 编译器优化设置不当
   某些编译器在优化级别较高时,可能会对局部变量进行重排、合并或移除,导致逻辑错误。建议尝试降低优化级别(如从-O3改为-O0),观察是否仍存在问题,以判断是否由编译器优化引起。

3. 函数调用堆栈溢出
   若函数内部嵌套调用较深或递归调用未正确终止,可能导致堆栈溢出,进而引发系统复位。请检查函数调用结构,确保没有无限递归或过深的嵌套调用。

4. 全局变量与局部变量命名冲突
   如果dat1和dat2在全局作用域中已被定义,而函数内部再次声明相同名称的变量,可能导致意外行为。建议检查变量命名一致性,避免重复定义。

5. 仿真环境或工具链兼容性问题
   仿真过程中若使用的工具链版本与目标芯片不完全兼容,也可能导致异常行为。建议确认仿真器、调试器及SDK版本是否匹配,并参考官方文档进行验证。

6. 硬件资源限制
   AI8051U作为一款嵌入式处理器,其内存和寄存器资源有限。若函数内部定义了大量局部变量或复杂数据结构,可能超出可用资源,导致运行异常。建议优化代码结构,减少局部变量使用或采用动态内存分配方式。

综上所述,建议您逐一排查上述可能性,优先检查栈空间配置、编译器优化设置及变量作用域问题。如需进一步协助,请提供更详细的代码片段或仿真日志,以便精准定位问题根源。我们将持续为您提供技术支持,助力您顺利完成开发任务。

[本文内容由国芯人工智能辅助生成,仅供参考]

AI芯 发表于 2025-8-14 13:24:45


【仿真】仿真注意事项总结 | 大家帮继续总结
https://www.stcaimcu.com/thread-108-1-1.html
(出处: 国芯人工智能技术交流网站)

USB直接通信仿真 -- Ai8051U实验箱仿真
https://www.stcaimcu.com/thread-19325-1-1.html
(出处: 国芯人工智能技术交流网站)

串口通信仿真 -- Ai8051U实验箱仿真
https://www.stcaimcu.com/thread-19326-1-1.html
(出处: 国芯人工智能技术交流网站)


ercircle 发表于 2025-8-14 14:20:18

是否更新代码后未烧录,可以上传工程看看


cyf1029 发表于 2025-8-14 14:30:10

ercircle 发表于 2025-8-14 14:20
是否更新代码后未烧录,可以上传工程看看

更新代码后会编译仿真,dat1和dat2如果是在函数内声明的话,仿真就会自动停止,再按执行就会复位,dat1和dat2如果在函数外声明,则没有任何问题。只动变量声明的位置,不改变任何配置。

ercircle 发表于 2025-8-14 14:34:55

cyf1029 发表于 2025-8-14 14:30
更新代码后会编译仿真,dat1和dat2如果是在函数内声明的话,仿真就会自动停止,再按执行就会复位,dat1和 ...

不用重复描述问题~~,检查下上面的配置,可以上传工程我试下能否复现

cyf1029 发表于 2025-8-14 14:53:10

ercircle 发表于 2025-8-14 14:34
不用重复描述问题~~,检查下上面的配置,可以上传工程我试下能否复现

附件上传了,可以的话麻烦您也帮我看一下LCM_DMA配置的问题,我配置的是16位传输,但是驱动HUB75e有点问题

ercircle 发表于 2025-8-14 15:15:12

cyf1029 发表于 2025-8-14 14:53
附件上传了,可以的话麻烦您也帮我看一下LCM_DMA配置的问题,我配置的是16位传输,但是驱动HUB75e有点问 ...
好的,先解决仿真问题,屏的商家有没有提高驱动例程和手册可以上传下。


仿真问题:
仿真不能启用外部晶振



【仿真】仿真注意事项总结 | 大家帮继续总结 - 仿真/编译器/汇编器/头文件 国芯人工智能技术交流网站 - AI32位8051交流社区

cyf1029 发表于 2025-8-14 16:30:31

ercircle 发表于 2025-8-14 15:15
好的,先解决仿真问题,屏的商家有没有提高驱动例程和手册可以上传下。




没有参考例程,只有个芯片手册

ercircle 发表于 2025-8-14 18:13:49

cyf1029 发表于 2025-8-14 16:30
没有参考例程,只有个芯片手册


仿真问题可以复现,研究中~

页: [1] 2
查看完整版本: AI8051U 仿真过程中无故停止和复位