* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B5H BYTE (108%) *

博主使用keil uVsion4编译时出现代码大小限制警告,原因是keil未破解,未破解时程序容量会被限制在2k内。文章给出了解决步骤,即通过注册机生成激活码进行破解,最后还呼吁大家支持正版。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keil uVsion4的编译的时候出现* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT

  
  博主今天在使用keil uVsion4的编译的时候出现* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B5H BYTE (108%)
  首先直译过来就是你的keil为2048字节代码限制的版本,而你使用了2226字节,为什么有限制呢,你的keil没有破解,若不破解Keil,那么我们程序容量会被限制在2k内。若破解,代码的容量将不被限制。

然后就是解决步骤(单片机论坛 angmall回答):
  第一步:打开Keil编译器
  第二步:单击【File】
  第三步:单击【License Management】
  第四步:复制License Management界面中的CID号
  第五步:打开注册机
  第六步:将刚复制的CID号粘贴到注册机的CID号框中
  第七步:点击【Generate】将会生成激活码
  第八步:把生成的激活码复制粘贴到KEIL的New License ID Code(LIC)里
  第九步:然后点击【Add Lic】
   注册完成之后,会在License Management界面中间的PK51的后面添加使用截止日期到2020,说明已经成功破解了。
  会有这样的界面,你就成功了!!!
在这里插入图片描述
  最后,希望大家支持正版!!!

在这里插入图片描述

Rebuild started: Project: 6666666 Rebuild target 'Target_1' compiling dht11.c... compiling ds1302.c... compiling hrsc04.c... compiling iic.c... compiling key.c... compiling Lcd12864.c... compiling led.c... compiling MOTOR.c... compiling uart.c... compiling main.c... linking... BL51 BANKED LINKER/LOCATER V6.22.2.0 - SN: Eval Version COPYRIGHT ARM Germany GmbH 1987 - 2017 ".\Objects\dht11.obj", ".\Objects\ds1302.obj", ".\Objects\hrsc04.obj", ".\Objects\iic.obj", ".\Objects\key.obj", ".\Objects\Lcd12864.obj", ".\Objects\led.obj", ".\Objects\MOTOR.obj", ".\Objects\uart.obj", ".\Objects\main.obj" TO ".\Objects\6666666" PRINT(".\Listings\6666666.m51") RAMSIZE(256) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY?DHT11 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_RTC_READ?DS1302 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?GETDISTANCE2?HRSC04 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_WRITE_EEPROM?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_READ_EEPROM?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_WRITE_V?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_READ_V?IIC *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_SET_SHOWSTARTLINE?LCD12864 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_LCD_SHOWSTRING?LCD12864 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_SHOW_PICTURE32X32?LCD12864 ****************************************************************************** * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 170EH BYTE (288%) * ****************************************************************************** Program Size: data=127.2 xdata=18 code=8809 LINK/LOCATE RUN COMPLETE. 10 WARNING(S), 0 ERROR(S) ***
最新发布
05-18
### BL51 BANKED LINKER 警告分析 BL51 是 KEIL C51 工具链中的链接器,用于处理多个模块的程序并生成最终的目标文件。当遇到 `L16` 类型的警告时,通常是因为某些未调用的代码段被忽略以优化内存占用[^2]。 #### **警告解释** `UNCALLED SEGMENT IGNORED FOR OVERLAY PROCESS` 表明在链接过程中发现了一些从未被调用过的代码段,并将其从目标文件中移除以便节省空间。这种行为通常是正常的,但如果这些代码段实际上是必要的,则可能引发潜在问题。 --- ### 代码大小限制解决方案 对于嵌入式开发环境而言,代码大小受限于硬件资源(如 ROM 或 Flash 的容量),因此需要采取措施来管理代码规模: #### **方法一:启用 Banked Linking** Banked Linker 可通过分页技术扩展地址范围,从而支持更大的程序尺寸。具体操作如下: - 配置项目属性,在 Linker 设置中选择 `BANKED MODE`。 - 使用 `#pragma bank` 指令定义不同的代码银行区域[^3]。 示例代码片段展示如何分配不同页面上的函数: ```c #pragma bank 1 void FunctionInBank1(void) { // 此处实现功能逻辑 } #pragma bank 2 void FunctionInBank2(void) { // 实现其他部分的功能 } ``` #### **方法二:减少不必要的库文件引入** 检查是否加载了多余的运行时库组件。可以通过修改 `.A51` 文件里的设置项排除不需要的部分。例如关闭浮点数运算支持可以显著降低整体体积[^4]。 #### **方法三:手动调整堆栈与数据区分布** 合理规划 SRAM 中的数据存储位置也能间接缓解压力。利用伪指令指定变量的具体存放地点是一种常见做法: ```asm ?PR?MAIN?TEST SECTION MYVAR DS BYTE END ``` 以上汇编语法将 MYVAR 明确放置到特定段内[^5]。 #### **方法四:压缩算法重构业务流程** 重新审视现有源码结构,寻找可简化之处;或者采用更高效的编码方式替代原始方案也是可行之路之一。 --- ### 综合建议 尽管上述提到的技术手段各有侧重,但在实际应用当中往往需综合运用才能达到最佳效果。务必仔细阅读官方文档获取更多细节指导[^6]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值