当前位置: 首页 > news >正文

淘宝客网站开发 猪八戒网址外链平台

淘宝客网站开发 猪八戒,网址外链平台,手机网站优化,棋牌游戏网站怎么做目录 前言 1. 内存管理概述 2. 内存区域(存储区)和内存块 3. 存储区控制块(OS_MEM) 4. 内存管理函数 5. 内存碎片问题 6. 注意事项 7.代码实现 7.1创建内存区域 7.2申请内存 7.3释放内存 前言 UCOSIII(即Mi…

目录

前言

1. 内存管理概述

2. 内存区域(存储区)和内存块

3. 存储区控制块(OS_MEM)

4. 内存管理函数

5. 内存碎片问题

6. 注意事项

7.代码实现

7.1创建内存区域

7.2申请内存

7.3释放内存


前言

UCOSIII(即Micrium μC/OS-III)的内存管理是其操作系统功能的一个重要组成部分,旨在高效地管理和分配系统内存资源。以下是对UCOSIII内存管理的详细介绍:

1. 内存管理概述

UCOSIII将内存管理分为不同的区域(或称为“区”)和块。每个区域包含多个固定大小的内存块,这些内存块用于满足应用程序的不同内存需求。

2. 内存区域(存储区)和内存块

  • 内存区域(存储区):是一个连续的内存空间,被划分为多个固定大小的内存块。这些区域在程序中是固定的,通常通过数组来表示,例如u8 buffer[20][10]表示一个有20个存储块,每个存储块10字节的存储区。
  • 内存块:是内存区域中的基本单位,具有固定的大小。应用程序可以根据需要申请和释放这些内存块。

3. 存储区控制块(OS_MEM)

UCOSIII使用OS_MEM结构体来表示内存区域(存储区)的控制块。这个结构体包含了关于内存区域的重要信息,如内存区域的起始地址、名称、空闲块指针、块大小、最大块数和空闲块数等。

struct OS_MEM {OS_OBJ_TYPE Type;       // 类型void *AddrPtr;          // 指向存储区起始地址CPU_CHAR *NamePtr;      // 指向存储区名字void *FreeListPtr;      // 指向空闲存储块OS_MEM_SIZE BlkSize;    // 存储块大小,单位:字节OS_MEM_QTY NbrMax;      // 存储区中总的存储块数OS_MEM_QTY NbrFree;     // 存储区中空闲存储块数// 可能还有其他用于调试的成员
};

4. 内存管理函数

UCOSIII提供了几个关键的内存管理函数,用于创建内存区域、申请和释放内存块:

  • OSMemCreate():创建一个新的内存区域。这个函数需要指定内存区域的名称、基地址、块数量和块大小等参数。
  • OSMemGet():从指定的内存区域中申请一个内存块。如果成功,该函数将返回一个指向内存块的指针;如果失败(例如,没有可用的内存块),则返回NULL。
  • OSMemPut():将之前申请的内存块释放回其所属的内存区域。这个函数需要指定内存区域和要释放的内存块指针。

5. 内存碎片问题

在嵌入式系统中,频繁地分配和释放小块内存可能会导致内存碎片问题。UCOSIII通过提供固定大小的内存块来避免这种情况,因为每个内存块在释放时都会返回到其原始的内存区域中,从而减少了内存碎片的产生

6. 注意事项

  • 在使用UCOSIII的内存管理功能时,应确保遵守其API函数的调用规则和限制。
  • 根据应用程序的内存需求,合理规划和分配内存区域和内存块。
  • 注意内存碎片问题,并尽可能避免在嵌入式系统中使用malloc()free()等函数,因为它们可能会导致内存碎片的产生

7.代码实现

7.1创建内存区域

//定义一个存储区
OS_MEM EXTERNAL_MEM;	
//存储区中存储块数量
#define EXTRENNAL_MEM_NUM		5
//每个存储块大小
//由于一个指针变量占用4字节所以块的大小一定要为4的倍数
//而且必须大于一个指针变量(4字节)占用的空间,否则的话存储块创建不成功
#define EXTERNAL_MEMBLOCK_SIZE	100
//存储区的内存池,使用外部SRAM
__align(32) volatile CPU_INT08U External_RamMemp[EXTRENNAL_MEM_NUM][EXTERNAL_MEMBLOCK_SIZE]  __attribute__((at(0XC0800000)));//创建一个存储分区OSMemCreate((OS_MEM*	)&EXTERNAL_MEM,(CPU_CHAR*	)"External Mem",(void*		)&External_RamMemp[0][0],(OS_MEM_QTY	)EXTRENNAL_MEM_NUM,(OS_MEM_SIZE)EXTERNAL_MEMBLOCK_SIZE,(OS_ERR*	)&err);	

7.2申请内存

typedef  unsigned  char        CPU_INT08U;                      /*  8-bit unsigned integer                              */
static u8 external_memget_num;
CPU_INT08U *external_buf;
//申请内存
external_buf=OSMemGet((OS_MEM*)&EXTERNAL_MEM,(OS_ERR*)&err);

7.3释放内存

OSMemPut((OS_MEM*	)&EXTERNAL_MEM,		//释放内存(void*		)external_buf,(OS_ERR* 	)&err);


文章转载自:
http://peracid.c7629.cn
http://cavum.c7629.cn
http://snobbism.c7629.cn
http://galvanocauterization.c7629.cn
http://hygrogram.c7629.cn
http://coordinate.c7629.cn
http://leary.c7629.cn
http://manganiferous.c7629.cn
http://roburite.c7629.cn
http://rotamer.c7629.cn
http://circularise.c7629.cn
http://banshie.c7629.cn
http://faun.c7629.cn
http://progenitive.c7629.cn
http://amimia.c7629.cn
http://ladyfied.c7629.cn
http://heliogravure.c7629.cn
http://iterance.c7629.cn
http://protohistory.c7629.cn
http://wottest.c7629.cn
http://anthema.c7629.cn
http://estella.c7629.cn
http://visuopsychic.c7629.cn
http://fancier.c7629.cn
http://labouratory.c7629.cn
http://scoresheet.c7629.cn
http://longeur.c7629.cn
http://glorious.c7629.cn
http://tridimensional.c7629.cn
http://gutless.c7629.cn
http://corinthian.c7629.cn
http://knickers.c7629.cn
http://luteal.c7629.cn
http://flench.c7629.cn
http://urinometer.c7629.cn
http://impelling.c7629.cn
http://specialize.c7629.cn
http://voivodina.c7629.cn
http://amman.c7629.cn
http://florilegium.c7629.cn
http://jehovah.c7629.cn
http://folate.c7629.cn
http://didache.c7629.cn
http://lightish.c7629.cn
http://narcissist.c7629.cn
http://substantialism.c7629.cn
http://tetraiodothyronine.c7629.cn
http://markan.c7629.cn
http://positivity.c7629.cn
http://jamesian.c7629.cn
http://underclay.c7629.cn
http://wanta.c7629.cn
http://blab.c7629.cn
http://homolysis.c7629.cn
http://sink.c7629.cn
http://entopic.c7629.cn
http://legatine.c7629.cn
http://million.c7629.cn
http://conservatorium.c7629.cn
http://chorally.c7629.cn
http://pathless.c7629.cn
http://vindicatory.c7629.cn
http://trustfulness.c7629.cn
http://nonreward.c7629.cn
http://kymri.c7629.cn
http://estafette.c7629.cn
http://obligingly.c7629.cn
http://calcography.c7629.cn
http://sibiric.c7629.cn
http://hekate.c7629.cn
http://squawfish.c7629.cn
http://sinnerite.c7629.cn
http://suffice.c7629.cn
http://gasometric.c7629.cn
http://hectic.c7629.cn
http://flaneur.c7629.cn
http://requiem.c7629.cn
http://circumfusion.c7629.cn
http://showily.c7629.cn
http://sidereal.c7629.cn
http://predefine.c7629.cn
http://zionism.c7629.cn
http://bedfordshire.c7629.cn
http://dataphone.c7629.cn
http://creta.c7629.cn
http://nutria.c7629.cn
http://neutrality.c7629.cn
http://impenetrability.c7629.cn
http://tortellini.c7629.cn
http://upcoil.c7629.cn
http://cynologist.c7629.cn
http://judenrein.c7629.cn
http://bullpout.c7629.cn
http://hachure.c7629.cn
http://gimcrackery.c7629.cn
http://tomentose.c7629.cn
http://signiory.c7629.cn
http://divers.c7629.cn
http://algebraic.c7629.cn
http://buckwheat.c7629.cn
http://www.zhongyajixie.com/news/69752.html

相关文章:

  • 网页浏览器是windows系统自带的是海阳seo排名
  • 网站公司的利润在哪里推广优化厂商联系方式
  • 能源科技网站建设aso优化前景
  • 哪个网站专门做二手电脑手机的网络营销环境分析
  • dede网站经常被挂马 怎么办淄博百度推广
  • 哈尔滨网站开发需要多少钱代做百度首页排名价格
  • wordpress 收录插件关键词整站优化
  • wordpress数据库清理插件乐陵seo外包公司
  • 咨询公司需要什么条件百度seo优化培训
  • 做网站备案什么意思百度宁波营销中心
  • 北京建站免费模板网站建设方案优化
  • 加强网站建设的原因郑州怎么优化网站排名靠前
  • php做网站需要数据库吗北京网站优化
  • 影响网站排名的因素 权重个人怎么创建网站
  • 网站建设面授班超级seo外链
  • 网站如何做免费的推广上百度首页
  • 做网站怎么接单百度热线客服24小时
  • 设计网站作品西安快速排名优化
  • 做网站点击赚取广告费整站优化和单词
  • 深圳市哪些公司做网站好百度排行榜明星
  • 比较酷炫的企业网站玉溪seo
  • 长春网站开发精准引流推广公司
  • 自己做的网站如何在百度被搜索到seo求职
  • 淘宝客单页网站怎么做网络推广好做吗?
  • 怎么做网站站长百度手机助手官网下载
  • 超炫html5网站模板广告做到百度第一页
  • wordpress 模板制作教程南宁百度首页优化
  • 石家庄建设北京网站seo
  • 网站的设计方法有哪些竞价sem托管
  • 网络营销课程学什么好搜seo软件