RTOS uCOS-II 原理及应用 -- 6

RTOS uCOS-II 原理及应用 -- 6

ID:42486883

大小:214.00 KB

页数:18页

时间:2019-09-16

RTOS uCOS-II 原理及应用 -- 6_第1页
RTOS uCOS-II 原理及应用 -- 6_第2页
RTOS uCOS-II 原理及应用 -- 6_第3页
RTOS uCOS-II 原理及应用 -- 6_第4页
RTOS uCOS-II 原理及应用 -- 6_第5页
资源描述:

《RTOS uCOS-II 原理及应用 -- 6》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、嵌入式实时操作系统μC/OS-II西安邮电学院----计算机系Tel:85383409(ZQL)Email:zql@xiyou.edu.cn10/4/20211西安邮电学院计算机系第6章内存的 动态分配10/4/20212西安邮电学院计算机系第6章目录1、内存控制块2、动态内存的管理10/4/20213西安邮电学院计算机系应用程序运行中有时需要临时用到一些内存资源,操作系统应能提供相应的“动态内存分配”管理功能(举例见下页)。uC/OS-II支持动态内存分配管理。本章主要内容:uC/OS-II动态内存管理方式;内存分区与内存控制

2、块;动态内存管理系统函数;10/4/20214西安邮电学院计算机系例如:消息队列应用中的“消息缓冲区”通常就是用“动态分配的存储块”实现。10/4/20215西安邮电学院计算机系第6章目录1、内存控制块2、动态内存的管理10/4/20216西安邮电学院计算机系6.1内存控制块uC/OS-II中将连续的大块内存按分区来管理,称之为“内存分区”。分区由若干个体积相等、类型一致的“内存块”组成。uC/OS-II系统配置文件(OS_CFG.H)中的OS_MEM_EN用于“使能/禁能”动态内存的功能支持。uC/OS-II使用“内存控制块”

3、(MCB)具体管理内存分区以及分区中的内存块,分区与MCB有“一对一”的关系。10/4/20217西安邮电学院计算机系6.1内存控制块ECM是一个下述的数据结构:typedefstruct{void*OSMemAddr;void*OSMemFreeList;INT32UOSMemBlkSize;INT32UOSMemNBlks;INT32UOSMemNFree;}OS_MEM;备注:OS_MEM是uC/OS-II的系统管理资源,对用户几乎透明;在使用中,用户不必对其直接操作,用户通过系统函数管理动态内存。10/4/20218西安

4、邮电学院计算机系6.1内存控制块内存中建立分区和内存块的方法:声明一个二位数组;使用系统函数直接创建动态分区即可;INT8UM_BLK[30][80];备注:准备建立一个含有30个动态存储块,每个存储块具有80个INT8U数据类型单元的内存分区。10/4/20219西安邮电学院计算机系第6章目录1、内存控制块2、动态内存的管理10/4/202110西安邮电学院计算机系6.2动态内存的管理用户通过使用uC/OS-II提供的系统函数来使用、管理动态内存:OSMemCreate()---创建动态内存分区;OSMemGet()---从指

5、定分区获得一个内存块;OSMemPut()---将内存块归还指定分区;10/4/202111西安邮电学院计算机系6.2动态内存的管理创建动态内存分区---OSMemCreate()在使用一个内存分区之前,首先要使用OSMemCreate()函数建立该分区;该系统函数的原型:OS_MEM*OSMemCreate(void*addr,//内存分区指针INT32Unblks,//分区中的内存块总数INT32Ublksize,//内存块大小INT8U*err//出错信息);备注:函数正常返回一个“内存分区控制块”指针;否则,返回一个NU

6、LL指针。10/4/202112西安邮电学院计算机系6.2动态内存的管理创建动态内存分区---OSMemCreate()举例:OS_MEM*CommTxBuf;//声明内存控制块指针INT8UCommTxPart[30][80];//声明内存控制块格式……voidmain(void){INT8U*err;OSInit();……;CommTxBuf=OSMemCreate(CommTxPart,30,80,err);……;OSStart();}10/4/202113西安邮电学院计算机系6.2动态内存的管理从指定分区获得一个内存块-

7、--OSMemGet()创建了内存分区之后,既可以使用OSMemGet()函数从指定分区获得一个内存块;该系统函数的原型:void*OSMemGet(OS_MEM*pmem,//内存分区控制块指针INT8U*err//出错信息);备注:函数正常返回一个“内存块”指针;否则,返回一个NULL指针。在使用申请到的内存块时,切勿越界。用完后要及时归还。10/4/202114西安邮电学院计算机系6.2动态内存的管理从指定分区获得一个内存块---OSMemGet()举例:OS_MEM*CommTxBuf;INT8UCommTxPart[3

8、0][80];INT8Uerr;INT8U*BlkPtr;voidmain(void){……;OSInit();……;CommTxBuf=OSMemCreate(CommTxPart,30,80,&err);……OSStart();}voidMyTask(voi

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

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

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