历史上的今天
今天是:2025年04月24日(星期四)
2019年04月24日 | UCOSIII存储管理
2019-04-24 来源:eefocus
1、UCOSIII存储管理
1.1、存储管理
作为一个RTOS操作系统,内存管理是必备的系统模块,因此UCOSIII也就内存管理能力。通常应用程序可以调用ANSI C编译器的malloc()和free()函数来动态的分配和释放内存,但是在嵌入式事实操作系统中最好不要这么做,多次这样的操作会把原来很大的一块连续存储区域逐渐地分割成许多非常小并且彼此不相邻的存储区域,这就是存储碎片。
UCOSIII中提供了一种替代malloc()和free()函数的方法,UCOSIII中将存储空间分成区和块,每个存储区有数量不等大小相同的存储块,在一个系统中可以有多个存储区。
一般存储区是固定的,在程序中可以用数组来表示一个存储区,比如u8 buffer[20][10],就表示一个拥有20个存储块,每个存储块10个字节的存储区。

1.2、存储控制块,存储区创建:
UCOSIII中存储控制块来表示存储区,存储控制块为OS_MEM,结构体OS_MEM如下。
struct os_mem {
OS_OBJ_TYPE Type; //类型必须为OS_OBJ_TYPE_MEM
void *AddrPtr; //指向存储区起始地址
CPU_CHAR *NamePtr;//指向存储区名字
void *FreeListPtr; //指向存储区存储块
OS_MEM_SIZE BlkSize; //存储区中的存储块大小,单位字节
OS_MEM_QTY NbrMax; //存储区中总的存储块数
OS_MEM_QTY NbrFree;//存储区中空闲的存储块数
#if OS_CFG_DBG_EN > 0u
OS_MEM *DbgPrevPtr;
OS_MEM *DbgNextPtr;
#endif
};
创建好的存储区如下图

2、存储管理相关API函数。源码在os_mem.c里

2.1 创建存储区使用函数OSMemCreate ();
void OSMemCreate (OS_MEM *p_mem,//指向存储区控制块地址
CPU_CHAR *p_name,//存储区名字
void *p_addr,//村春去所有存储空间基地址
OS_MEM_QTY n_blks,//存储区中存储块个数
OS_MEM_SIZE blk_size,//存储块大小
OS_ERR *p_err)
2.2 内存申请
void *OSMemGet (OS_MEM *p_mem,//要使用的存储区
OS_ERR *p_err)//返回错误码
2.3 内存释放
void OSMemPut (OS_MEM *p_mem,//指向存储区控制块
void *p_blk,//指向要归还的存储块
OS_ERR *p_err)
史海拾趣
|
今天帮公司筛选简历,感受颇多!我所在的是一家大型企业。从收到的简历数量可以看出来 1200+份简历,从中选出150+份进行笔试。 比例:8选1 机缘凑巧去帮老总们筛选简历,感受颇多。 觉得有必要跟还在找工作的师弟师妹们说说一些需要注 ...… 查看全部问答> |
|
我是第一次作这方面的东西: 我感觉:首先要判断次外设的存在(包括他的插入于拔除) 向外设发送控制命令(包括向他提供数据)。 不知道思路是不是有问题,请各位给个思路。 … 查看全部问答> |
|
8MB SPI FlashIC卡读卡控制芯片和卡座由于成本控制原因,199元销售的板子里不包含上述模块,对于此消息发布较晚,给部分网友造成了误解,我们深表歉意,希望大家能够继续给我们指正,谢谢!… 查看全部问答> |
|
C5000音频电容触摸套件套件具体指标如下:MP3 Encode & DecodeSD Card File SystemUSB Mass Storage ClassOLED, CodecUART client interface可使用该套件配合launchpad制作音乐播放器:MP3 PlayerVoice RecorderFire Alarm – MSP430 detects tem ...… 查看全部问答> |
|
MSP430F149的定时器A的连续计数模式的CCR0的作用?增计数模式是从0增加到CCR0就复位,增减计数模式是从0增加到CCR0,在减到0。可是连续计数模式呢?CCR0的作用?… 查看全部问答> |
|
大学堂新课上线:《 CC1120 Sub1G 开发套件动手实践》 大学堂有新课程上线啦! 《 CC1120 Sub1G 开发套件动手实践》:https://www.eeworld.com.cn/training/2014/wuxian_0117/382.html 该视频系列基于芯威科技CC1120开发套件,演示了如何使用SmartRF控制软件实现简单的数据包收发,如何理解和 ...… 查看全部问答> |
|
本帖最后由 人民币的幻想 于 2015-11-24 10:36 编辑 视频里演示测量心率时,使用手腕部分更能快速得到准确值。因此,后期考虑将心率做成手表形式。 … 查看全部问答> |




