以前写单片机程序,都是跑裸机,最近想学习uCOS-II系统,今天看了很多资料,结合前辈们给的一份工程源码,在NXP的LPC2378芯片也算成功移植了uCOS-II系统并创建了一个LED闪烁的工程,说实话,过程还是不怎么顺利的,先贴出我遇到的问题,希望各路高手能帮忙指点一二,非常感谢!!
1、很多案例里,工程都包含了uC-LIB文件夹,我在移植uCOS-II系统创建工程时,并没有添加这个文件夹,程序还是跑起来了,请问这个文件夹具体有何作用?到底需要不需要?
2、编译时提出缺少app_cfg.h、cpu_def.h这连个文件,但是看了里面的程序,我不太清楚这个两个文件应该归属到哪个文件夹中比较合适,虽说可以随便放,只要将路径设置好就没有问题,但是我觉得还是放在它们本应该放的问价夹中比较合适。
3、第一次创建工程,我本想先不烧到硬件中,想通过keil仿真看IO口的状态变化,但是程序编译成功后,仿真没有出现预期的结果,通过F11单步调试,发现在运行系统初始化函数时,程序死了,具体死的位置是OSInit()----OS_InitTCBList()----OS_MemClr (INT8U *pdest, INT16U size)
void OS_MemClr (INT8U *pdest, INT16U size)
{
while (size > 0) {
*pdest++ = (INT8U)0;
size--;
}
}
我想问,难道uCOS-II系统不支持仿真?
4、在创建闪烁LED任务时,起初我只初始化了GPIO口( GPIO_Init(); VIC_Init(); Tmr_TickInit();),发现灯不闪,后来参考前辈的程序,增加了对锁相环PLL和存储器加速模块的初始化(PLL_Init(); MAM_Init(); GPIO_Init(); VIC_Init(); Tmr_TickInit();),灯闪烁了。我不太理解,为何一定要初始化PLL呢?PLL只是改变CPU的工作频率而已啊,不配置应该也可以啊,至于为什么要配置MAM模块我就真的不清楚了,以前我写裸机程序的时候都不配置这个的。
|