madsnail 发表于 2026-3-30 15:10:53

AI8051U硬件仿真太难用了

经常弹窗,执行一条库函数 语句都能断。

madsnail 发表于 2026-3-30 15:28:46

屏蔽了就可以执行,不知道这个if语句有啥魔力

狂热主宰 发表于 2026-3-30 15:30:51

尝试缩短接线
仿真需要预留内存
内存是否留足可用空间

madsnail 发表于 2026-3-30 15:39:20

狂热主宰 发表于 2026-3-30 15:30
尝试缩短接线
仿真需要预留内存
内存是否留足可用空间

感谢赐教,我使用的是USBLINK1D串口仿真,USB到USBLINK1D是官方数据线,到板是5厘米排线
Program Size: data=10.0 edata+hdata=392 xdata=813 const=290 code=12265
这个数值够吗?

madsnail 发表于 2026-3-30 15:53:49

使用库函数里的例程,也一样。只要执行这条if语句就崩了。


解决了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
各选项说明:
[*]Level: 0: Constant folding(优化等级)

[*]0-9级,等级越高优化越激进。一般调试时设为0(不优化)以便于调试,发布时设为8或9以优化代码大小和执行速度。但注意高级优化可能改变代码结构,影响仿真。
[*]Emphasis: Favor execution speed(优化侧重点)

[*]Favor execution speed:优化执行速度(可能增加代码大小)
[*]Favor code size:优化代码大小(可能降低执行速度)
[*]Default:默认平衡
[*]根据需求选择,通常AI8051U有足够Flash,可优先速度。
[*]Register Coloring(寄存器着色)

[*]一种高级优化技术,可提高寄存器利用率。但可能增加编译时间,且有时可能导致代码异常。调试时可关闭,发布时可尝试开启。
[*]Linker Code Packing (max. AJMP / ACALL)(链接器代码压缩)

[*]尝试将代码中的LJMP/LCALL替换为AJMP/ACALL以减小代码大小。但注意:AJMP/ACALL只能在2KB代码块内跳转,如果跳转目标超出范围可能导致错误。一般不建议启用,除非代码量很小且确信不会超范围。
[*]Generate reentrant functions(生成可重入函数)

[*]使所有函数默认可重入(可被多个任务同时调用)。这会增加栈的使用,降低效率。除非需要多任务/中断共享函数,否则不要勾选。
[*]Alias checking on pointer accesses(指针访问的别名检查)

[*]检查指针别名,防止通过不同指针访问同一对象时优化出错。默认勾选,可提高安全性,但可能降低优化效果。建议保持勾选,除非确定不需要。

针对AI8051U硬件仿真的设置建议:如果在仿真中遇到不稳定、断连等问题,可能与优化有关。建议先降低优化等级,关闭某些优化选项,以排除优化导致的异常。

[*]优化等级(Level):调试时设为 0(不优化),以确保代码与源码完全对应,便于单步调试。发布时再设为 8​ 或 9。
[*]优化侧重点(Emphasis):根据需求,如果代码空间充足,可优先速度(Favor execution speed)。
[*]Register Coloring:调试时不勾选,避免优化导致变量观察困难。
[*]Linker Code Packing:不要勾选,因为AI8051U的代码空间较大(通常64KB以上),且此选项可能导致长跳转被截断,引发不可预知错误。
[*]Generate reentrant functions:除非需要,否则不勾选。
[*]Alias checking on pointer accesses:建议勾选,避免指针相关错误。


乘风飞扬 发表于 2026-3-30 16:50:37

排查一下可能导致仿真出错的注意事项


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

madsnail 发表于 2026-3-30 16:57:58

乘风飞扬 发表于 2026-3-30 16:50
排查一下可能导致仿真出错的注意事项




是优化的问题,仿真时建议优化等级0

青穗三三 发表于 2026-3-31 09:57:47

之前用过,也是出现这问题,没想到还跟优化等级有关系。后来都是用串口打印,也习惯了

madsnail 发表于 2026-4-1 15:14:22

为什么每次仿真都需要按下板子上的复位按键,才能正常仿真?否则就会弹错
页: [1]
查看完整版本: AI8051U硬件仿真太难用了