OpenEdv-开源电子网

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

求助:内存管理实验

[复制链接]

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
发表于 2015-5-26 15:27:13 | 显示全部楼层 |阅读模式
5金钱
求助,原子哥,
最近用STM32F103的板移植了UCOS和STemWIN.但是发现只要把USE_EXRAM改为分配外部内存就跑到死循环里了。改为分配内部内存所有功能都正常了。



下面是初始化的代码,单步走到GUI_ININ() 就跳到 HardFault()死循环了



请问这可能是什么问题呀?感觉是分配外部内存这里出错了。
硬件上应该没有问题,跑外部SRAM测试都是没问题的。

另外还有个问题:
打开探索者同一个例程里发现内存池的定义是32字节对齐的,这里是不是错误? 不是应该4字节对齐吗?

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

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-5-26 16:18:02 | 显示全部楼层
全部按照我们的例程上的来,还有就是你的外部内存管理多大的外部sram?别搞的你分配给EMWIN的sram大于内存管理可使用的最大RAM。
开往春天的手扶拖拉机
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-5-26 17:44:42 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
外部内存管理200K,这里才100K呀
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-5-26 18:06:56 | 显示全部楼层
你是怎么给EMWIN分配的内存?
开往春天的手扶拖拉机
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-5-27 09:43:33 | 显示全部楼层
回复【4楼】zuozhongkai:
---------------------------------
GUI_Config.c 里的GUI_X_Config()分配的。

void GUI_X_Config(void) {
if(USE_EXRAM) //使用外部RAM
{
U32 *aMemory = mymalloc(SRAMEX,GUI_NUMBYTES); //从外部SRAM中分配GUI_NUMBYTES字节的内存
GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
}else  //使用内部RAM
{
U32 *aMemory = mymalloc(SRAMIN,GUI_NUMBYTES); //从内部RAM中分配GUI_NUMBYTES字节的内存
GUI_ALLOC_AssignMemory((U32 *)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
}
}
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-5-27 09:52:06 | 显示全部楼层
有人知道为什么两个例程为什一个是32字节对齐吗?这样不是会浪费很多空间吗?

//内存池(4字节对齐)
__align(4) u8 mem1base[MEM1_MAX_SIZE]; //内部SRAM内存池
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //外部SRAM内存池

//内存池(32字节对齐)
__align(32) u8 mem1base[MEM1_MAX_SIZE]; //内部SRAM内存池
__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //外部SRAM内存池
__align(32) u8 mem3base[MEM3_MAX_SIZE] __attribute__((at(0X10000000))); //内部CCM内存池


回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-27 23:18:29 | 显示全部楼层
回复【6楼】Nemo_gg:
---------------------------------
不会浪费多少空间。
有的程序需要32字节对齐的。

比如nes模拟器,甚至要求1024字节对齐!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-5-29 13:41:43 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
哦,明白。。。。

不过回到最开始的问题,原子哥知道为什么我一分配外部内存给EMWIN程序就跑到HardFault()里面吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-30 10:30:03 | 显示全部楼层
回复【8楼】Nemo_gg:
---------------------------------
这就要仿真调试了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-6-24 15:45:53 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
发现只要外部内存分配给EMWIN超过50K了就会进入HARD_FAULT中断了,这是什么原因?
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-6-24 15:48:24 | 显示全部楼层
这个帖子也有人提这个问题 ,知识后面没有人去研究了为什么了。。。
http://www.openedv.com/posts/list/0/28316.htm
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-24 22:58:50 | 显示全部楼层
回复【10楼】Nemo_gg:
---------------------------------
这个就不知道了,我分配1M以内,从来没出过问题的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2014-11-28
在线时间
1 小时
 楼主| 发表于 2015-6-25 15:30:40 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
这就奇怪了,之前用探索者移植例程也有这个问题。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 00:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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