Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18468
  • 博文数量: 6
  • 博客积分: 210
  • 博客等级: 二等列兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-13 18:21
文章分类

全部博文(6)

文章存档

2011年(1)

2009年(5)

我的朋友
最近访客

分类:

2009-11-17 23:09:16

                             uC/OS 的移植测试

                      

    原创文章,希望喜欢的朋友给在下宣传一下,涨涨人气

shichaog

调试思路

  一般相对处理器内存而言操作系统都比较大,为了使原本就比较复杂的问题不更加难于解决,对移植的代码,首先不加任何应用代码,只测试内核自身的运行状况;如果产生问题就可确信为是移植的自身问题而不是应用程序的问题,解决内核代码问题后;剩下的任务就是给内核添加用户任务代码,调试并使之通过测试。而对uC/OS而言主要是验证OSTaskStkInit()OSStartHighRdy()OSIntCtxSw()OSTickISR()OSCtxSw()这几个函数。

确保C编译器、汇编编译器及链接器的正常工作

对于MCS-51处理器而言,我们用比较流行的集C编译器、汇编编译器及链接器于一身的Keil公司产品Keil uVision3 编译器,它是功能强大的集成开发环境(IDE),所以先要确保集成开发环境没有问题,具体可以自己先写一些简单的程序,测试一下,这一步完成之后,就要做一个最小的测试,如图一中的测试程序;

图一:测试程序

Fig1:testing program

因为程序员经常使用keil 编写和调试51系列单片机的应用程序,所以一般keil是不会有问题的。从图一的输出窗口信息可以看出没有错误,但是有14个警告,并且从截图中也可以看出有未调用的代码段,这是因为为了检验系统移植是否正确,注释掉了串口初始化和中断函数及创建任务函数等的缘故;对于单片机序而言,能通过编译并不意味着生成的目标代码就能按照用户期望在单片机上运行,必须注重输出窗口给的提示信息,尤其不要忽视警告信息,这部分的提示可能就是问题的症结所在,这里图一中的警告是因为没有调用工程中所有函数所导致的,不妨碍验证keil的正确性。

3验证OSTaskStkInit()OSStartHighRdy()函数

做完第一步工作后,接着就要使keil调试uc/os 的内核函数了,首先修改OS_CFG.H文件,设置OS_TASK_EN0,以禁止统计任务。因为上一步的操作中并未添加任何应用程序,所以唯一的任务就是空闲任务,可以使用单步执行来调试该函数,直到该函数运行到OS_TaskIdle()

Keil支持单步执行的调试机制,也支持多步调试执行,并在调试同时可以查看各个寄存器以及各变量的值,单步执行main()函数。跳过(调试菜单中的step over选项)OSInit();单步进入OSStart()函数。一直单步该函数调用OSStartHighRdy()(这里是OSStart()函数的最后一句),然后单步进入step into选项)OSStartHighRdy()。这时keil会切换到宏汇编语言模式下,因为OSStartHighRdy()是用汇编语言实现的(见图三),继续单步执行,同时观察堆栈内容及CPU寄存器内容的变化、SP指针的指向,检查是否出

错,如果正确,OSStartHighRdy()会将OSTaskStkInit()推入堆栈的CPU寄存器按相反顺序弹出。如果不正确,堆栈指针会出错,应校正OSTaskStkInit()函数。

图二:测试OSStart()函数

Fig2:test OSStart() function

图三:切换到汇编模式下的调试界面

Fig3: switch to the window of assembly mode

同样我们也可以借助硬件资源进行调试,具体做法是利用LED来指示程序运行到的地方,具体做法是先关闭LED,如果OSTaskStkInit()OSStartHighRdy()函数工作工作正常,再由OS_TaskIdle()函数点亮LED。实际上,因为LED的亮灭速度特别快,用户只会看到LED是一直亮着的。这时用示波器观察应该可以看到大约是50%占空比的闪烁。但是为了进行这样的测试,应临时修改OS_CFG.H中,需设置OS_TASK_STAT_EN0同时在OS_Init() OSStart()插入关LED(如图一中被注释掉的那句),最后还要在OS_CPU_C.C中修改OSTaskIdleHook()函数,修改后如下:

图四: 修改的OSTaskIdleHook()函数管理员在2009年8月13日编辑了该文章文章。

-->
阅读(810) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~