【RTX51 Tiny初级】12_解决多重调用问题(MULTPLE CALL TOSEGMENT)

01 - 多种调用MULTIPLE CALL TO SEGMENT

  使用RTX51 Tiny系统,Keil编译出现Warning:MULTIPLE CALL TO SEGMENT的时候,说明一个不可重入的函数Fun同时被2个或以上的任务调用,可能出现重入的情况,比如:
在这里插入图片描述

在这里插入图片描述

02 - 解决办法

  在Keil的51编译器中,因为资源限制,函数都是不可重入的,并不是所有的函数被2个或以上的任务调用都会报这个Warning,而是被编译器Overlay处理的函数再被2个或以上的任务调用才会报Warning,解决的办法暂时有如下:
  方法0(先行):重新设计代码。尽量让同一个资源只在一个任务中使用。
  方法1(首选):建立多个备份或建立守护任务。目的是让2个或以上的任务不调用同一个函数,有N个任务在使用Fun,就复制N份,然后函数名不同,供每个任务调用,如果Fun内还有其他不可重入的函数A和B,那么A和B也要根据不同的Fun相应复制。
  优点:没有重入问题
  缺点:占用CODE和RAM,操作和维护麻烦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值