2010
当用户为自己的处理器做完uCOS-II的移植后,下面就应该的验证移植的OS是否可以正常工作。首先,不加任何应用代码来测试移植好的OS,也就是说,应该首先测试内核自身的运行状况。这样代码即不复杂,又可以知道是否则OS移植问题。
下面是需要移植的步骤:
①. 确保C编译器、汇编编译器及链接器正常工作;
②. 验证OSTaskStkInit()和OSStartHighRdy()函数;
③. 验证OSCtxSw()函数;
④. 验证OSIntCtxSw()和OSTickISR()函数。
1. 最小的TEST代码:
int main(void)
{OSInit();
OSStart();
}如果编译没有问题,说明基本移植通过,下面就可以进行真正的测试工作了。
2. 验证OSTaskStkInit()和OSStartHighRdy()函数:
修改OS_CFG.H文件,设置OS_TASK_STAT_EN 为0,以禁止统计任务。因为没有添加应用任何,所以唯一的任务是OS的空闲任务:OS_TaskIdle()。如果能在OS_TaskIdle()任务的循环中运行,且在无限循环中已经执行几次,那么说明这一步验证成功。
3. 验证OSCtxSw()函数:
这一步比较容易,只要添加一个应用程序,并不断切换到空闲任务。并在应用程序中添加OSTimeDly(1),如下:
void TestTask(void *pdata)
{
pdata = pdata;
while(1)
{
OSTimeDly(1);
}
}
如果OSCtxSw()并没有将用户带入OSTimeDly(),则应当查明原因,纠正OSCtxSw()函数的错误。
4. 验证OSIntCtxSw()和OSTickISR()函数:
建议单独运行ISR程序,而不调用OSIntExit()。
总结:
如果以上几步均也通过,在说明OS移植通过,可以编写应用程序代码了。以上测试是需要硬件平台的,并不是利用软件模拟的,所以要先保证硬件没有问题。为了方便观察测试的结果,可以在代码中加入个LED的开关代码,通过观察LED的状态获知OS是运行状态;当然如果你用的软件平台和硬件支持单步调试的话,完全可以不用添加LED,也很方便的知道运行结果。
联系客服