OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 171|回复: 3

原子my_mem_init的问题

[复制链接]

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-6-25
在线时间
5 小时
发表于 2018-7-10 10:48:46 | 显示全部楼层 |阅读模式
正点原子公众号
/内存管理初始化  //memx:所属内存块
void my_mem_init(u8 memx)  
mymemset(mallco_dev.memmap[memx],0,memtblsize[memx]*4);       
这个是不是有点问题。应该调用mymemset(mallco_dev.membase[memx],0,memtblsize[memx]*4);       

因为mem2mapbase是buf的顶了。这样地址再加就越界了。
回复

使用道具 举报

  离线 

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2017-11-24
在线时间
29 小时
发表于 2018-7-10 16:18:23 | 显示全部楼层
嘿嘿,正好刚看完这段。 额也琢磨了会,没有问题的。mymemset(mallco_dev.memmap[memx],0,memtblsize[memx]*4);        这句清除的是内存表的内容而不是内存池的内容,mallco_dev.memmap[memx]指向的是
mem1mapbase 或mem2mapbase 或 mem3mapbase,也就是内存表的首址!
回复 支持 反对

使用道具 举报

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-6-25
在线时间
5 小时
 楼主| 发表于 2018-7-11 17:45:17 | 显示全部楼层
你理解的对的,之前修改了内存memsize 大小。没用预留表的大小,导致出问题。
回复 支持 反对

使用道具 举报

  离线 

4

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-6-25
在线时间
5 小时
 楼主| 发表于 2018-7-12 08:50:10 | 显示全部楼层
不过内存表也太大了,MEM2_MAX_SIZE/MEM2_BLOCK_SIZE*4    内存是内存表16倍。
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-20 22:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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