MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结

2023-10-30

RealView MDK具有强大的编译、链接功能。嵌入式设备拥有的资源往往有限,如果一个程序编译、链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中。在这种情况下我们一般不去从硬件上调整存储空间的大小(有些存储空间在片内,实在无法调整),而是去修改程序,试图将程序简化、将缓存减小、减少全局变量、少用大数组多用指针等等人工方法,有些时候这些方法很有效。但如果使用的开发工具是RealView MDK,则有一系列方法,可以达到这一目的,比起手动方法只有过之而无不及。这些方法仅仅需要在编译、链接之前对某些配置做一些修改即可,使用非常简单。当然,如果将这些方法和人工修改程序的方法结合起来,效果更佳。有时单独使用以下三种方法中的一种即可解决问题,有时需要结合其中两种,甚至三种才能解决问题。下面以开发板Embest ATEB9200(采用的SOC 为AT91RM9200)的例程USARTPDC_test为例,由于片内SRAM空间比较小(大小为16KB,起始地址为0x200000),本例程在片内SRAM中进行调试时需要使用一些技巧,下面介绍如何使用这些方法。

在默认设置下,将例程USARTPDC_test选择在片上SRAM中调试时,编译通过、在链接时会提示以下错误信息提示空间不够:

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(_scanf_int.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(_scanf_longlong.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(aeabi_sdiv.o).

Target not created

一、使用微库

使用微库时,将以更精简短小的C库替代标准C库,减小代码大小,使用微库的方法如下:

打开Project->Options->Target,将Use MicroLIB前面的复选框勾上。如下图:



图一  使用微库

 

点击确定之后,重新编译、链接。发现还是会提示空间不够的错误信息,但错误信息明显比以前少了:

Build target 'USARTPDC_test Int RAM'

assembling RM9200.s...

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(interrupt_usart.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section i._printf_core(printf8.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6407W: Sections of aggregate size 0x86c bytes could not fit into .ANY selector(s).

Target not created

二、修改链接脚本

修改链接脚本的方法有两种一种是直接修改分散加载文件,另一种是使用默认分散加载文件,这时仅需修改Project->Options->Target中的存储空间起始和大小。为了简单直观,本例中使用后者。在使用后者时,需要在Project->Options->Linker中将Use Memory Layout from Target Dialog前面的复选框勾上。如下图:



图二 使用默认的分散加载文件

 

然后在Project->Options->Target中修改存储空间中只读部分和可读写部分的起始和大小,一般来说加大只读部分大小(该部分存放程序中的指令),而减小可读写部分的大小(该部分存放堆栈、局部变量等)。

根据错误提示可知,只读部分空间最少需要加大0x86c bytes,总空间固定16KB,相应地需要减小可读写部分大小。修改之前如图一,修改后如下图:



图三  增大只读部分大小,减小可读写部分大小

 

点击确定之后,重新编译、链接:

Build target 'USARTPDC_test Int RAM'

assembling RM9200.s...

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

Program Size: Code=9388 RO-data=380 RW-data=4 ZI-data=1244 

".\Int_RAM\USARTPDC_test.axf" - 0 Error(s), 0 Warning(s).

编译链接成功!

三、修改优化级别,着重对空间进行优化

在编译时着重对空间进行优化,让编译器自动减小代码大小。可使用编译选项-Ospace进行编译以达到目的,另外可以选更高的选优化级别―-03如下图:



图四 选较高优化级别针对空间进行优级化以减小代码大小

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结 的相关文章

  • Flash 安全错误 #2048:是否有解决方法,或者 Twilio 是否必须更改其元策略?

    我的 Flash Flex 应用程序出现问题 几个月来 它可以从 Twilio 下载文件 但现在我收到以下错误 我不得不删除超链接 所以想象 ttp 实际上是 http 安全错误事件 类型 安全错误 气泡 false 可取消 假事件阶段 2
  • ActionScript 的 File.upload 不适用于 iOS 设备的 Air SDK

    我尝试使用 ActionScript 的 File upload 在 Air SDK for iOS 环境中上传文件 但 File upload 无法正常工作 调用 File upload 后 不会执行有关文件上传的处理程序 也不会捕获任何
  • 在 ActionScript 中移动数组中的对象,产生体育场波浪效果

    我想移动数组中的所有对象 产生体育场波浪效果 我想根据舞台上的 y 值移动对象 我所有的方块大小都是 50x50 我想将它们向上移动然后向下移动 下面是我的代码 import fl transitions Tween import fl t
  • 将过滤器应用于 AS3 中的所有内容

    我正在尝试在 AS3 Flex SDK 中添加过滤器 我可以为任何一个对象添加一个过滤器 但我想将过滤器应用到一切那是某个对象的子对象 假设弹出一个暂停窗口 暂停窗口下方的所有内容都会变得模糊 将过滤器应用于每个单独的对象 例如 迭代列表
  • Bootstrap-modal 在 Flash 顶部弹出

    我正在使用 Twitter 的 Bootstrap 插件bootstrap modal 除非后面有闪光灯元件 否则它效果很好 当引导模式对话框出现并且其后面有一个 Flash 元素时 Flash 元素位于其他所有元素之上 我该如何解决 您需
  • Actionscript 内存管理、垃圾收集

    这个博客 http blogagic com 163 flex memory management and memory leaks varref 和其他人 指出 在清理对象时 您应该在 dispose 方法中将对象引用设置为 null 但
  • Flash AS3 - 将多个对象拖放到一个目标?

    标题或多或少是不言自明的 我一直在学习许多不同的教程 而且说实话 我对 AS3 不太擅长 上图显示了我的目标 无论如何 我在我看到的大多数在线教程中注意到 拖放教程要么基于一个对象到一个目标 要么基于多个对象到多个目标 所以我想知道是否有人
  • Flex/AS3很奇怪的简单数字运算问题

    我的问题在 Flex 中描述起来非常简单 0 8 0 2 0 6000000000000001 以前有人得到过这个 我确定前两个成员是 0 8 和 0 2 并且是 Number 类 为什么会发生这种情况 另一件事 我从 像这样输入 var
  • 如何从Flash/AS3找到用户Temp文件夹的路径?

    如何从 Flash AS3 找到用户临时文件夹的路径 例如 C Users lisnil AppData Local Temp 它需要在任何版本的 Windows 上运行 至少是 XP Vista 和 7 您无法通过 Flash 那样访问文
  • 定义 fl.controls: 找不到标签

    我正在使用 ActionScript 3 在 FlashDevelop 中进行开发 当我尝试执行以下操作时出现以下错误import fl controls Label Definition fl controls Label could n
  • 在 Flash 对象上方显示图像

    我在这里面临着一个棘手的情况 这就是问题 我有一个 Flash 对象 我想在其上显示图像这些是我尝试过的技巧 1 玩转z index 没用 2 将wmode参数设置为透明 不透明 同样没有用 3 使用javascript并仅在页面加载后显示
  • ActionScript 3 中的圆形滑块

    我希望在 ActionScript 中添加一个圆形滑块 非常类似于这一页 http interface eyecon ro demos drag vr html shows 它最终会改变对象的色调 返回 CMY 值 但如果它只是吐出程度 我
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • iPhone 上的 Flash(或 Silverlight)

    我对在 iPhone 上开发应用程序感兴趣 并且作为一名 NET 和 ActionScript 开发人员 我对 Objective C Cocoa Touch 编程的学习曲线有点害怕 我知道 Adob e 已经为 iPhone 准备好了 F
  • 求反射角的弧度

    我正在编写一个简单的 Flash 游戏 只是为了学习 Flash 并提高我的数学能力 但我对弧度感到非常困惑 因为这对我来说是新的 到目前为止 我所做的是使用鼠标 单击并释放 使用弧度向该方向射出一个球 现在我想要发生的是 当球撞到墙壁时
  • Facebook 聊天在打开时隐藏 Flash 应用程序

    运行 Flash 应用程序时 如果我打开新的或现有的 Facebook 聊天窗口 我的 Flash 内容就会消失 我可以继续听到应用程序中播放的音乐 并且当我关闭 最小化 Facebook 聊天窗口时 我的 Flash 内容会重新出现 这是
  • 使用 Flash 在本地托管游戏?

    我只是找不到合适的谷歌搜索词 是否可以使用 Flash 或 Flash 兼容服务 来允许游戏中的玩家通过 Web 浏览器托管自己的游戏 使用自己的带宽 在某种程度上 从他们的计算机运行他们自己的游戏服务器 对于 Flash 浏览器内游戏 但
  • Flash 照片上传 - 从网络摄像头拍摄照片 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 JW Player 5.1 中提取 .flv 流?

    问题是我的互联网连接速度很慢 并且视频不像 YouTube 那样缓冲 因此我想知道是否可以提取 JW Player 中正在流式传输的 flv 文件的 url 并直接下载它 做了一些初步研究 我发现了以下信息 主要视频网址 http ijf1
  • Microsoft Surface 支持 Flash 网站吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我搜索过谷歌但没有找到明确的答案 我或我工作的 Flash 网站 应用程序可以在 Microsoft Surface 平板电脑上运行吗 看来微软 Su

随机推荐

  • 自作JavaScript飞机大战小游戏

    不会canvas画板标签小朋友们的福音来啦 用标签也能制作简单小游戏哦 飞机大战GitHub源码链接 https github com shunyue1320 fjdz git 做游戏就要有素材的啦 以下是在爱给网找到的素材 首先3个页面的
  • MobileNet(二)

    MobileNets MobileNetv1 深度可分离卷积 深度学习的经典网络模型 如ResNet VGG GooogleNet等已经达到了不错的效果 但存在一个问题 即模型庞大 参数较多 计算量较大 在一些实际的场景如移动或嵌入式设备中
  • git 查看远程地址 与 远程地址的设置

    一 查看远程地址 git remote v 如果绑定好远程地址的话 会有两条地址 fetch 和 push 那么 fetch 表示我们要获取到的地址 push则表示我们要推送的地址 二 远程地址的设置 1 添加远程地址 git remote
  • Prometheus 集成 Node Exporter

    文章首发于公众号 程序员果果 地址 https mp weixin qq com s 40ULB9UWbXVA21MxqnjBxw 简介 Prometheus 官方和一些第三方 已经把一些常用数据库 系统 中间件等的指标数据的采集做成了一个
  • 图像处理常用插值方法总结

    常用的插值方法 1 最邻近元法 这是最简单的一种插值方法 不需要计算 在待求象素的四邻象素中 将距离待求象素最近的邻象素灰度赋给待求象素 设i u j v i j为正整数 u v为大于零小于1的小数 下同 为待求象素坐标 则待求象素灰度的值
  • 矩阵运算库

    gt Android Java矩阵计算的架包Jama Jama是一个基本的线性代数Java包 包括一个基本的Matrix类和5个矩阵分解类 Matrix类提供了基本的线性代数数值运算的功能 不同的构造函数可以构造双精度和浮点精度的二维数组
  • 什么是DHCP?有什么优缺点

    DHCP 代表动态主机配置协议 它是存在于应用层的网络管理协议 在它的帮助下 可以将 Internet 协议 IP 地址动态分配给网络上的任何设备或节点 以便它们可以使用该 IP 进行通信 网络管理员的任务是为网络中的所有设备手动分配大量
  • STM32组合设备实现USB转双串口

    USB转双串口 核心技术就在于组合设备 USB Composite 的实现 组合设备的实现 其核心技术在于描述符的实现 下面我们先给出描述符 设备描述符 C 纯文本查看 复制代码 00001 00002 00003 00004 00005
  • IDEA 获取类的相对路径和绝对路径

    1 相对路径 结果 action HelloAction 2 绝对路径 结果 E javaProject JavaEEProject day08 Struts2 test01 src action HelloAction java 转载于
  • 登录注册与Cookie

    很多时候 我们登录一个网站的第一步是注册用户 然后登录 这个高频次的操作前端与后端是如何交互完成登录成功页面跳转的呢 今天我们来聊一聊登录注册的那些事 登录注册的流程 如上图 第一步 用户在注册页面将自己的账号密码邮箱等等信息传给服务器 第
  • 小熊派STM32-OTA+IOT教程

    近期在准备一个物联网课程 主要是针对STM32OTA升级 这次使用的是小熊派物联网开发板 项目地址 https gitee com wenzhengclub bearpi iot ota 其实这个开发板去年我就拿到手了 只是一直没有机会和时
  • Colaboratory下载Kaggle数据

    快捷链接 Colaboratory网址 Kaggle网址 Kaggle获取不了验证码的可以留言 进入Kaggle的账户 新建一个API Token 就会下载一个kaggle json文件 同时出现下面提示 这个在本地运行的时候 需要将kag
  • SQL: STUFF()和FOR XML PATH的使用

    STUFF param1 startIndex length param2 将param1中自startIndex SQL中都是从1开始 而非0 起 删除length个字符 然后用param2替换删掉的字符 示例 select STUFF
  • Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

    1 lcov安装 sudo apt get install lcov 此时安装的lcov版本号是1 13 2 lcov使用 生成覆盖率关联的库在编译时需要加上以下标志位 set CMAKE CXX FLAGS CMAKE CXX FLAGS
  • Docker 使用及常用命令(一)

    一 Docker 基本概念 Docker 是一个开源的应用容器引擎 依赖于已存在并运行的 Linux 内核环境 它允许开发者将应用及其依赖包打包到一个轻量级 可移植的容器中 发布到任何流行的 Linux 机器上 容器相互之间不存在任何接口
  • 稳压二极管串联电阻计算

    稳压二极管是稳压电路的一种方式 但是提供负载的动力与二极管自身的功率有关 例如ZMM 5V 功率1W 最小的反向稳压管的电流5mA 最大的反向稳压管电流 Izmax P U 1W 5v 200mA 当稳压管流向最大电流200mA 则流过串联
  • 自动驾驶仿真平台Carla从入门到放弃

    一 Carla的基本概念 人工智能 5G和V2X技术的不断发展使得自动驾驶成为可能 近几年 自动驾驶发展迅速 在科技新闻上经常可以看到自动驾驶的身影 而从事自动驾驶相关软 硬件研究的高效研究所和公司也越来越多 既有传统的汽车巨头 也有新兴的
  • Angular4.0_环境搭建

    1 百度Node js下载并安装 2 检查npm版本 npm v 3 安装angular cli sudo npm install g angular cli 4 检查版本 ng v 5 在当前目录下创建angular项目 ng new a
  • 【AIGC】2、Visual ChatGPT

    文章目录 一 背景 二 Visual ChatGPT 2 1 对系统规则的提示管理 2 2 基础模型的提示管理 2 3 用户提问的提示管理 2 4 基础模型输出的提示管理 三 实验 3 1 实验设置 3 2 多轮对话的完整案例 3 3 Ca
  • MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结

    RealView MDK具有强大的编译 链接功能 嵌入式设备拥有的资源往往有限 如果一个程序编译 链接之后的可执行文件大小略大于存储大小时 则不能生成可执行文件进行调试或固化到Flash中 在这种情况下我们一般不去从硬件上调整存储空间的大小