找回密码
 立即注册
查看: 2166|回复: 9

程序文件超过64 部分功能不好用了

[复制链接]

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-3-21 14:45:58 | 显示全部楼层 |阅读模式
我用的是stc32g12k128  程序超过了64k了
Program Size: data=9.5 edata+hdata=2128 xdata=5782 const=5343 code=85546
我现在设置如下:程序可以编译,可以下载,但是有部分功能不好用了,比如oled屏幕的主页不显示了,eeprom里的数据也变了。除了这些设置还需要做其他的操作吗?
程序文件超过64 部分功能不好用了-1.png
程序文件超过64 部分功能不好用了-2.png

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:190
  • 最近打卡:2026-07-03 17:15:08

51

主题

1365

回帖

3622

积分

超级版主

积分
3622
发表于 2023-3-21 14:59:28 | 显示全部楼层
1.png
STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复

使用道具 举报 送花

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-3-21 18:14:44 | 显示全部楼层

版主,我设置和你发的图是样的,依旧不好使的,是部分功能不行,是不是中断地址啥的都不一样了
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:154
  • 最近打卡:2026-06-29 18:12:05

28

主题

1299

回帖

4867

积分

超级版主

积分
4867
发表于 2023-3-21 18:39:35 | 显示全部楼层
你需要根据你实际的代码来合理分配EEPROM空间和程序空间
按照你上面的设置,代码区一定会覆盖EEPROM区
因为EEPROM的起始地址是从逻辑地址FE:0000H开始的
而按照你上面的设置,Keil也会将没有指定绝对地址的代码从FE:0000H开始放

上面的信息显示你实际的代码空间需求大约为90K,你可以按照下面的设置试试看
1.png
上面的设置分配如下:
FE:0000~FE:7FFF的32K字节FLASH为EEPROM空间
FE:8000~FF:FFFF的96K字节FLASH为代码空间

回复

使用道具 举报 送花

1

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-3-22 09:02:01 | 显示全部楼层
zh*** 发表于 2023-3-21 18:39
你需要根据你实际的代码来合理分配EEPROM空间和程序空间
按照你上面的设置,代码区一定会覆盖EEPROM区
因为 ...

收到,谢谢,我实验一下。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:623
  • 最近打卡:2026-03-23 14:44:24
已绑定手机

25

主题

594

回帖

3106

积分

论坛元老

积分
3106
发表于 2023-3-22 10:07:21 | 显示全部楼层
高度关注!最近我也在做项目,代码大小也是会超过64K的,到时候也注意一下这点。
不停地学习
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2026-06-09 15:18:34

2

主题

16

回帖

76

积分

注册会员

积分
76
发表于 2026-6-8 11:24:54 | 显示全部楼层
zh*** 发表于 2023-3-21 18:39
你需要根据你实际的代码来合理分配EEPROM空间和程序空间
按照你上面的设置,代码区一定会覆盖EEPROM区
因为 ...

大哥,人家90K,那人家把按照手册 128K全部将FLASH设置为了代码空间,这也没啥问题啊, 就算是STC-ISP (EEPROM最小1K),STC-ISP 也会自动将 代码空间往后偏移挪动1K地址,这没问啥!而且你留出这么大的32K EEPROM做什么?没必要! 人家原先设置的没毛病,问题不是出在这里!
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2026-06-09 15:18:34

2

主题

16

回帖

76

积分

注册会员

积分
76
发表于 2026-6-8 15:33:06 | 显示全部楼层
a)   单个文件的代码大小必须小余64K。若大于或等于64K,则需要将代码分割为多个代码文件
b)   单个代码数据表格的数据量必须小余64K。若大于或等于64K,则需要将数据表格分割为多个数据表格
c)   使用code关键字定义的数据表格,Keil会强制分配到FF:0000H~FF:FFFFH区域(例如:char code CODE_STR[] ="64K地址范围内数\xfd据表格定义演示";)若需要定义超64K地址范围的数据表格,则需要使用ecode关键字,(例如:char ecode ECODE_STR[] = "超64K地址范围内数\xfd据表格定义演示";)
我的问题1:
我想问一下, 这里如何判定一个单文件的代码 是否大于 64K ? 是肉眼观察比如 char ecode HUGE_STR1[63*1024UL] ,  char ecode HUGE_STR2[45*1024UL] 还是 看哪个文件的后缀(是编译后Objects内的 .obj文件吗?  .obj文件 是否大于 64K)?
我的问题2:
STC32G12K128 作为主控, 搭配FreeRTOS, 当KEIL编译出的代码总量code小于64K时, 将 configUSE_ROMHUGE = 0时, 且KEIL内的 Code Rom Size 设置为 Large, 程序烧录后, 能正常运行显示效果
但是后期添加了OLED相关程序(oled.c很大,且搭配了 oledfont.c 大量的字符编码和图画数组. 且我将code 数组 全部改写了 ecode  数组 ), 将 configUSE_ROMHUGE = 1时, 且KEIL内的 Code Rom Size 设置为 Huge, ROM 设置了程序空间从地址 0xFE0400 开始,大小为127K(0x1FC00),  STC-ISP EEPROM也配合进行了上述地址/大小设置, 但是程序烧录后, 却不能正常运行显示效果, 到底是出了什么问题? 有没有哪个大佬指出到底哪个地方出问题了?

点评

为啥在这挖一个23年的帖子 新建个帖子可让更多人看到,把你正常的,异常的,工程代码打包都上传下 OS参考的哪个链接也都附下  详情 回复 发表于 2026-6-8 22:25
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:586
  • 最近打卡:2026-07-04 12:34:03
已绑定手机

112

主题

4958

回帖

1万

积分

荣誉版主

无情的代码机器

积分
10758
发表于 2026-6-8 22:25:06 | 显示全部楼层
章鱼*** 发表于 2026-6-8 15:33
a)   单个文件的代码大小必须小余64K。若大于或等于64K,则需要将代码分割为多个代码文件
b)   单个代码数 ...

为啥在这挖一个23年的帖子


新建个帖子可让更多人看到,把你正常的,异常的,工程代码打包都上传下

OS参考的哪个链接也都附下
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2026-06-09 15:18:34

2

主题

16

回帖

76

积分

注册会员

积分
76
发表于 2026-6-9 15:18:34 | 显示全部楼层
erci*** 发表于 2026-6-8 22:25
为啥在这挖一个23年的帖子

帖子不怕早,能解决相同的技术问题就好,我的问题链接如下
https://www.stcaimcu.com/thread-24139-1-1.html
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-5 11:56 , Processed in 0.082682 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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