关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

这篇具有很好参考价值的文章主要介绍了关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在KEIL5编程,往往遇到许多“Target not createt”,即目标不能实现这类情况。由此为帮助大家解决这些问题特开此贴。

目录如下:

1、2K字节限制错误 ERROR:RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT 或者 ADDRESS SPACE OVERFLOW

     直达链接:https://blog.csdn.net/SumubeiFZ/article/details/125344372

2、程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

      直达链接:https://blog.csdn.net/SumubeiFZ/article/details/125346305

一、问题产生

关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

当编译出现如上情况时候,其实是由于地址空间溢出

这其实是因为(默认配置下)系统会将变量分配到data空间,即内部RAM空间,大小取决于你所选用的单片机。如果你定义了太多的函数及变量,超出了地址空间,导致有些变量或者函数没有空间定义了。

二、解决办法:

解决的核心是使用其他的空间进行存储实变量及函数。有以下两种方法:

1、代码上直接将变量存储到其他存储器

(1)使用默认存储区的示例:

int a;

上述代码中:若KEIL的Target中默认设置为data存储区,则直接存入data存储区。

(2)使用指定存储器区:

int xdata b;

int pdata c;

int code temp[]={0, 0, 0, 0, 0, 0};

上述代码中:指定了变量的存储区,则变量b直接存入xdata外部存储区,变量c直接存入pdata外部存储区,数组temp 直接存入了code程序存储区

PS:外部存储区可读可修改,code程序存储区数据不可被修改。

        当然若将数据存入外部存储器,将会降低程序运行的速度。

2、修改默认存储区

(1)首先,打开 Options for target ,如图所示。

关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

(2)然后在 Target 里修改存储的空间,其中有以下三项:

  • 内部存储区DATA:内部RAM,固定指前面0x00~0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
  • 外部扩展区XDATA:外部扩展RAM,一般指外部0x0000~0xffff空间,用DPTR访问。这里推荐使用该存储区。
  • 外部存储区PDATA:外部扩展RAM的低256个字节,地址出现在A0-A7上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好像对此有BUG,建议少用。

 关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

 这里建议改为XDATA。

但是由于代码量实在过大,也会超出XDATA的存储范围,导致编译不能实现。因此建议使用第一种方法自行定义变量存储区。

当然这里有点是要注意的。自己的Code Rom Size是否设置正确,可自行参考自己的单片手册。

如果设置不正确也会导致编译无法实现。

关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN

PS:使用不同的存储器,将使程序执行效率不同,在编写程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率。

关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN文章来源地址https://www.toymoban.com/news/detail-419420.html

到了这里,关于关于KEIL5编译出现“Target not createt”全系列解决办法——情况2:程序溢出错误 ERROR: PUBLIC REFERS TO IGNORED SEGMEN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Keil 5 出现 ‘target not created‘ 是为什么

    Keil是一种流行的嵌入式开发环境,广泛应用于嵌入式系统的软件开发。然而,有时候在使用Keil 5进行编译时,会遇到错误信息\\\"Target not created\\\"。本文将解释这个错误的可能原因,并提供一些解决方法,帮助您解决这个问题。 一、了解问题 在解决任何问题之前,我们首先需要

    2024年02月13日
    浏览(76)
  • Keil5遇到:*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.

    这个原因是Compiler Version 5编译器在Keil 5.37以后就不再默认安装了 从这个版本开始,Keil 默认安装的是 Compiler Version 6.18,如下图 图1 版本信息 方式1.         点击锤子图标,然后在 Target一栏选择:Version 6 (或6.18)的编译器,点击Ok退出。重新编译就可以了。 / 图2 锤子(

    2024年02月12日
    浏览(16)
  • 【Keil5】*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.解决方法

    出现这个报错的原因在Keil 5.37以后安装compiler version 6,如果要使用compiler version 5,需要自己安装。 【下载链接】 官网 https://developer.arm.com/downloads/-/legacy-compilers 网盘 链接:https://pan.baidu.com/s/11MaMHXX6YXzklZTGbXj3vA?pwd=ad7h  提取码:ad7h 【安装方法】 1、安装路径为 ..Keil_v5ARMA

    2024年02月14日
    浏览(15)
  • STM32 Keil5报错-*** Target ‘XXX‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which -安装编译器解决

    安装的keil 版本是V5.38, 显示缺少编译器 Compiler Version 5\\\' *** Target \\\'MUSICPLAYER\\\' uses ARM-Compiler \\\'Default Compiler Version 5\\\' which is not available. 下载编译器:  Arm Compiler 5.06 update 7 (build 960)  下载地址:https://developer.arm.com/downloads/view/ACOMP5 Legacy Arm Compiler 5, 4.1, and RVCT (ACOMP5) https://developer.ar

    2024年04月11日
    浏览(22)
  • KEIL5 MDK中下载STM32全系列芯片包的简易方法(免费)

    本文介绍了两种免费方法 本例中使用的STM32型号为STM32F407VET6。 打开Keil uVision5,点击下图所示的Pack Installer图标。 根据芯片型号开头字母可以查询到对应芯片。 例如STM32F4系列的芯片包名称为STM32F4xx_DFP,版本为2.14.0。 在网址中输入“https://www.keil.com/pack/Keil.”+对应的芯片包名

    2024年02月05日
    浏览(26)
  • 《 Keil MDK-Arm》__编译代码报错:Target uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available

    目录 一、问题描述 二、现状分析 三、找出原因 四、解决方案 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。         很多友友在安装官网最新版的“MDK538a.EXE”后编译项目代码时,不约而同都出现了以下的编译错误信息: Rebuild started: Project: Template *** Target \\\'

    2023年04月17日
    浏览(21)
  • Keil5升级MDK后编译报错

    *** Target \\\'Target 1\\\' uses ARM-Compiler \\\'Default Compiler Version 5\\\' which is not available. *** Please review the installed ARM Compiler Versions:    \\\'Manage Project Items - Folders/Extensions\\\' to manage ARM Compiler Versions.    \\\'Options for Target - Target\\\' to select an ARM Compiler Version for the target. *** Build aborted. Build Time Elapsed:  00:0

    2024年02月16日
    浏览(14)
  • KEIL5 各个版本编译器的下载

    关于下载了新版本KEIL之后,编译器版本不对导致以前的程序不能运行,有许多问题需要解决,其中编译器版本问题是个不能避免的问题; 我之前用的是V5.06 update 7(build 906)版的编译器,后来升级MDK537之后,编译器版本就变成V6.16了,因为我是卸载删除之后再升级的MDK,所以之

    2024年02月02日
    浏览(27)
  • Keil5,ARM编译器 软件优化注意事项

    循环是大多数程序中的常见结构。由于大量的执行时间通常花费在循环中,因此值得关注时间关键循环。 如果不谨慎地编写,环路终止条件可能会导致大量开销。在可能的情况下: 使用简单的终止条件。 写入倒计时到零循环。 使用  unsigned int  类型的计数器。 测试与零的

    2024年02月03日
    浏览(20)
  • Keil5点击编译正常,烧录和调试直接闪退

    我在WIN11的环境下,安装了目前ST官网上最新的MDK538,刚刚下载好的前两天一切正常! 但是就在刚刚出现了Keil编译正常,使用正点原子的STLink烧录器下载却直接给我闪退,想查看 魔术棒中的DuBug中的烧录器配置Seting时候,也闪退。上网查看,采纳网友的意见“查看注册表”“

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包