- 杂志
 搜 索: 
 论坛 » ARM开发 » 移植ucos到lpc2214,遇到困难
广告招商
版主: l0p0c , twentyone , sunshine0606
 发表新贴 
 发表回复 
 移植ucos到lpc2214,遇到困难  发表于 2008-08-20 22:06:52 [您是本帖的第372位阅读者]     [1楼] 
呢称:danieldhg
加我为好友

我用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  多交流。


 
 RE: 移植ucos到lpc2214,遇到困难  发表于 2008-09-03 22:36:28 [2楼] 
呢称:danieldhg
加我为好友
没人回答嘛,唉
 
共2条 1/1 1   
   快速回复主题
  用户名 : 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容 :
 
EEPW元器件搜索  强力提供
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号