Keil_C51之Memory_mode解析

news2024/11/18 3:47:17

有时我们会遇到这样的报错:

*** ERROR L107: ADDRESS SPACE OVERFLOW

    SPACE:   DATA   

    SEGMENT: _DATA_GROUP_

    LENGTH:  002CH

Program Size: data=117.0 xdata=0 code=6242

Target not created.

Build Time Elapsed:  00:00:00

报错截图如下:

 这类报错是提醒  我们定义了过多的变量:

我们一般使用Small来存储变量,

就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,

就会报错,所以我们编译的时候就要选取外部RAM了。

我们点开魔棒寻找解决方案:

 发现将memory mode改成Compact :variables inPDATA 在编译,

就不报错,通过编译了~~~

 那这个memory mode究竟是什么呢?

 Small:变量存储在内部ram里;

small模式下,再入函数的堆栈是设在idata中的
 
Compact:变量存储在外部ram里,使用页8位间接寻址;

compact模式下,再入函数堆栈是设在pdata中的


Large:变量存储在外部Ram里,使用16位间接寻址;


可见,compact和large必须有外部RAM支持。

使用Small的模式:

并不是说变量就不可以存储在外部,

只是你要指定存储在外部,,比如:
unsigned char xdata a;                     变量a存储在外部的ram。
unsigned char a;                               变量默认存储在内部ram。
使用Large的模式:
unsigned char xdata a;                      变量a存储在外部的ram。
unsigned char a;                                变量默认存储在外部ram。
以上就是说这三个选项其实只是影响,

当没有特别指定变量的存储空间的时候,

默认变量存储在哪里,比如上面的变量定义unsigned char a。

 如果在变量声明时未声明变量的存储器类型,

则该变量的存储器类型,由程序的存储模式来决定:


 小模式(small model):         默认data区
 紧凑模式(compact model):默认pdata区
 大模式(large model):         默认xdata区

相关蓝桥杯板载资源列举:

1.IAP15f2k60S2含义: 

IAP15:单片机型号

F:单片机工作电压5.5V-4.2V

2k: 2048字节的SRAM、最大主频35MH

60: 60KB flash/ROM程序存储器

S2: 含有2个串口

KB=k

2^10Byte=1024Byte=1KB

1KB字节=1024Byte=1024*8bit

波特率bit/s

2、硬件信息:

  •         CPU:8位
  •         3个16位定时器  T0(P34)、T1(P35)、T2(P30)
  •         8通道10位ADC(3路PWM可做3路DA转换、不具备独立的DA转换)
  •         IO口最大位数42
  •         SP1总线:MOSI表示主机输出从机输入(SPI在温度模块,高速串行通信接口)
  •         外部中断2的中断号8    SP1中断号9
  •         IO口四种工作模式
  •         7种复位方式
  •         7种寻址方式
  •         外部存储器16地址总线、8位数据总线
  •         P2高8位地址、P0低8位地址和8位数据总线。

4. 存储器分类:

       data:  直接寻址的片内RAM
  bdata:位寻址片内RAM
  idata: 间接寻址片内RAM区


  pdata:间接访问的片外RAM的低256B
  xdata:间接访问用DPTR的片外RAM,
  code: 程序存储区ROM

5.RAM分类:

    易失存储器(掉电)

    RAM:随机存储器

    SRAM:   static RAM 静态存储器,(不需要刷新)

    DRAM:Dynamic RAM 动态存储器(需要刷新)

    DDRAM 双倍速率同步

    非易失存储器(掉电)

    ROM 自读存储器
    PROM 擦除一次

    EPROM 擦除1000次

    EEPROM电子可擦除

    flash、norflash

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员怎么玩转Linux

Linux下可以使用Python编写爬虫程序,常用的爬虫框架有Scrapy和BeautifulSoup。 Scrapy是一个基于Python的开源网络爬虫框架,可以快速高效地从网站上获取数据。它提供了强大的数据提取和处理功能,支持异步网络请求和分布式爬取等特性。 Beau…

九耶丨阁瑞钛伦特-springmvc(五)

Spring是最流行的企业级开发框架之一,它提供了一套完整的IOC(控制反转)和AOP(面向切面编程)解决方案,可以帮助软件开发人员快速开发出高效、可扩展的应用程序。Spring MVC是Spring框架中的一个模块&#xf…

cesium模型在前端页面加载后亮度异常的处理

一.问题产生与分析 通常情况下,后端生成的模型数据,以默认参数加载在前端页面时亮度能显示是正常的,如果不正常,猜测可能与生成的原数据有关(数据本身在前端页面加载亮度就低) 二.问题解决 前端页面针对这…

OpenHarmony 3.2 Release新特性解读之驱动HCS

OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源社区,在今年4月正式发布了OpenHarmony 3.2 Release版本,标准系统能力进一步完善,提升了系统的整体性能、稳定性和安全性。此次版本对于驱动也提供了一些新的特性&am…

ELK高可用集群添加用户名密码认证

确定主节点 GET _cat/nodes?v带*的就是主节点,这里是zcpt-prd-ELK-01节点 生成根证书elastic-stack-ca.p12(进入主节点) 注意操作es7.7.0使用es用户 su es进入主节点的bin目录下执行 ./elasticsearch-certutil ca会要求输入密码直接回车…

