原创 C51中的reentrant(转帖)

2009-2-9 08:14 4686 0 分类: MCU/ 嵌入式
关于reentrant的使用keil的官方论坛上有详细的讨论.
Andy Neil(官方工程师)建议

"Are you sure that you really need to make everything reentrant?...
A reading of the Keil app notes & knowledgebase articles on this subject 
showed that it was not necessary. "

由于每一次调用被reentrant声明的函数都要把函数的参数和内部变量压栈,所以
很容易使堆栈区溢出,S52只有256Bytes的data段,一个简单的函数如果有一个参数
三个内部变量,则需要压栈4字节以上,这还不包括函数调用堆栈.

reentrant其实并不是适合低端的单片机,keil论坛上有人说对于那些有KB以上RAM的
单片机reentrant才适合.

BUTCHER提到的问题我一直很奇怪自己怎么没有出现,仔细检查代码才发现我所有的
函数都在一开始添加了EA=0;也就是屏蔽了中断,这样就绝对没有函数重载的问题!
不过这个方法也许对我们很适合,我的函数段基本都很小,而且定时器查询速度很高,
基本不需要外部中断,所以可以适当优化代码避免中断嵌套,就不会出现同一时刻
有一个函数被二次重载了.

对于BUTCHER的问题,Andy有类似的解答,"I can redo the calling tree by hand in
 order to avoid using reentrancy, but it will take some time checking and 
profiling the code." 

文章评论0条评论)

登录后参与讨论
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
广告
EE直播间
更多
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /6 下一条