找回密码
 立即注册
查看: 259|回复: 6

STC32G C251编译器 keil error L256 :UNKOWN,大佬救命;

[复制链接]

6

主题

13

回帖

64

积分

注册会员

积分
64
发表于 2026-7-4 09:06:18 | 显示全部楼层 |阅读模式
".\Objects\crc.obj",
".\Objects\formulas.obj",
".\Objects\pid.obj"
TO ".\Objects\project"
CODE(".\Listings\project.cod")
PRINT(".\Listings\project.map") CASE
CLASSES (EDATA (0x0-0xFFF),
HDATA (0x0-0xFFF))
*** ERROR L256: UNKNOWN
Target not created.
Build Time Elapsed:  00:00:01

求助各位大佬,这个报错怎么解决呢。

回复

使用道具 举报 送花

已绑定手机

74

主题

1003

回帖

3653

积分

论坛元老

初出茅庐&无甚本事

积分
3653
发表于 2026-7-4 09:23:57 | 显示全部楼层
CLASSES (EDATA (0x0-0xFFF)
HDATA (0x0-0xFFF))
地址重复
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

74

主题

1003

回帖

3653

积分

论坛元老

初出茅庐&无甚本事

积分
3653
发表于 2026-7-4 09:28:31 | 显示全部楼层
CLASSES (EDATA (0x0-0x3FF),
         HDATA (0x400-0xFFF))

尝试这样指定
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

19

主题

3551

回帖

8057

积分

论坛元老

积分
8057
发表于 2026-7-4 17:24:55 | 显示全部楼层
如图
截图202607041724177963.jpg
截图202607041724334012.jpg
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25122
发表于 2026-7-7 16:28:32 | 显示全部楼层
截图202607071628264139.jpg
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25122
发表于 2026-7-7 16:28:50 | 显示全部楼层

好的,这个帖子的问题我已经看清楚了。下面我来为你分析这个 Keil C251 编译器 error L256: UNKNOWN 错误。


问题分析

从你的链接帖子和报错信息来看,问题出在 Linker(链接器)的 CLASSES 配置上。

你的链接器配置中写了:

CLASSES (EDATA (0x0-0xFFF), 
         HDATA (0x0-0xFFF))

EDATAHDATA 的地址范围都指定为 0x0-0xFFF地址完全重叠,链接器无法区分,因此报 L256: UNKNOWN


解决方案

如论坛中 狂热* 的回复所述,需要将 EDATA 和 HDATA 的地址范围错开,例如:

CLASSES (EDATA (0x0-0x3FF), 
         HDATA (0x400-0xFFF))

这样:

  • EDATA(内部直接寻址 RAM + 扩展 RAM 低端)占用 0x000 ~ 0x3FF
  • HDATA(扩展 RAM 高端)占用 0x400 ~ 0xFFF

两者不重叠,链接即可通过。


补充说明

段名 含义 典型范围
EDATA 内部可直接/间接寻址的 RAM(含 SFR 和 IDATA) 通常 0x000~0x3FF(1KB)
HDATA 扩展 RAM(XDATA 的一部分) 通常 0x400~0xFFFF

对于 STC32G 系列,内部 RAM 通常为 4KB(0x0000~0x0FFF),但 EDATA 一般只分配前 1KB(0x000~0x3FF),剩余的 0x400~0xFFF 给 HDATA 使用,这样既合理又不会冲突。


操作步骤

  1. 在 Keil C251 工程中,打开 Options for Target → Target 页面。
  2. 找到 Memory ModelOff-chip XDATA / HDATA 相关设置。
  3. 或者在 Linker → Misc controls 中手动写入正确的 CLASSES 语句:
CLASSES (EDATA (0x0-0x3FF), HDATA (0x400-0xFFF))
  1. 重新编译即可。

如果问题仍然存在,请检查你的工程中是否还有其他自定义的链接脚本(.lin 或 .sct 文件)覆盖了默认配置,或者贴出完整的链接器命令行参数,我可以进一步帮你排查。


🔍 搜索 "STC 单片机 下载 烧录 Keil"

⏱️ 查找用时 3.3s | 总回答用时 10.6s

回复

使用道具 举报 送花

6

主题

13

回帖

64

积分

注册会员

积分
64
 楼主| 发表于 2026-8-29 11:07:10 | 显示全部楼层

确实是函数名重复导致的,谢谢
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-23 16:11 , Processed in 0.068814 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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