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内存管理的更多相关文章

  1. ucos内存管理原理详解

    应用程序中为了某种特殊需要,经常需要动态的分配内存,而操作系统的特质置一,就是能不能保证动态内存分配的时效性,也就是说分配时间是可确定的 Ucos提供内存分配功能,它将内存空间分为两级管理,将一块连续 ...

  2. UCOS 内存管理理解 创建任务

    OS_MEM   *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err)   { ................... ...

  3. 2 时间管理和内存管理

    时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的<嵌入式实时操作系统ucos-I ...

  4. .NET基础拾遗(1)类型语法基础和内存管理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  5. PHP扩展-生命周期和内存管理

    1. PHP源码结构 PHP的内核子系统有两个,ZE(Zend Engine)和PHP Core.ZE负责将PHP脚本解析成机器码(也成为token符)后,在进程空间执行这些机器码:ZE还负责内存管理 ...

  6. linux2.6 内存管理——逻辑地址转换为线性地址(逻辑地址、线性地址、物理地址、虚拟地址)

    Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同.Linux运行在虚拟存储空间,并负责把系 ...

  7. linux2.6 内存管理——概述

    在紧接着相当长的篇幅中,都是围绕着Linux如何管理内存进行阐述,在内核中分配内存并不是一件非常容易的事情,因为在此过程中必须遵从内核特定的状态约束.linux内存管理建立在基本的分页机制基础上,在l ...

  8. Objective-C内存管理之引用计数

    初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...

  9. Quartz2D内存管理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #239619 } p.p2 ...

随机推荐

  1. linux 命令 文件数量统计

    # 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录 ls ...

  2. arcgis python脚本工具实例教程—栅格范围提取至多边形要素类

    arcgis python脚本工具实例教程-栅格范围提取至多边形要素类 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:提取栅格数据的范围, ...

  3. 002 vue-resource

    一:概述 1.说明 https://github.com/pagekit/vue-resource 2.使用方法 Vue.http.get('/someUrl', [config]).then(suc ...

  4. Java算法 -- 桶排序

    桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里.每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序).桶排序是鸽巢排序 ...

  5. idea切换工作目录后无法重启问题记录

    1.idea每次重新打开新项目或者切换新的工作空间后,总是半天起不来.有时候知道是缓存或者其他的问题,有时候莫名其妙就好了. 本次原因是:

  6. vue-cli3 配置跨域并通axios进行数据请求

    在项目根目录下创建vue.config.js文件,配置信息: module.exports = { devServer: { proxy: { '/api': { target: 'http://19 ...

  7. NOI2019 Fe

    NFLS XY NOI2019 Fe Orz zsy,zhf,wqy,zjc,bly! Goodbye OI!

  8. python实践项目八:生成随机试卷文件

    描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...

  9. 「中山纪中集训省选组D4T1」折射伤害 高斯消元

    题目描述 在一个游戏中有n个英雄,初始时每个英雄受到数值为ai的伤害,每个英雄都有一个技能"折射",即减少自己受到的伤害,并将这部分伤害分摊给其他人.对于每个折射关系,我们用数对\ ...

  10. kubelet tls

    当成功签发证书后,目标节点的 kubelet 会将证书写入到 --cert-dir= 选项指定的目录中:此时如果不做其他设置应当生成上述除ca.pem以外的4个文件 kubelet-client.cr ...