OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7110|回复: 11

请教下,使用 mymalloc 这个函数 后返回的 是0x200xxxxxx ???

[复制链接]

260

主题

810

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1898
金钱
1898
注册时间
2012-10-28
在线时间
357 小时
发表于 2015-9-13 21:52:01 | 显示全部楼层 |阅读模式
5金钱
U32 *aMemory = mymalloc(SRAMEX, GUI_NUMBYTES); //从外部SRAM中分配GUI_NUMBYTES字节的内存
GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少

外部地址定义:__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0x68000000))); //外部SRAM内存池

函数如上,但是这个 aMemory 返回的地址为如图片所示:

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-13 22:57:18 | 显示全部楼层
除非代码有问题,否则返回值,肯定是0X6800xxxx的地址
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-9-15
在线时间
1 小时
发表于 2015-9-15 13:14:35 | 显示全部楼层
是你调试的方法有问题,你把U32 *aMemory 设置为全局试试 不行再试试设置不优化的
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-11
在线时间
13 小时
发表于 2015-9-15 17:40:42 | 显示全部楼层
请问下,动态内存管理是否会影响其他静态数组?
回复

使用道具 举报

260

主题

810

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1898
金钱
1898
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2015-9-15 22:07:57 | 显示全部楼层
回复【4楼】ROCK:
---------------------------------
按理说应该不会吧
回复

使用道具 举报

260

主题

810

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1898
金钱
1898
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2015-9-15 22:08:21 | 显示全部楼层
回复【3楼】哇哈哈+:
---------------------------------
设置为全局结果也是一样 的
回复

使用道具 举报

260

主题

810

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1898
金钱
1898
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2015-9-15 22:12:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
你好,程序运行
u32 mem_malloc(u8 memx,u32 size)  
{  
    signed long offset=0;  
    u16 nmemb; //需要的内存块数  
u16 cmemb=0;//连续空内存块数
    u32 i;  
    if(!mallco_dev.memrdy[memx])
mallco_dev.init(memx); //未初始化,先执行初始化 
    if(size == 0)
return 0XFFFFFFFF; //不需要分配

    nmemb=size/memblksize[memx];   //获取需要分配的连续内存块数

    if(size % memblksize[memx])
nmemb++;  
    for(offset = memtblsize[memx]-1; offset>=0; offset--)//搜索整个内存控制区  
    {
if(!mallco_dev.memmap[memx][offset])
cmemb++; //连续空内存块数增加    (1)
else 
cmemb=0;                //连续内存块清零           (2)
if(cmemb == nmemb) //找到了连续nmemb个空内存块
{
for(i=0;i<nmemb;i++)   //标注内存块非空 
{  
mallco_dev.memmap[memx][offset+i]=nmemb;  
}  
return (offset*memblksize[memx]); //返回偏移地址  
}
    }  
    return 0XFFFFFFFF;//未找到符合分配条件的内存块  



上面的程序运行仿真时,始终都不会运行到括号 1 处执行程序,每次都运行到括号 2,请教下是什么情况啊 ???>
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-21 00:42:18 | 显示全部楼层
回复【7楼】hpdell:
---------------------------------
你直接测试我们例程吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

260

主题

810

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1898
金钱
1898
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2015-10-19 11:07:44 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
关于这个 malloc 的最新情况请教下,

mem_init();  初始化后,就在初始化下面接着申请内存,返回值是正确的,但是在其他.c的地方调用申请内存函数返回值却为0, 这是什么情况啊 ??
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-20 23:21:55 | 显示全部楼层
回复【9楼】hpdell:
---------------------------------
 说明内存不够了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

14

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1454
金钱
1454
注册时间
2015-8-18
在线时间
115 小时
发表于 2016-10-7 14:36:47 | 显示全部楼层
hpdell 发表于 2015-9-15 22:12
回复【2楼】正点原子:
---------------------------------
你好,程序运行
u32&nbsp;mem_malloc(u8&nbsp;me ...

你移植STemWin时,GUI_NUMBYTES 大于内存状态表中剩余的可用内存块了。
建议你将MEM2_MAX_SIZE 改大点
回复

使用道具 举报

33

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2013-6-18
在线时间
15 小时
发表于 2017-1-4 14:42:47 | 显示全部楼层
我在学UCOSIII+STEMWIN时也遇见了类似的问题,源代码是教程上的,应为板子有些不一样,我打底层驱动,设置都改了(已经跑过官方历程不会有问题),编译什么都没问题,烧程序后发现运行一段时间就死了,发现是在也是楼主说的地方,有问题。求解!
一知半解!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 01:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表