UCOS内存管理
STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问
SRAM的起始地址是0x20000000
UCOSII
//定义存储区
OS_MEM *DATA_MEM;
//存储区中存储块数量(可申请次数)
#define DATA_MEM_NUM 10
//每个存储块大小
#define DATA_MEMBLOCK_SIZE 128
//内存地址
__align(4) CPU_INT08U data_RamMemp[DATA_MEM_NUM][DATA_MEMBLOCK_SIZE] __attribute__((at(0x20001000)));
/*
OS_MEM *OSMemCreate (void *addr,
INT32U nblks,
INT32U blksize,
INT8U *perr);
申请:
void *OSMemGet (OS_MEM *pmem,
INT8U *perr);
释放:
INT8U OSMemPut (OS_MEM *pmem,
void *pblk);
*/
int main()
{
INT8U err;
DATA_MEM = OSMemCreate(data_RamMemp,
DATA_MEM_NUM,
DATA_MEMBLOCK_SIZE,
&err);
void *data = OSMemGet(DATA_MEM, &err);
if(data)
{
OSMemPut(DATA_MEM, data);
}
return 0;
}
UCOSIII
OS_MEM DATA_MEM;
#define DATA_MEM_NUM 5
#define DATA_MEMBLOCK_SIZE 64
__align(4) CPU_INT08U data_RamMemp[DATA_MEM_NUM][DATA_MEMBLOCK_SIZE] __attribute__((at(0x20002000)));
/*
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);
void *OSMemGet (OS_MEM *p_mem,
OS_ERR *p_err);
void OSMemPut (OS_MEM *p_mem,
void *p_blk,
OS_ERR *p_err);
*/
int main()
{
OS_ERR err;
OSMemCreate(&DATA_MEM,
"data mem"
data_RamMemp,
DATA_MEM_NUM,
DATA_MEMBLOCK_SIZE,
&err);
void *data = OSMemGet(&DATA_MEM, &err);
if(data)
{
OSMemPut(&DATA_MEM, data, &err);
}
return 0;
}
UCOS内存管理的更多相关文章
- ucos内存管理原理详解
应用程序中为了某种特殊需要,经常需要动态的分配内存,而操作系统的特质置一,就是能不能保证动态内存分配的时效性,也就是说分配时间是可确定的 Ucos提供内存分配功能,它将内存空间分为两级管理,将一块连续 ...
- UCOS 内存管理理解 创建任务
OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err) { ................... ...
- 2 时间管理和内存管理
时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的<嵌入式实时操作系统ucos-I ...
- .NET基础拾遗(1)类型语法基础和内存管理基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- PHP扩展-生命周期和内存管理
1. PHP源码结构 PHP的内核子系统有两个,ZE(Zend Engine)和PHP Core.ZE负责将PHP脚本解析成机器码(也成为token符)后,在进程空间执行这些机器码:ZE还负责内存管理 ...
- linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)
Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系 ...
- linux2.6 内存管理——概述
在紧接着相当长的篇幅中,都是围绕着Linux如何管理内存进行阐述,在内核中分配内存并不是一件非常容易的事情,因为在此过程中必须遵从内核特定的状态约束.linux内存管理建立在基本的分页机制基础上,在l ...
- Objective-C内存管理之引用计数
初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...
- Quartz2D内存管理
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #239619 } p.p2 ...
随机推荐
- service和Dao层有什么关系
Dao层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类 ...
- sqlserver表被锁了,解锁方法,删除锁的方法
-- 查询死锁select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) table ...
- [LeetCode] 87. Scramble String 爬行字符串
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...
- [LeetCode] 228. Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- [LeetCode] 801. Minimum Swaps To Make Sequences Increasing 最少交换使得序列递增
We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ...
- Git安装和使用(Windows)
Git介绍 分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具. 保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态:可以在该 ...
- 最新 北森java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.北森等10家互联网公司的校招Offer,因为某些自身原因最终选择了北森.6.7月主要是做系统复习.项目复盘.LeetCode ...
- 获取apk的Activity和Package
2.查看包名和activity adb logcat|grep -i activitymanager 获取当前界面的activity 1.adb shell dumpsys window window ...
- php_MVC实现步骤一
1.Match 基本实现 功能,比赛列表,球队信息 数据表初始化: 比赛列表: 球队一 比分 球队二 比赛时间 韩国 1:2 澳大利亚 15-01-31 17:00 从SQL思考,如何完成上面的查询: ...
- python zip函数(11)
一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...