## 终于解决 归递调用 警告,其实程序没有 归递调用*** WARNING L13: RECURSIVE CALL TO SEGMENT> 引用块内容> http://blog.csdn.net/avideointerfaces/article/details/32687899> 以下是转载上面链接内容> 最近编译keil项目时,遇到一个比较奇怪的link warning,如下所示。根据这个warning,容易知道这两个函数存在递归(相互)调用关系。其实在源代码中不存在直接递归调用关系,而是间接地调用,从map文件摘出这个calltree如下+--> _CBUSMSCREADECBUSSPEEDSDONE/SI_DRVCBUSRX| | _CBUSMSCREADTMDSSPEEDSDONE/SI_DRVCBUSRX| | _CBUSMSCREADECBUSDEVROLESDONE/SI_DRVCBUSRX| | _CBUSMSCREADLOGDEVMAPDONE/SI_DRVCBUSRX| | _CBUSMSCREADBANDWIDTHDONE/SI_DRVCBUSRX| | _CBUSMSCREADFEATUREFLAGDONE/SI_DRVCBUSRX| | _CBUSMSCREADDEVICEIDHDONE/SI_DRVCBUSRX| | _CBUSMSCREADDEVICEIDLDONE/SI_DRVCBUSRX| | _CBUSMSCREADSCRATCHPADSIZEDONE/SI_DRVCBUSRX<--+ _CBUSMSCREADINTSTATSIZEDONE/SI_DRVCBUSRX简单梳理一下上面的调用树,就是CBUSMSCREADECBUSSPEEDSDONE调用了CBUSMSCREADTMDSSPEEDSDONE, CBUSMSCREADECBUSDEVROLESDONE调用了CBUSMSCREADECBUSDEVROLESDONE。。。 。。。最后CBUSMSCREADINTSTATSIZEDONE又调用了CBUSMSCREADECBUSSPEEDSDONE。众所周知,Keil51由于内存资源比较紧张,函数的参数及局部变量一般地放在data segment, 为了避免一个函数的变量被另外一个函数的变量覆盖,keil会分析函数之间的相互调用关系,对于没有相互调用的关系的函数变量就可以重叠在一起,即overlay。 对于存在调用关系的函数,则变量存放在data区间的不同地址。但是,递归调用是一种例外,由于是同一个函数,所以变量都会重叠在一起,这样会造成变量还没用完就被覆盖了。 基于此,原则上,keil51是不允许递归调用的。关键点:如何解决这类问题?1)如果是直接递归调用, 如下所示void B(void){... ... B().. ....}就将B函数申明为void B(void) reentrant, 这样就会生成模拟栈来储存自动变量和参数,以避免变量被覆盖。2)如果是间接递归调用,如我的项目遇到的case,怎么办?在option->LX51 Misc->Misc controls中,有一个Overlay的空白框,这个是干什么用的呢? 查阅LX51 user guide,知道Overlay是link的一个指示符,我们可以利用它来手动修改或标明call tree关系。比方说,A通过函数指针调用B,为安全起见,可以增加一条OVERLAY(A!(B)) 又比如A和B其实不存在调用关系,如我的项目中遇到的case,这种情况下,只需要增加OVERLAY(A~(B))其实LX51指示符除了Overlay外还有很多,如removeunused, disablewarning等。如不把它们弄清楚 就很容易造成项目的各种不稳定性。

以上是转载

根据上面的 方法,自已怎么搞也搞不好, OVERLAY 的格试 不会写

能过自已慢慢摸索

终于 搞字,

先打开 .M51文件

有如下内容:

PROGRAM RECURSIONS REMOVED FROM CALL TREE
=========================================
+--> ?CO?MENU
<--+ ?PR?DSP_ZT_TCK?MENU

有人知道 ?co? 是什么意思 ,我程序里是个函数指针,

解决方法

其实上面的程序没有归递调用;

在在option->LX51 Misc->Misc controls中,有一个Overlay的空白框

写下如下内容 就可以

?PR?DSP_ZT_TCK?MENU ~ ?CO?MENU  

多个用,分开.

