找回密码
 立即注册
查看: 68|回复: 7

WARNING L16 如何解决

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-12-16 01:40:51
已绑定手机

46

主题

215

回帖

1713

积分

金牌会员

积分
1713
发表于 2025-12-8 22:37:47 | 显示全部楼层 |阅读模式
程序添加USB 不停电下载代码后,WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 请问如何修改代码 21-ADC采样数据自动存入DMA-串口输出结果(加USBHID不停电).rar (315.86 KB, 下载次数: 1)


8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:389
  • 最近打卡:2025-12-16 08:53:16
已绑定手机

97

主题

3863

回帖

8330

积分

荣誉版主

无情的代码机器

积分
8330
发表于 2025-12-8 22:56:50 | 显示全部楼层
屏蔽即可


截图202512082256467877.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:152
  • 最近打卡:2025-12-16 08:35:38

12

主题

177

回帖

744

积分

高级会员

积分
744
发表于 7 天前 | 显示全部楼层
WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS,这个意思是说有个函数你写了但是你没调用它,
其实这个可以用1楼的方法忽略,因为好多函数确实不一定调用,比如延时用的Delay1ms(); Delay10ms();串口的Sendchar(); SendString(); SendNum();等等,
程序写了不一定都要立马调用,就像用了咱们的STC的USB库函数,哪能都调用个遍
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:189
  • 最近打卡:2025-12-16 08:24:09
已绑定手机

19

主题

541

回帖

1915

积分

金牌会员

积分
1915
发表于 7 天前 | 显示全部楼层
可以注释掉,或者搞个假调用
bit bFlag = 0;

if (bFlag)
{
    ......
}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-12-16 01:40:51
已绑定手机

46

主题

215

回帖

1713

积分

金牌会员

积分
1713
发表于 7 天前 | 显示全部楼层
在使用汇编语言或嵌入式编程时,遇到“warning l16: uncalled segment, ignored for overlay process”这样的警告通常意味着某个段(segment)在程序中没有被调用,但在进行内存重叠(overlay)处理时被忽略了。内存重叠是一种技术,用于节省内存空间,通过在程序运行时动态地加载和卸载代码段来减少内存需求。

原因分析
‌未使用的段‌:程序中可能定义了一个段,但由于某种原因(如条件编译、错误的引用等),这个段从未在程序的任何部分被调用或引用。

‌条件编译‌:如果该段是通过条件编译包含的,可能在某些编译条件下没有被包含进最终的二进制文件。

‌错误的配置‌:链接器或汇编器的配置可能错误地排除了这个段,或者在生成重叠段时配置不正确。

解决方法
‌检查代码‌:

确认该段是否真的不需要。如果不需要,可以从代码中移除该段。
如果需要保留,确保它在程序中有正确的引用和调用。
‌条件编译检查‌:

检查是否有条件编译指令(如#ifdef、#ifndef等)可能导致该段未被包含。确保所有必要的条件都得到满足。
‌链接器设置‌:

检查链接器的设置,确保没有错误地排除掉该段。例如,在使用MASM或TASM等汇编器时,确保使用了正确的.segment或.section指令来定义和引用段。
对于重叠处理,确保使用了正确的重叠指令(如$OVERLAY、$SEGMENT等),并正确配置了重叠的起始和结束地址。
‌编译器和链接器文档‌:

查阅你所使用的编译器和链接器的文档,了解如何正确处理段和重叠处理。
确保所有相关的编译和链接选项都是针对你的具体需求设置的。
‌重新编译和测试‌:

在做出修改后,重新编译并运行程序,确认问题是否已经解决,同时检查是否引入了其他错误。
通过上述步骤,你应该能够解决这个警告问题,并确保你的程序在运行时能够正确地处理内存重叠。如果问题仍然存在,可能需要更详细地检查代码逻辑或咨询具体的编译器/链接器社区或文档。


8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-12-16 01:40:51
已绑定手机

46

主题

215

回帖

1713

积分

金牌会员

积分
1713
发表于 7 天前 | 显示全部楼层
猫*** 发表于 2025-12-9 08:13
WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS,这个意思是说有个函数你写了但是你没调用它 ...

你的意思是不是:L16警告是USB库中的函数没有调用引起的?我找了好久没找到函数体
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:583
  • 最近打卡:2025-12-16 08:55:36

33

主题

2769

回帖

6230

积分

论坛元老

积分
6230
发表于 7 天前 | 显示全部楼层
East W*** 发表于 2025-12-9 08:32
你的意思是不是:L16警告是USB库中的函数没有调用引起的?我找了好久没找到函数体 ...

官方的USB 库 应该是个lib文件把,闭源的。你看不到他的源代码。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:152
  • 最近打卡:2025-12-16 08:35:38

12

主题

177

回帖

744

积分

高级会员

积分
744
发表于 7 天前 | 显示全部楼层
East W*** 发表于 2025-12-9 08:32
你的意思是不是:L16警告是USB库中的函数没有调用引起的?我找了好久没找到函数体 ...

如果用的是官方例程调试时出现的,一般是自己写的函数没有被调用
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-16 20:51 , Processed in 0.112094 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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