找回密码
 立即注册
楼主: 远行的鹿

uCOS-II + 8H4K64TL 仿真不正常 | 原创出手,直接搞定

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:16:07 | 显示全部楼层
tzz1*** 发表于 2024-11-20 12:44
串口仿真使用的XDATA最后768字节,UCOSII的模拟栈也是在XDATA的未尾,它俩是冲突的。

UCOSII 的模似栈可 ...

非常感谢您,之前已经改为1000H了,刚开始是可以运行的,但后来程序就仿真不正常了。
已经确认改为0D00H可以正常工作。
您的解释非常到位,这个说明放在您的uCos帖那个地方可以帮助新人踩坑。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:28:24 | 显示全部楼层
非常感谢大家的回复,问题已经解决。总结一下问题的原因:
1. 关于启动文件和uCos以及仿真要求之间的关系确实就是Tzz大佬说的那样:仿真会用到xdata的最后768字节,在启动文件里不能清该部分内存会导致仿真错误。(其他芯片参照官方软件发仿真说明要求)。
2. 我的程序不能运行还有一个原因是程序本身有内存访问错误,导致不能正常运行,仿真后芯片处于死机状态,因此再次下载程序不能进行(要芯片断电复位)!!

总结,另外自己本身内存使用过大占用到最后的768字节,理论上也会导致仿真异常,所以要时刻关注内存使用情况。在程序不能下载时要考虑芯片是否已经死机,可以让它复位再次下载。如果有不对的地方欢迎大家指出。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:34:51 | 显示全部楼层
tzz1*** 发表于 2024-11-20 12:44
串口仿真使用的XDATA最后768字节,UCOSII的模拟栈也是在XDATA的未尾,它俩是冲突的。

UCOSII 的模似栈可 ...

在这里请教一下您,以STC8H4K64TL为例,IDATALEN为100H, XDATALEN为1000H, 那么这款芯片的可用内存是256+4K字节吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:39:46 | 显示全部楼层
CyberH*** 发表于 2024-11-20 11:39
哦对,你这个型号不匹配

好像并没有什么影响,这2款的内存布局是一样的,只是一个有LCD,一个有LED驱动,如果不用者个组件应该不影响。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2468

积分

荣誉版主

积分
2468
发表于 2024-11-20 14:41:50 | 显示全部楼层
远行*** 发表于 2024-11-20 14:34
在这里请教一下您,以STC8H4K64TL为例,IDATALEN为100H, XDATALEN为1000H, 那么这款芯片的可用内存是256+ ...

是的,UCOSII使用的内存是在KEIL内定义的,使用多少编译器是知道的。
启动文件中仅起定位和清零的作用。
然而访真使用的内存不受编译管理。那可以算是硬件使用的额外部分。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:44:20 | 显示全部楼层
CyberH*** 发表于 2024-11-20 11:32
串口仿真应该是系统区通过软件实现的(猜的)
不知道仿真需要的xdata最后768字节初始状态是不是都是0,如果 ...

应该不是芯片自身带有仿真硬件,感觉是在单片机里下载了一个简易的GDB服务器程序。有点类似GDBStub的感觉。按这个逻辑推断:在仿真下用户可用内存和flash会减少(官方已经说明xdata最后768字节被占用),flash相关没有看到说明。

点评

不会占用FLASH,访真代码在额外的区域,不占用用户FLASH。  详情 回复 发表于 2024-11-20 14:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2468

积分

荣誉版主

积分
2468
发表于 2024-11-20 14:46:45 | 显示全部楼层
远行*** 发表于 2024-11-20 14:44
应该不是芯片自身带有仿真硬件,感觉是在单片机里下载了一个简易的GDB服务器程序。有点类似GDBStub的感觉 ...

不会占用FLASH,访真代码在额外的区域,不占用用户FLASH。

如ISP描述:

==> AI8G/8H/8A/8C系列串口仿真说明
Flash : 0 Byte
data  : 0 Byte
idata : 0 Byte
xdata : 芯片最后的768 Bytes
Port  : P3.0 and P3.1


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:231
  • 最近打卡:2025-06-27 11:26:29

10

主题

134

回帖

1251

积分

金牌会员

积分
1251
发表于 2024-11-20 14:59:26 | 显示全部楼层
tzz1*** 发表于 2024-11-20 14:46
不会占用FLASH,访真代码在额外的区域,不占用用户FLASH。

如ISP描述:

谢谢,这样就可以理解了,仿真代码放在其他地方了,毕竟很多芯片实际的flash大小比告诉用户的大。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:168
  • 最近打卡:2025-06-19 12:57:57

24

主题

234

回帖

1343

积分

金牌会员

积分
1343
发表于 2024-11-20 15:28:44 | 显示全部楼层
远行*** 发表于 2024-11-20 14:59
谢谢,这样就可以理解了,仿真代码放在其他地方了,毕竟很多芯片实际的flash大小比告诉用户的大。 ...

是的,系统区是隐藏的
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-28 23:44 , Processed in 0.609087 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表