找回密码
 立即注册
楼主: 大明狐

[新问题在17楼]好像找到32位模式下除法引起重启问题的点了,确实跟芯片无关

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-7-9 17:19:16 | 显示全部楼层
tzz1*** 发表于 2024-7-9 10:45
收到, 谢谢, 确实是!
应该是链接定位器出问题了, 把?C?SIDIV的地址放在了 0X0000  ???

是不是使用了“REMOVEUNUSED”?是的话删了试试。
Kiel C251编译器使用“REMOVEUNUSED”有可能出现这种情况。

点评

果然!!!!!!! 把“REMOVEUNUSED”去掉再编译就正常了! [attachimg]50828[/attachimg] 大佬威武!  详情 回复 发表于 2024-7-9 18:16
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 15:00:39

24

主题

305

回帖

2556

积分

荣誉版主

积分
2556
发表于 2024-7-9 18:16:36 | 显示全部楼层
乘风*** 发表于 2024-7-9 17:19
是不是使用了“REMOVEUNUSED”?是的话删了试试。
Kiel C251编译器使用“REMOVEUNUSED”有可能出现这种情 ...

果然!!!!!!!

把“REMOVEUNUSED”去掉再编译就正常了!
O4.jpg


大佬威武!
能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 15:00:39

24

主题

305

回帖

2556

积分

荣誉版主

积分
2556
发表于 2024-7-9 18:29:48 | 显示全部楼层
今天还尝试了

y += ( fontsize / 8 ) & 0xFF;
y += ( fontsize / 8 ) & 0x00FF;
y += ( fontsize / 8 ) + 0;

{:5_314:}
跟前面那些结果正常的写法效果一样,只要不是单独的 “ y+= fontsize / 8”,
随便挂上点儿有用没用的零碎儿,结果就是正常的。。。

不过去掉“REMOVEUNUSED”的办法确实一劳永逸,只不过程序体积大了不少

因为屏幕驱动里有好多画画函数

加上“REMOVEUNUSED”
Program Size: data=8.3 edata+hdata=287 xdata=1216 const=39 code=19978
去掉“REMOVEUNUSED”
Program Size: data=8.3 edata+hdata=287 xdata=1216 const=39 code=26610






能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 2024-7-9 19:52:38 | 显示全部楼层
code=26610
===离 64K 还有段距离,今年 STC32G96K256 也会出来的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2024-7-11 13:16:46 | 显示全部楼层
是C251编译器的bug, 与器件无关!!!!!


y += fontsize / 8 ;

   286:                          
0xFF3E96   7E240008    MOV      WR4,#Setup(0x0008)
0xFF3E9A   120000      LCALL    C?STARTUP(C:0x0000)  --->直接重启
0xFF3E9D   2CF7        ADD      R15,R7

改为:
y += fontsize >> 3 ;

   286:                          
0xFF3E96   7CBC        MOV      R11,R12
0xFF3E98   C4          SWAP     A
0xFF3E99   23          RL       A
0xFF3E9A   541F        ANL      A,#0x1F
0xFF3E9C   2CFB        ADD      R15,R11

一切正常!!!


去除REMOVEUNUSED:

y += fontsize / 8 ;

   286:                          
0xFF47F6   7E240008    MOV      WR4,#Setup(0x0008)
0xFF47FA   123FBD      LCALL    C?SIDIV(C:0x3FBD)  --->直接调用除法函数
0xFF47FD   2CF7        ADD      R15,R7

                 C?SIDIV:
