首页 > 编程语言 >解决keil单片编程ERROR L107: ADDRESS SPACE OVERFLOW问题及根源分析

解决keil单片编程ERROR L107: ADDRESS SPACE OVERFLOW问题及根源分析

时间:2024-04-10 10:12:53浏览次数:26  
标签:0x5b code SPACE 存储器 unsigned keil 关键字 0x3f ADDRESS

1、将部分声明的不需要修改的变量声明为程序存储器变量,即在变量名前增加code关键字,如:

unsigned char code  led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

当然,我们也可以使用关键字xdata将数据存储到片外存储器中去(如果我们不加任何关键字,就相当于默认使用了data关键字,也就是默认使用的是片内数据存储器)

2、修改存储器模式
对于代码行数比较多,程序运行空间需求大的程序,可能也会出现内存溢出的错误。但这个不是数据存储器的问题,而是程序存储器问题。程序存储器是用来供编译器控制指令small,compact和large指定编译时的存储器模式。

但是我自己测试 发现一个问题:

2.1如果把东西都放在PDATA

则不管是unsigned char 还是unsigned int全局变量,只要没有赋初值,大多都是默认为最大值,少量为随机数

2.2如果把东西都放在XDATA

总之就是可变的变量,不初始化放在PDATA或XDATA,则默认值都不正常(理论上应该全局变量不初始化,默认为0)。

3.放在data区

就正常了。

 

所以,我总结为,如果要改成XDATA,PDATA可变变量就都记得赋初值。
如果是DATA模式,则我们把不需要修改的变量声明为程序存储器变量(即在变量名前增加code关键字),以达到减少空间。如:

unsigned char code  led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

 

Keil C51中code、data、bdata、idata、xdata、pdata的解释点击跳转

标签:0x5b,code,SPACE,存储器,unsigned,keil,关键字,0x3f,ADDRESS
From: https://www.cnblogs.com/YYZYCS/p/18125428

相关文章

  • 4-2 docker隔离机制-namespace
    1、使用Namespaces实现了系统环境的隔离Docker实际上是在创建容器进程时,指定了这个进程所需要启用的一组Namespace参数,这样容器就只能看到当前Namespace所限定的资源、文件、设备、状态。而对于宿主机以及其他不相干的程序,就完全看不见了http://www.dockone.io/article/8148常......
  • 17. InnoDB-spaceID.PageNumber/压缩表
    表空间内部组织结构表空间内部由多个段对象(Segment)组成每个段(Segment)由区(Extent)组成每个区(Extent)由页(Page)组成每个页(Page)里面保存数据(或者叫记录Row)段对用户来说是透明的段也是一个逻辑概念目前为止在information_schema中无法找到段的概念重点需要理解......
  • [WUSTCTF2020]spaceclub
    [WUSTCTF2020]spaceclub附件是一个txt文件,打开发现是空白的ctrl+a全选下发现还是有内容的通过脚本进行替换,长的替换为1,短的替换为0importbinasciif=open("attachment.txt","r")content=f.readlines()s=""forlineincontent:iflen(line)==7:s+="0&qu......
  • Randomness Is All You Need: Semantic Traversal of Problem-Solution Spaces with L
    本文是LLM系列文章,针对《RandomnessIsAllYouNeed:SemanticTraversalofProblem-SolutionSpaceswithLargeLanguageModels》的翻译。随机性就是你所需要的:具有大型语言模型的问题解决空间的语义遍历摘要1引言2相关工作3模型4算法5评估6实现7结论摘......
  • utilseq.h:92:30: error: ‘Iefp’ is not a class or namespace
     001、问题,make编译报错如下:utilseq.h:92:30:error:‘Iefp’isnotaclassornamespace 002、感觉像是c++版本低造成的测试一下,将gcc编译器有4.8升级到11,问题解决。升级方法:https://www.cnblogs.com/liujiaxin2018/p/16744442.html(base)[root@pc1src]#gcc......
  • VMamba: Visual State Space Model
    VMamba:VisualStateSpaceModelVMamba:视觉状态空间模型论文链接:http://arxiv.org/abs/2401.10166代码链接:https://github.com/MzeroMiko/VMamba1、摘要 借鉴了最近引入的状态空间模型SSM,提出了VisualStateSpaceModel(VMamba),它实现了线性复杂度,同时保持了全局感受......
  • 基于keil搭建stm32项目
    1.下载stm32cube的固件包1.1进入st的官网ST官网传送门1.2查找固件包 1.3找到自己的硬件对应的系列的固件包 1.4选择固件包点击进入后,点击获取软件 1.5选择版本下载 2.创建项目相关的目录2.1创建项目相关的目录 2.2给Drivers添加相关的驱动文件或者目录......
  • 亿级地址关联匹配如何实现每天全量更新?大数据环境下hive+addresstool解决方案
    在政务系统中有许多需要将业务地址关联到标准地址的场景,addresstool致力于解决地址关联匹配算法中的速度和准确性问题。最近遇到一个业务痛点,由于客户标准地址在持续更新,导致历史上业务地址关联到的标准地址无法与最新的标准地址挂接,于是客户要求每日对全量业务地址进行挂接标准......
  • LeetCode 2109. Adding Spaces to a String
    原题链接在这里:https://leetcode.com/problems/adding-spaces-to-a-string/description/题目:Youaregivena 0-indexed string s anda 0-indexed integerarray spaces thatdescribestheindicesintheoriginalstringwherespaceswillbeadded.Eachspacesh......
  • STM32之HAL开发——Keil调试工具介绍
    Debug介绍 在Keil工具中有许多常用的小工具,下面将会依次为大家介绍每个工具的用途。命令行窗口 在窗口内可以输入一些指令,来进行断点设置以及删除,一般不常用反汇编窗口可以查看当前C代码的汇编指令标志窗口寄存器窗口可以用来查看......