2020-01-12 17:24发布
lcw_swust 发表于 2019-7-29 11:46 虽然不了解RTX51 Tiny,但是也遇到过主函数与中断同时调用一个函数的情况,会出现问题, 主要因为编译器用 ...
最多设置5个标签!
主要因为编译器用全局变量代替局部变量。
此时要用到 reentrant ,将函数变成可重入,使局部变量放入堆栈中,两个地方同时调用也不会干扰。
(如果函数中用到了全局变量仍要小心)
如:
int fun(char a) reentrant
{
}
如果要避免两个地方同时调用一个函数,也可以加一个标志用于等待,似乎可以用信号量还是啥?我也不太清楚了。
不是调用同一个函数啊。是在两个task中调用不同的函数,BL51会不会认为两个task中的函数没有调用关系,然后把他们的局部变量进行overlay。
我的疑惑是哪些情况下BL51进行overlay?我的理解是只要函数之间没有直接或间接调用BL51就可以overlay,不知道对不对。
一周热门 更多>