Structural Deep Clustering Network

Structural Deep Clustering Network | Proceedings of The Web Conference 2020 (acm.org) 目录 Abstract 1 Introduction 2 Model 2.1 KNN Graph 2.2 DNN Module 2.3 GCN Module 2.4 Dual Self-Supervised Module Abstract 深度聚类方法通常是通过深度学习强大的表示…

为什么很多人做项目经理多年都没有进步?

为什么很多人做项目经理多年都没有进步? 项目经理是一个需要不断学习和成长的职业。然而,很多人在做了多年的项目经理后却没有看到自己的进步。这是为什么呢?以下是一些可能的原因: 1. 缺乏自我反思和改进意识 有些人可能会在自…

Ceph架构组件及存储过程

1、存储基础 //单机存储设备 ●DAS(直接附加存储,是直接接到计算机的主板总线上去的存储) IDE、SATA、SCSI、SAS、USB 接口的磁盘 所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储 ●NAS(网络附加存储&am…

喜讯!图扑荣获用友年度十佳产业融合生态伙伴称号

2023 年 4 月 20 日,由中华全国工商业联合会联合工业和信息化部、国务院国资委组织开展的 2023 年度“百场万企”大中小企业融通对接活动——智能制造 MES 产业融通对接会暨 2023 用友 BIP 技术大会 MES 生态创新专题论坛在用友产业园顺利召开。 用友年度生态合作伙…

港联证券|资金疯狂涌入AI,这一板块涨幅超90%!万亿巨头继续狂飙

国内外资金继续加码AI概念股。 当前,国内政策层面对于通用人工智能和算力中心的创新发展扶持政策不断推出,资本市场对于AI(人工智能)热情不断升温。在AI下游应用中,游戏板块成为最被看好的投资标的,资金流入…

正则表达式实现关键字高亮

使用正则表达式实现一个类似于navicat中sql编辑器功能&#xff0c;大致实现以下目标&#xff1a; 指定关键字高亮(eg. 红色)数字高亮(eg. 蓝色)引号内容高亮(eg.浅绿色) 实现效果如下&#xff1a; 下面直接上代码&#xff0c;具体解释见代码&#xff1a; <!DOCTYPE htm…

C语言参悟-分支和跳转

C语言参悟-分支跳转 一、概述二、判断条件三、if else 条件判断1. 单判断2. 条件“并联”3. 条件“串联” 四、switch case 条件判断1. “单刀” 开关2. “多刀”开关 一、概述 下面只是我的对于C语言的认识拙见&#xff0c;可以多多提出批评建议&#x1f604; 计算机的诞生很…

16JS07——数组

目标&#xff1a; 1、数组的概念 2、创建数组 3、获取数组中的元素 4、遍历数组 5、数组中新增元素 6、数组案例 一、数组的概念 数组是指一组数据的集合&#xff0c;其中的每个数据被称作元素&#xff0c;在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变…

Flink从入门到精通之-12Flink CEP

Flink从入门到精通之-12Flink CEP 在 Flink 的学习过程中&#xff0c;从基本原理和核心层 DataStream API 到底层的处理函数、再到应用层的 Table API 和 SQL&#xff0c;我们已经掌握了 Flink 编程的各种手段&#xff0c;可以应对实际应用开发的各种需求了。 在大数据分析领域…

lecory 波形二进制文件头(.trc)定义

1.文件头&#xff0c;从0字节开始 byte[] lecroy_trc_header new byte[]{0x23,0x39,0x30,0x30,0x32,0x30,0x30,0x30,0x31,0x34,0x34,0x57,0x41,0x56,0x45,0x44,0x45,0x53,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x45,0x43,0x52,0x4F,0x59,0x5F,0x32,0x5F,0x33,0x…

【爬虫第四章】 爬虫工具介绍

预计更新一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3…

Hack The Box - Crocodile关卡

TASK 1 任务 1 What Nmap scanning switch employs the use of default scripts during a scan? 哪个 Nmap 扫描开关在扫描期间使用默认脚本&#xff1f; -sCTASK 2 任务 2 What service version is found to be running on port 21? 发现端口 21 上运行的服务版本是什么&…

人员定位系统的功能及在不同领域的应用

人员定位系统是实时定位系统&#xff08;RTLS&#xff09;的一种&#xff0c;是用于跟踪人员位置的软硬件一体化系统。它使用无线通信技术和传感器来获取位置数据&#xff0c;并将其发送到监控中心或移动设备。它在多个领域使用&#xff0c;包括工业、医疗保健、军事、物流等。…

【网络】· 路由器中配置单臂路由和DHCP,VTP原理

目录 &#x1f349;单臂路由的工作原理 &#x1f95d;交换机配置 &#x1f95d;路由器配置 &#x1f349;路由器配置DHCP &#x1f95d;配置实例 &#x1f95d;路由器配置 &#x1f95d;验证 &#x1f349;VTP工作原理 &#x1f95d;VTP模式 &#x1f95d;VTP通告 &#x1f95d…

基于多动作深度强化学习的柔性车间调度研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…