找回密码
 立即注册
查看: 235|回复: 25

用8A8K64D4编译总说数据超出

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:84
  • 最近打卡:2025-06-10 08:59:58

10

主题

186

回帖

1821

积分

版主

积分
1821
发表于 2025-6-5 11:36:05 | 显示全部楼层 |阅读模式
帮客户发帖:客户用的8A8K64D4这个型号,KEIL中编程时,选择了STC8A8K64D4,总是编译出错,显示数据空间不对

截图202506051135087161.jpg

*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   IDATA   
    SEGMENT: ?STACK
    LENGTH:  0001H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   IDATA   
    SEGMENT: ?STACK
    LENGTH:  0001H
*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0004H
    TO:      0007H
*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0005H
    TO:      0007H
*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0006H
    TO:      0007H
*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0007H
    TO:      0007H
*** ERROR L119: REFERENCE MADE TO ERRONEOUS SEGMENT
    SEGMENT: ?C_C51STARTUP
    MODULE:  C:\KEIL5-C51\C51\LIB\C51L.LIB (?C_STARTUP)
    ADDRESS: 012FH

(为什么stc8a8k64d4编译总说数据超出)FLY.rar

466.84 KB, 下载次数: 6

回复

使用道具 举报 送花

3

主题

721

回帖

153

积分

等待验证会员

积分
153
发表于 2025-6-5 11:38:00 | 显示全部楼层
国芯人工智能回复:

尊敬的客户,  
根据您提到的使用情况,我建议您从以下几个方面进行检查和处理,以解决编译时显示数据空间不对的问题:  

1. 检查芯片的内存管理:  
硬件芯片(STC8A8K64D4)的内存管理可能存在问题,导致编译时内存空间不足。建议您检查芯片的内存配置文件(如ADC32H42H或ADC32L42H),确保内存分配正确。如果内存分配存在问题,建议您联系国芯或相关技术支持,进一步确认问题所在。  

2. 调整Keil的配置:  
   如果内存分配问题不是主要原因,可以考虑在Keil中进行以下调整:  
添加额外的内存空间: 在Keil中增加内存空间,以满足编译需求。  
检查Keil的版本: 确保您的Keil版本与芯片的兼容性良好,如果版本不兼容,可能需要更新或重新安装Keil。  
检查Keil的内存管理配置: 在Keil中设置正确的内存管理参数,确保模块地址和内存空间的正确引用。  

3. 更换芯片或芯片型号:  
   如果内存配置和Keil配置均无法解决问题,可以考虑更换芯片型号或更换芯片品牌,以获取更好的兼容性和稳定性。  

4. 联系国芯或相关技术支持:  
   如果以上方法均无法解决问题,建议您联系国芯或相关技术支持,提供详细的问题描述,以便他们提供更准确的解决方案。  

希望以上建议能帮助您解决编译问题,确保芯片和Keil的兼容性。如有其他问题,欢迎随时咨询!  

Best regards,  
[您的姓名]  
[您的联系信息]

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1915

回帖

4301

积分

荣誉版主

无情的代码机器

积分
4301
发表于 2025-6-5 11:45:32 | 显示全部楼层
register_definitions.c里定义错误导致的。
使用ISP软件导入头文件,参考官方头文件定义

截图202506051143206953.jpg

C:\Keil_v5\C51\INC\STC\AI8A8K64D4.H
AI8A8K64D4.H (39.2 KB, 下载次数: 0)
截图202506051145283631.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-05 12:00:47
已绑定手机

2

主题

11

回帖

38

积分

新手上路

积分
38
发表于 2025-6-5 12:00:47 | 显示全部楼层
我按你的方法导入的啊,否则KEIL中不会有STC8A8A64D4芯片的选项的。现在感觉KEIL还是按照标准51芯片再编译,所以显示我定义的很多寄存器超出了范围

点评

使用20H往后的可位寻址地址。还有idata地址改下。 STC8Gxxx.h删了吧用官方头文件  详情 回复 发表于 2025-6-5 12:07
定义的重叠和超出范围 [attachimg]102740[/attachimg] [attachimg]102741[/attachimg]  详情 回复 发表于 2025-6-5 12:05
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1915

回帖

4301

积分

荣誉版主

无情的代码机器

积分
4301
发表于 2025-6-5 12:05:27 | 显示全部楼层
4631755*** 发表于 2025-6-5 12:00
我按你的方法导入的啊,否则KEIL中不会有STC8A8A64D4芯片的选项的。现在感觉KEIL还是按照标准51芯片再编译 ...


定义的重叠和超出范围
截图202506051204304294.jpg

截图202506051204522550.jpg
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-05 12:00:47
已绑定手机

2

主题

11

回帖

38

积分

新手上路

积分
38
发表于 2025-6-5 12:05:49 | 显示全部楼层
编译时最后显示如下,是不是说明还是按照标准51芯片在编译呢?*** ERROR L119: REFERENCE MADE TO ERRONEOUS SEGMENT
    SEGMENT: ?C_C51STARTUP
    MODULE:  C:\KEIL5-C51\C51\LIB\C51L.LIB (?C_STARTUP)
    ADDRESS: 000BH      

点评

全是地址不对引起的,最简单的办法把 register_definitions.c全注释掉,逐行放开就知道哪个有问题了  详情 回复 发表于 2025-6-5 12:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1915

回帖

4301

积分

荣誉版主

无情的代码机器

积分
4301
发表于 2025-6-5 12:07:44 | 显示全部楼层
4631755*** 发表于 2025-6-5 12:00
我按你的方法导入的啊,否则KEIL中不会有STC8A8A64D4芯片的选项的。现在感觉KEIL还是按照标准51芯片再编译 ...

使用20H往后的可位寻址地址。还有idata地址改下。
STC8Gxxx.h删了吧用官方头文件
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1915

回帖

4301

积分

荣誉版主

无情的代码机器

积分
4301
发表于 2025-6-5 12:09:37 | 显示全部楼层
4631755*** 发表于 2025-6-5 12:05
编译时最后显示如下,是不是说明还是按照标准51芯片在编译呢?*** ERROR L119: REFERENCE MADE TO ERRONEOU ...

全是地址不对引起的,最简单的办法把 register_definitions.c全注释掉,逐行放开就知道哪个有问题了
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-05 12:00:47
已绑定手机

2

主题

11

回帖

38

积分

新手上路

积分
38
发表于 2025-6-5 12:11:02 | 显示全部楼层
仔细看看我的定义,我这些定义在汇编程序中是验证过的,定义的位置没问题啊,现在为什么改为C语言后会发生以上错误呢,奇怪
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-05 12:00:47
已绑定手机

2

主题

11

回帖

38

积分

新手上路

积分
38
发表于 2025-6-5 12:13:15 | 显示全部楼层
STC8Gxxx.h这个头文件也是你们官方的吧,一直用的

点评

报错的这些地址在汇编里可以用,但是转C,这些地址被编译器接管了就不要用了。 头文件直接 #include "STC8A8K64D4.H" 调用的就是最新导入的头文件,没必要用本地的。  详情 回复 发表于 2025-6-5 12:25
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 16:19 , Processed in 0.434570 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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