OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 移植ucos到lpc2214,遇到困难

共2条 1/1 1 跳转至

移植ucos到lpc2214,遇到困难

菜鸟
2008-08-20 22:06:52    评分

我用LPC2214设计,扩展了FLASH 39vf3201(4M,ZLG用的是1601),RAM ISSI102416ALL(4M,ZLG用的是PSRAM,8M),另外我没有扩展NAND FLASH。用H-JTAG,我可以找的ARM,FLASH,用ADS进行一般的程序仿真也没问题。我感觉硬件设计应该没问题了。

但是,我参照ZLG的例程进行了UCOS-II多任务移植。在SMART2200开发板上,UCOS的多任务程序(跑马灯、蜂鸣器)可以运行,但在我的板子上,只能运行TASK0(点亮一盏灯),而TASK1不能执行(熄灭灯)。我跟踪调试了一下,程序一直在TASK0里面兜。在OS_Sched()函数中,其中有个变量OSLockNesting总是值为6,if ((OSIntNesting == 0) && (OSLockNesting == 0)) { /* Sched. only if all ISRs done & not locked    */

y             = OSUnMapTbl[OSRdyGrp];          /* Get pointer to HPT ready to run              */
        OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
        if (OSPrioHighRdy != OSPrioCur) {              /* No Ctx Sw if current task is highest rdy     */
            OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
            OSCtxSwCtr++;                              /* Increment context switch counter             */
            OS_TASK_SW();                              /* Perform a context switch                     */
        }

由于OSLockNesting 不等于0,就不能进入任务切换。不知道是不是这样。但是这个例程在ZLG的SMART2200开发板是可以正常运行的。在我的板子上调试就不能正常工作。

我还发现OSTimeDly(OS_TICKS_PER_SEC)的问题。开发板执行这个函数延时1秒,但在我的板子上使用时,指示灯不是1秒亮1秒灭,而是飞快的闪烁。软件应该没问题,我感觉应该是此例程和我设计的板子,不匹配,但那里不对我说不清楚。TIMER0也初始化了,OSTimeTick()也调用了。只能怀疑是时间片的问题,但又不知道出在那里。

        void Timer0_Exception(void)
{
    T0IR = 0x01;
    VICVectAddr = 0;            //interrupt close 通知中断控制器中断结束
    OSTimeTick();
}

没办法,只能跟各位大虾求助了。先谢过!

我的EMAIL   :danieldhg@sohu.com  多交流。




关键词: 移植     lpc2214     遇到     困难    

菜鸟
2008-09-03 22:36:28    评分
2楼
没人回答嘛,唉

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]