网站大量收购闲置独家精品文档,联系QQ:2885784924

UCOS-II在51单片机上的移植..doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UCOS-II在51单片机上的移植.

UCOS-II在51单片机上的移植 做操作系统的移植首先明白什么是移植,操作系统是一种鱼硬件(处理器)相关的软件,根据某一种处理器来设计的操作系统通常不能运行在那其他处理器。所谓的移植是指修改操作系统,然后加载到一个处理器上。本文只讲解步骤,至于理论知识,需要大家自己学习。 步骤: 在UCOS-II的官网上下载,操作系统。 在网上找到或者自己建三四个文件: OS_CPU_A.ASSM OS_CPU.H OS_CPU_C.C OS_CFG.H 以上文件需要修改 3,移植源码的编写和修改 OS_CPU.H 定义与编译器有关的数据类型 typedef unsigned char BOOLEAN; /* 不能使用bit定义,结构 */ typedef unsigned char INT8U; /* 无符号8位数 */ typedef unsigned char INT8S; /* 有符号8位数 */ typedef unsigned int INT16U; /* 无符号16位数 */ typedef signed int INT16S; /* 有符号16位数 */ typedef unsigned long INT32U; /* 无符号32位数 * typedef signed long INT32S; /* 有符号32位数 */ typedef float FP32; /* 单精度浮点数 */ typedef double FP64; /* 双精度浮点数 */ typedef unsigned char OS_STK; /* 定义堆栈入口宽度为8位 */ typedef unsigned char OS_CPU_SR; /* 定义CPU状态字的宽度为8位 */ #define OS_TASK_SW() OSCtxSw() /* 任务级的任务切换宏 */ 定义临界段宏: #define OS_ENTER_CRITICAL() EA=0 #define OS_EXIT_CRITICAL() EA=1 OS_CPU_C.C? 初始化任务栈 void *OSTaskStkInit(void(*task)(void *pd), void *ppdata, void *ptos, INT16U opt) REENTRANT { OS_STK *stk; ppdata=ppdata; //pata data 为52文件关键字 opt =opt; /* opt没被用到,保留此语句防止警告产生 */ stk =(OS_STK *)ptos; /* 任务堆栈最低有效地址 */ *stk++=15; /* 任务堆栈长度 */ *stk++=(INT16U)task 0xFF; /* 任务代码地址低8位 */ *stk++=(INT16U)task 8; /* 任务代码地址高8位 */ /* 处理器是按特定的顺序将寄存器存入堆栈的,所以用户在将寄存器存入堆栈的时候也要依照这一顺序 */ *stk++=0x00; /* PSW */ *stk++=0x0A; /* ACC */ *stk++=0x0B; /* B */ *stk++=0x00; /* DPL */ *stk++=0x00; /* DPH */ *stk++=0x00; /* R0 */ *stk++=0x01; /* R1 */ *stk++=0x02; /* R2 */ *stk++=0x03; /* R3 */ *stk++=0x04; /* R4 */ *stk++=0x05; /* R5 */ *stk++=0x06; /* R6 */ *stk++=0x07; /* R7 */ /* 不用保存SP,任务切换时根据用户堆栈长度计算得出 */ *stk++=(INT16U)(ptos+MAX_STK_SIZE) 8; /* ?C_XBP 仿真堆栈指针高8位 */ *stk++=(INT16U)(ptos+MAX_STK_SIZE)

文档评论(0)

xznh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档