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

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

ID:38236587

大小:297.00 KB

页数:7页

时间:2019-06-07

UCOS-II在51单片机上的移植_第1页
UCOS-II在51单片机上的移植_第2页
UCOS-II在51单片机上的移植_第3页
UCOS-II在51单片机上的移植_第4页
UCOS-II在51单片机上的移植_第5页
资源描述:

《UCOS-II在51单片机上的移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、UCOS-II在51单片机上的移植做操作系统的移植首先明白什么是移植,操作系统是一种鱼硬件(处理器)相关的软件,根据某一种处理器来设计的操作系统通常不能运行在那其他处理器。所谓的移植是指修改操作系统,然后加载到一个处理器上。本文只讲解步骤,至于理论知识,需要大家自己学习。步骤:1,在UCOS-II的官网上下载,操作系统。2,在网上找到或者自己建三四个文件:OS_CPU_A.ASSMOS_CPU.HOS_CPU_C.COS_CFG.H以上文件需要修改3,移植源码的编写和修改vOS_CPU.H1)定义与编译器有

2、关的数据类型typedefunsignedcharBOOLEAN;/*不能使用bit定义,结构中无法使用*/typedefunsignedcharINT8U;/*无符号8位数*/typedefunsignedcharINT8S;/*有符号8位数*/typedefunsignedintINT16U;/*无符号16位数*/typedefsignedintINT16S;/*有符号16位数*/typedefunsignedlongINT32U;/*无符号32位数*/typedefsignedlongINT32S;/

3、*有符号32位数*/typedeffloatFP32;/*单精度浮点数*/typedefdoubleFP64;/*双精度浮点数*/typedefunsignedcharOS_STK;/*定义堆栈入口宽度为8位*/typedefunsignedcharOS_CPU_SR;/*定义CPU状态字的宽度为8位*/2)定义堆栈增长方向#defineOS_STK_GROWTH0/*MCS-51堆栈从下往上增长,1=向下,0=向上*/1)定义任务级的任务切换宏#defineOS_TASK_SW()OSCtxSw()/*任

4、务级的任务切换宏*/2)定义临界段宏:#defineOS_ENTER_CRITICAL()EA=0#defineOS_EXIT_CRITICAL()EA=1vOS_CPU_C.Cl① 初始化任务栈void*OSTaskStkInit(void(*task)(void*pd),void*ppdata,void*ptos,INT16Uopt)REENTRANT{OS_STK*stk;ppdata=ppdata;//patadata为52文件关键字opt=opt;/*opt没被用到,保留此语句防止警告产生*/st

5、k=(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++=0x0

6、0;/*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)(pt

7、os+MAX_STK_SIZE)&0xFF;/*?C_XBP仿真堆栈低8位*/return((void*)ptos);/*返回最低地址,这里不用弹出栈顶指针是为了提高计算效率*/}① 初始化定时器voidInitTimer0(void)REENTRANT{TMOD=TMOD&0xF0;//屏蔽高四位TMOD=TMOD

8、0x01;/*模式1(16位定时器),仅受TR0控制*/TH0=TIMER_20MS_TH0;TL0=TIMER_20MS_TL0;EA=0;/*EA和ET0,51上电缺省值为0,EA将在OS

9、StartHighRdy()中打开*/ET0=0;/*满足在OSStart()前不产生时钟中断的要求,系统启动后第一时间开定时器T0中断*/TR0=1;}vOS_CPU_A.ASM编写4个函数OSStartHighRdy()OSCtxSw()OSIntCtxSw()OSTickISR()vOS_CFG.H主要为参数和使能的宏定义#defineMAX_STK_SIZE1024/*最大堆栈大小为1k*/#define

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。