终于解决 归递调用 警告,其实程序没有 归递调用*** WARNING L13: RECURSIVE CALL TO SEGMENT相关推荐

  1. Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...

    centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...

  2. JS中调用本地Winform程序并传递参数

    场景 JS中调用本地exe程序: JS中调用本地exe程序_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的基础上怎样在js中调用本地winform程序并且传递参数. 注: 博客: ...

  3. Robotium调用getActivity()导致程序挂起的方法

    1. 问题背景的叙述性说明 需要直接用在工作中没有项目的源代码robotium测试目标android平台launcher,该平台的基础上,当前日期的版本号android 4.4.2.之前我用来验证的可 ...

  4. E5 调用API续订程序:Microsoft 365 E5 Renew

    Microsoft 365 E5 Renew Microsoft365 E5 Renew 已于2021-04-30结束生命周期,请下载Microsoft365 E5 Renew Plus 继续使用!! ...

  5. 【方法】HTML网页调用本地Python程序

    欢迎支持个人chatgpt:https://chat.immuseai.com/register?promotion-code=pRE9p9DXCOBz3Z1s.注册即可使用GPT3.5和4.0. 代 ...

  6. 终于不用为了调试一个ARX(.net)程序而反复重新启动AutoCAD了!!!

    .net开发AutoCAD遇到的最大不方便之处就是调试程序的时候要不断的重新启动AutoCAD.而可用于.net开发的AutoCAD的版本都是非常新的,启动一次非常的慢,最新的AutoCAD2007启 ...

  7. air java_Air 调用本地化java程序

    最近在写一个客户端,使用的air但是其中要访问数据库,众所周知,air除了那个sqlite之外,是不能访问任何数据库的,只能借助于其它语言与数据库进行交互,所以这就会牵扯到air调用本地化java程序 ...

  8. 成功解决win10下dos中运行tensorboard --logdir=logs和调用events.out.tfevents一闪而过的问题

    成功解决win10下dos中运行tensorboard --logdir=logs和调用events.out.tfevents一闪而过的问题 目录 解决问题 解决思路 解决方法 解决问题 在dos中运 ...

  9. 熬了一个通宵,终于解决了所有的事情,下线,睡觉

    熬了一个通宵,终于解决了所有的事情,下线,睡觉 现在时间2009年12月30日4:56:55. 完成移动邮件初步内容.打包上传,更新到SVN 完成网络工程分享网站(http://www.the520. ...

  10. oracle 找不到程序单元,Oracle Web ADI 加载时错误:ORA-06508: PL/SQL: 无法在调用之前找到程序单元...

    Oracle EBS 的Web ADI给批量导入数据提供一个不错的解决方案.但是,Web ADI开发比较麻,主要缺点如: 1.集成器设置好以后不能修改,必须要事先考虑包的存储过程或函数的参数.则否,存 ...

最新文章

  1. .Net 2.0 中的发送邮件实现小解(轉)
  2. UI 积累之select section
  3. 使用JAVA建立稳定的多线程服务器
  4. c/c++ c++ file c++/stl/boost 判断文件目录是否存在
  5. 一个最简单的SAP UI5应用部署到SAP云平台CloudFoundry环境后,自动生成了哪些资源
  6. 第一次收到这么用心的感谢信
  7. Kotlin学习笔记 第二章 类与对象 第九节 泛型
  8. python程序加密_项目源代码被好朋友“盗用”!让我痛心疾首!给Python源码加密!...
  9. html 权限模块设置,角色权限设置.html
  10. 盘点2012中国承载网十大事件(转)
  11. webrtc项目编译报错(image not found)
  12. Atitit 集成之道 attilax著 1. 所谓系统集成(SI,System Integration), 1 2. 发展方向 1 2.1. 产品技术服务型 2 2.2. 系统咨询型 2 2.3.
  13. microsoft html help workshop_云话科技 | 奥比中光Workshop技术研讨线上沙龙
  14. python 3d游戏 源码_毕设3D游戏《天鹰教》源码
  15. PS各种实用的辅助工具
  16. 计算机四级(网络工程师)内容,计算机四级《网络工程师》考试内容
  17. opencv的core组件——像素,ROI,图像混合(3)
  18. 计算机教案在幻灯片中插入影片,2019小学信息技术教师资格证面试:试讲及答辩真题《在幻灯片中插入音频文件》...
  19. 数据库内外连接、自连接
  20. linux 管理部门打印,Linux打印机相关的命令-打印管理_Linux常用命令大全

热门文章

  1. 表格中复制后出现空格_尝过廉江这个美食后,已经连续3天出现在下午茶名单中!...
  2. 中国AI独角兽新增一员:这家公司获得10亿元C轮融资 估值达到12亿美金
  3. 轻松理解Shel脚本中的变量(一)
  4. 基于epoll,socket与protobuf的简单帧同步游戏服务器
  5. APP推广要做哪些?渠道?方案?竞争分析?
  6. 杭州自己缴纳社保五险条件
  7. 第四章—密钥管理与分配
  8. 小鑫の日常系列故事(七)——小纸条
  9. cp小纸条月老小程序无加密源码 带部署说明文档
  10. MySQL的 初步认识 - 细节狂魔