搜索
bottom↓
回复: 9

【求助】RTX51 Tiny函数的可重入问题

[复制链接]

出0入0汤圆

发表于 2019-7-29 11:11:34 | 显示全部楼层 |阅读模式
目前在做的一个项目中,用到RTX51 Tiny,有一个疑问:在一个函数中调用os_wait(),或者os_switch_task()之后,os暂停当前task1,转向另外一个task2,在task2中的执行函数与task1中的函数可能构成Overlay关系吗???

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-7-29 11:46:18 | 显示全部楼层
虽然不了解RTX51 Tiny,但是也遇到过主函数与中断同时调用一个函数的情况,会出现问题,
主要因为编译器用全局变量代替局部变量。
此时要用到 reentrant ,将函数变成可重入,使局部变量放入堆栈中,两个地方同时调用也不会干扰。
(如果函数中用到了全局变量仍要小心)
如:
int fun(char a) reentrant  
{

}

如果要避免两个地方同时调用一个函数,也可以加一个标志用于等待,似乎可以用信号量还是啥?我也不太清楚了。

出25入12汤圆

发表于 2019-7-29 11:59:26 | 显示全部楼层
感觉2个 task 要是调用一个函数肯定会出问题的

好在这个切换任务都是受你控制的, 自己保证就行了

出0入0汤圆

发表于 2019-7-29 13:00:11 | 显示全部楼层
这个是非抢占式的,只要你自己保证在共用函数里面不放弃CPU,主动切换任务,基本就是可靠的了,不要担心重入问题

出20入70汤圆

发表于 2019-7-29 13:23:29 来自手机 | 显示全部楼层
用protothreads吧!这种汇编写的代码不了解清楚不敢用啊

出0入34汤圆

发表于 2019-7-29 14:04:19 | 显示全部楼层
将此工程全部会用到的函数,都如二楼那样在后头加上 reentrant  估计就可以了。

出0入0汤圆

 楼主| 发表于 2019-7-29 15:37:03 | 显示全部楼层
lcw_swust 发表于 2019-7-29 11:46
虽然不了解RTX51 Tiny,但是也遇到过主函数与中断同时调用一个函数的情况,会出现问题,
主要因为编译器用 ...

不是调用同一个函数啊。是在两个task中调用不同的函数,BL51会不会认为两个task中的函数没有调用关系,然后把他们的局部变量进行overlay。
我的疑惑是哪些情况下BL51进行overlay?我的理解是只要函数之间没有直接或间接调用BL51就可以overlay,不知道对不对。

出0入0汤圆

 楼主| 发表于 2019-7-29 15:37:39 | 显示全部楼层
chenerbox2 发表于 2019-7-29 11:59
感觉2个 task 要是调用一个函数肯定会出问题的

好在这个切换任务都是受你控制的, 自己保证就行了 ...

不是同一个函数啊

出0入0汤圆

发表于 2019-7-29 16:46:40 | 显示全部楼层
pipilee 发表于 2019-7-29 15:37
不是调用同一个函数啊。是在两个task中调用不同的函数,BL51会不会认为两个task中的函数没有调用关系,然 ...

哦,是我理解错了,现在我也糊涂了,要不这样,先直接用,出了问题再说。
要不再试试这个“小小调度器”
https://www.amobbs.com/thread-5702323-1-1.html

出25入12汤圆

发表于 2019-7-29 19:51:45 | 显示全部楼层
pipilee 发表于 2019-7-29 15:37
不是调用同一个函数啊。是在两个task中调用不同的函数,BL51会不会认为两个task中的函数没有调用关系,然 ...

不要特殊处理, 你编译的时候会选  rtx51-tiny 选项 这样编译器就知道你用了这个操作系统,肯定会考虑这个问题的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 18:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表