最近在做ucos-ii移植到51单片机上面。跟着网上的教程做了一部分,现在有一点问题不明白,希望大神能够提供帮助。
如果要移植ucos那么必须将所有函数都设计成可重入的。keil c51使用模拟堆栈来保证可重入。我使用的是Large模式,模拟堆栈的指针为?C_XBP。
我的疑问有以下几个:
1、是不是每个可重入函数都有一个模拟堆栈,还是所有的可重入函数共享一个模拟堆栈。
2、如果是每个可重入函数都有一个模拟对战的话,因为只有一个指针 ?C_XBP, 当执行不同的函数的时候,如何切换模拟堆栈。
3、如果是每个可重入函数都有一个模拟对战的话,假如函数FuncA和FuncB都是可重入的函数,那么FunC调用 FuncB时,FuncB的参数是保存到哪里了?是FunC的模拟对战还是FuncB的模拟堆栈?
|