0xFF3FBD   C2D5        CLR      F0(0xD0.5)
0xFF3FBF   7CB4        MOV      R11,R4
0xFF3FC1   30E708      JNB      0xE0.7,C:0x3FCC
0xFF3FC4   B2D5        CPL      F0(0xD0.5)
0xFF3FC6   6E24FFFF    XRL      WR4,#0xFFFF
0xFF3FCA   0B24        INC      WR4,#0x01
0xFF3FCC   7CB6        MOV      R11,R6
0xFF3FCE   30E712      JNB      0xE0.7,C:0x3FE3
0xFF3FD1   B2D5        CPL      F0(0xD0.5)
0xFF3FD3   6E34FFFF    XRL      WR6,#0xFFFF
0xFF3FD7   0B34        INC      WR6,#0x01
0xFF3FD9   8D32        DIV      WR6,WR4
0xFF3FDB   6E24FFFF    XRL      WR4,#0xFFFF
0xFF3FDF   0B24        INC      WR4,#0x01
0xFF3FE1   8002        SJMP     C:0x3FE5
0xFF3FE3   8D32        DIV      WR6,WR4
0xFF3FE5   30D506      JNB      F0(0xD0.5),C:0x3FEE
0xFF3FE8   6E34FFFF    XRL      WR6,#0xFFFF
0xFF3FEC   0B34        INC      WR6,#0x01
0xFF3FEE   22          RET      
                 
去除REMOVEUNUSED后,代码量增加,运行效率低。

还是要使用 REMOVEUNUSED,在代码中少用除法:

y += fontsize >> 3 ;

点评

这个问题发现新情况了 前面那一版会出问题的程序,实现USB不停电下载, 是引用 USB-HID(查询模式)的USB库 里的 stc_usb_hid_32.LIB 的方式 今天试着重新弄了两个版本 一个是不带USB下载的版本(模拟SPI和硬件SP  详情 回复 发表于 2024-7-12 15:00
收到!!!辛苦啦~~~  详情 回复 发表于 2024-7-11 18:04
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 2 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 15:00:39

24

主题

305

回帖

2556

积分

荣誉版主

积分
2556
发表于 2024-7-11 18:04:35 | 显示全部楼层
社区*** 发表于 2024-7-11 13:16
是C251编译器的bug, 与器件无关!!!!!

收到!!!辛苦啦~~~{:5_315:}
能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 15:00:39

24

主题

305

回帖

2556

积分

荣誉版主

积分
2556
发表于 2024-7-12 15:00:42 | 显示全部楼层
本帖最后由 大明狐 于 2024-7-13 12:21 编辑
社区*** 发表于 2024-7-11 13:16
是C251编译器的bug, 与器件无关!!!!!

这个问题发现新情况了{:5_357:}

前面那一版会出问题的程序,实现USB不停电下载,
是引用 USB-HID(查询模式)的USB库 里的 stc_usb_hid_32.LIB 的方式

今天试着重新弄了两个版本

一个是不带USB-HID的版本(模拟SPI和硬件SPI结果一样,所以放一个)
20240712_3OLED_模拟SPI32bit.rar (19.76 KB, 下载次数: 68)


另一个是不用stc_usb_hid_32.LIB库文件的那个USB不停电下载的版本
20240712_1OLEDspi_8051U32bit_雪人猫猫.rar (55.94 KB, 下载次数: 71)


68090C9950AC9B04EEF6E49DBA137E42.png

===============================================

在这两个版本里,写成 y += fontsize/8; 和 添加“REMOVEUNUSED”, 都能运行,没有重启的问题出现



补充:32位的USB-CDC的LIB文件,如果加上REMOVEUNUSED,也会不正常。

所以猜测问题应该还是在库文件 LIB 和 C251编译器之间{:5_335:}






能体会到发现一个不理解的现象然后找原因然后要么解决掉问题要么被问题解决掉的那种快乐是我的幸运
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-7-12 17:31:47 | 显示全部楼层
大*** 发表于 2024-7-12 15:00
这个问题发现新情况了

前面那一版会出问题的程序,实现USB不停电下载,

确实,估计是库文件影响了REMOVEUNUSED功能
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-01 19:17:52
已绑定手机

19

主题

208

回帖

492

积分

中级会员

积分
492
发表于 2024-7-14 14:30:13 | 显示全部楼层
学习了。 从逻辑分析上讲,C251编译器应该不会出现 简单除法 都会出现问题的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-14 14:42:23 | 显示全部楼层
机灵*** 发表于 2024-7-14 14:30
学习了。 从逻辑分析上讲,C251编译器应该不会出现 简单除法 都会出现问题的。 ...

逻辑 == 自认为
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 23:55 , Processed in 0.541844 second(s), 120 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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