微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MC68K的C编译器实现μC/OS-II向MC68K移值解析方案

MC68K的C编译器实现μC/OS-II向MC68K移值解析方案

时间:06-19 来源:互联网 点击:

虑到了这一点,当调用 OS_ENTER_CRITICAL()或 OS_EXIT_CRITICAL()函数更加了A7寄存器后,使用A7的地址寄存器间接寻址也会做出相应的调整,保证仍然能够得到函数调用时传递的变量。每出现一个OS_ENTER_CRITICAL(),接下来的A7寄存器间接寻址的偏移量就会加2;每出现一个OS_EXIT_CRITICAL (),接下来的A7寄存器间接寻址的偏移量就会减2。但是问题却依然存在,对OSSemPend()的调用会导致地址错误,这应该是一个更深层次的错误。

这个问题的解决方法是:定义一个局部变量,迫使编译器生成LINK指令,构造内部参数寻址指针A6,这样调用OS_ENTER_CRITICAL()或OS_EXIT_CRITICAL()时,更动的只是A7,而对参数寻址用的是A6,不受影响。

如果强迫编译器在调用函数时都加上LINK和UNLINK指令也可以解决这个问题,但是又会面临最先提到的编译器的优化选项问题。可以看出,编译器的特性对移植μC/OS-II是非常重要的,并且往往这些特性是相互制约的。

在移植和运行μC/OS-II的过程中,也许还会有新的问题出现,遇到问题时只要仔细分析,分析堆栈的使用、中断的影响,分析编译生成的代码,就可以实现μC/OS-II的稳定可靠运行.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top