Board logo

标题: uC/OS-II成功移植到S12DG128 [打印本页]

作者: iwillbeback008    时间: 2007-5-30 12:53

楼主,你好!
我想和你交流一下“关于uC/OS-II成功移植到S12DG128”的实现上的问题,我的QQ:345170803;手机:13807780854
作者: saserking    时间: 2007-5-30 19:38

kangshiyin[at]gmail[dot]com
作者: huifreescale    时间: 2007-5-31 10:30

学习中...
作者: iwillbeback008    时间: 2007-6-1 12:45

你好, saserking 楼主,你上次是不是加了我的QQ?
作者: guocai_yao    时间: 2007-6-10 08:35

一直都觉着移植操作系统是很有技术含量,很神秘的事
作者: xiang1912    时间: 2007-6-12 16:57

想跟楼主学习下,不知道怎么跟你联系啊.我的QQ是51868094
作者: saserking    时间: 2007-6-13 12:16     标题: uC/OS-II成功移植到S12DG128

代码主要基于uC/OS网站的S12NE64移植范例,同时参考了邵贝贝老师的移植方案

NE64的移植范例是用ECT7产生节拍中断,考虑到计数器资源有限,改用邵老师的方案,使用RTI中断
任务栈初始化对CCR寄存器赋值0x00而不是NE64范例的0xc0,以便允许XIRQ和STOP指令

两个方案比较,任务切换的过程没有区别,只在创建任务的时候,初始化任务的PPage寄存器方法有点不同。邵的方案对PPAGE和任务入口地址都使用绝对地址,不太符合高级语言的习惯,另外必须创建额外的任务变量初始化PPAGE,由pdata指针传递。实际上,正如NE64的范例所示,任务函数指针在banked模式下默认为__far类型,3字节,其中已经包含PPAGE信息,不必另外指定

OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)
{
......
*--wstk = (INT16U)(((INT32U)task) >> 8); /* Return address. Format: PCHCLPAGE (cut out PPage) */
......
*--bstk = (INT8U)task; /* Save the PPAGE register */
......
}

因此使用NE64范例的方案,任务入口函数可以在任意位置创建,只要使用__far方式访问即可

另外,不明白NE64范例中上述函数的注释6为什么说task入口函数必须放在NON-PAGED空间(见下文)
测试时,link自动分配在0x388000地址运行正常,反而是yong用#pragma CODE_SEG __NEAR_SEG NON_BANKED修饰task入口函数,系统不能运行
估计是移植时没有更新注释

* 6) All your tasks are assumed to be in NON-PAGED memory. However, the tasks can call
* functions in PAGED memory and if a context switch occurs, the proper page will be
* saved/restored by uC/OS-II. Page #0 is stored onto the task's stack as a 'dummy'
* value.

[此贴子已经被作者于2007-6-13 12:16:40编辑过]


作者: 大大的天空    时间: 2008-8-8 15:49

楼主,能否指点一下。我也想网dg128上移植,可是感觉很难~
作者: pjcucumber    时间: 2008-9-8 10:27

xuexi
作者: worldcs    时间: 2008-9-12 21:35

楼主好,小弟最近也在移植ucos到DG128上

遇到一些问题想请教一下,望不吝指教,多谢!QQ:279 219 649 期待!!


作者: huamao    时间: 2009-11-14 14:51

UCOSII的资料看了不少,感觉自己还没有入门,请指教




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0