***WARNING L15: MULTIPLE CALL TO SEGMENT错误信息的处理

news/2024/4/24 4:52:41/

***WARNING L15: MULTIPLE CALL TO SEGMENT错误信息的处理

1.错误信息

***WARNING L15:  MULTIPLE CALL TO SEGMENT
SEGMENT:   ?PR?_WRITE_GMVLX1_REG?D_GMVLX1
CALLER1:   ?PR?VSYNC_INTERRUPT?MAIN
CALLER2:   ?C_C51STARTUP

    该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。
    出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候都可以被ISR打断,一段时间后又可以
运行,但是相应数据不会丢失)
    原因之二是用于局部变量和变量(暂且这样翻译,arguments[自变量,变元一数值,用于确定程序或子程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数的内存冲突。

  原因之三:中断调用的函数过于复杂,层次较多。

  解决方法:在在中断中加标志位,函数调用放在主循环中。
    例如,第一个警告中函数WRITE_GMVLX1_REG D_GMVLX1.C 或者D_GMVLX1.A51被定义,它被一个中断服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C中。
解决方法:
    如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占用内存(假设只使用寄存器),则你可以完全忽略这种警告。
    如果该函数占用了内存,则应该使用连接器(linker)OVERLAY指令将函数从覆盖分析(overlay analysis)中除去,例如:
OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)
   上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数,而这些被调用在程序中其他地方也被调用,你可能会需要也将这些函数排除在覆盖分析(overlay analysis)之外。这种OVERLAY指令能使编译器除去上述警告信息。
   如果函数可以在其执行时被调用,则情况会变得更复杂一些。这时可以采用以下几种方法:
 1.主程序调用该函数时禁止中断,可以在该函数被调用时用#pragma disable语句来实现禁止中断的目的。必须使用OVERLAY指令将该函数从覆盖分析中除去。
 2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。
 3.将该函数设为重入型。例如:
 void myfunc(void) reentrant {
  ...
 }

   这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种方法时重入堆栈必须在STARTUP.A51文件中配置。
这种方法消耗更多的RAM并会降低重入函数的执行速度。


http://www.ppmy.cn/news/436063.html

相关文章

时序分析28 - 时序预测 格兰杰因果关系(中) python实践1

时序分析28 - 时序预测 - 格兰杰因果关系(中) Python 实践 1 上一篇文章我们介绍了格兰杰因果关系的基本概念、背景以及相关统计检验法。本篇文章我们使用Python编程实践一下。 实践1:股票价格数据之间的格兰杰因果关系 问题:苹果公司今天的股价是否…

数电——Multisim仿真设计两位乘法器

数电——Multisim仿真两位乘法器 两位乘法器设计 实验目的 掌握组合逻辑电路的分析和设计方法,以及仿真测试方法。 实验原理 本实验使用了两个74HC138和1个三输入与非门、1个四输入与非门、一个六输入与非门和1个非门 实验内容 (一)、…

1.5

1.编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(…

Keilc *** WARNING L15: MULTIPLE CALL TO SEGMENT

.***WARNING L15: MULTIPLE CALL TO SEGMENTSEGMENT: ?。。。?。。。CALLER1: ?。。。?MAINCALLER2: ?C_C51STARTUP 该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函数)同时调用,或者同时被多个中断服务程序调用。…

keilC51编译常见错误和警告说明

如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享!( 1 )L15 重复调用 ***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C5…

Zynq PS之MIO、EMIO调试

目录 原理框图 Vivado中添加&配置Zynq UltraScale MPSoc IP UART设置(仅用于调试,非必需) MIO、EMIO设置 DDR配置 执行Generate Output Products 执行Create HDL Wrapper 执行File -> Export ->Export Hardware 执行Launch S…

计算机组成原理实验二 存储系统预习报告

实验一----静态RAM 一、实验目的 掌握静态随机存储器 RAM 工作特性及数据的读写方法。基于信号时序图,了解读写静态随机存储器的原理。 二、实验预习 1、阅读实验指导书,然后回答问题。 实验所用的静态存储器由一片 6116(2K*8bit &#…

geoserver离线地图服务搭建和图层发布

前言 项目用到了GIS地图,在浏览器进行展示。起初使用了在线的高德地图。高德官网api丰富,且都是中文,很好用,也很方便。但是随着需求的变更,项目环境也从互联网变成了内网环境。所以高德地图就不能再用了,…

***WARNING L15: MULTIPLE CALL TO SEGMENT 错误详解和解决方案

转自:https://www.cnblogs.com/CuriosityWzk/archive/2011/12/25/2301090.html 今天来说说*** WARNING L15: MULTIPLE CALL TO SEGMENT这个问题! 其实这个问题应该是引起注意的,有可能引起程序冲突,但是一般时候程序运行不会有问题,但…

Keil 中的报警错误:WARNING L15: MULTIPLE CALL TO SEGMENT

今天调试时遇到了这个问题,以前都不注意这些警告错误,现在看来争取要做到:0错误,0警告。 中断中和中断外都调用了同一个串口打印函数,一直有上述的报警,没在意,今天调试时发现串口打印出了一些…

关于*** WARNING L15: MULTIPLE CALL TO SEGMENT解决方案

关于*** WARNING L15: MULTIPLE CALL TO SEGMENT 编写51程序的时候,有时候会在主函数和中断函数里面调用同一个函数,如果正的出现这种情况,编译器会提出 这种警告: *** WARNING L15: MULTIPLE CALL TO SEGMENT(重复调用…

L15.休眠与唤醒

1.休眠方式 在内核中,休眠方式有很多种,可以通过下面命令查看 # cat /sys/power/state //来得到内核支持哪几种休眠方式. 常用的休眠方式有freeze,standby, mem, disk freeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态。唤醒最快…

shell编程lesson11

计算机程序其实就是处理数据。很多编程问题需要使用到更小的数据单元,例如字符串和数字。shell提供了多种字符串操作的参数扩展。除了算术扩展,还有一个常见的叫做bc的命令行程序,它能执行更高层次的数学运算。 参数扩展(Paramet…

笔记本显卡偶尔闪屏花屏

可能是intel核显的问题,先试试禁用核显只用独显好不好使,如果好使 WINDOWS下尝试用intel管理面板关闭节能模式,里头有个“为了节能单独控制刷新率使刷新率和屏幕本身刷新率不一致”的类似的功能,关上试试看能不能解决。。

Mac电脑花屏

原因:GPU 加速导致,和电脑的独显有关; 解决办法:打开谷歌浏览器: 点击上图的三个点,选择设置;在高级设置中选择系统:关掉硬件加速模式

笔记本电脑外接显示器出现灰屏

确保硬件没有问题的前提下,打开 系统设置-屏幕-选择灰屏的屏幕关闭HDR

amd6800h安装ubuntu22.04 笔记本休眠花屏解决办法

amd6800h是22年的zen3 apu,而ubuntu22.04内核是5.15,驱动不兼容造成花屏现象是可以理解的 内核5.18更新了图形驱动,那么接下来就升级到5.18预计可以解决花瓶问题 网上可以看到稳定版是5.18.15 进入https://kernel.ubuntu.com/~kernel-ppa/mai…

【已解决】笔记本电脑突然花屏

起因 原先正常使用,在运行某程序时突然花屏卡死。 过程 1、强制关机,尝试重新启动。出现指示灯闪烁,黑屏无法启动的状况。(怀疑显卡、内存出现问题) 2、过段时间后,能启动。但不久又出现了花屏的情况。 …

电脑花屏死机怎么办?

问:电脑动不动就花屏死机,屏幕有横条闪动或完全白色,重启后可以再用一阵子然后又花屏。是显卡问题(我的是集成显卡)吗?还是其他什么问题呢?怎么解决? 答:大多数情况下,显…

MacBookPro 关机花屏解决

MacBookPro 关机花屏解决 作者:坚果 公众号:“大前端之旅” 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括Flu…