首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

uC/OS-II成功移植到S12DG128

楼主,你好!
我想和你交流一下“关于uC/OS-II成功移植到S12DG128”的实现上的问题,我的QQ:345170803;手机:13807780854
坚持和成功-我所能选择的!
kangshiyin[at]gmail[dot]com
学习中...
你好, saserking 楼主,你上次是不是加了我的QQ?
坚持和成功-我所能选择的!
一直都觉着移植操作系统是很有技术含量,很神秘的事
想跟楼主学习下,不知道怎么跟你联系啊.我的QQ是51868094

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编辑过]

楼主,能否指点一下。我也想网dg128上移植,可是感觉很难~
xuexi

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

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

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