【EasyARM-RT1052测评】+ SDRAM内存管理
<div class='showpostmsg'> 因为我用的是SDRAM_Debug的工程,所以系统启动的时候调用的是工程目录下的evkbimxrt1050_sdram_init.ini初始化,所以你之后的应用程序就可以直接以地址的方式读写SDRAM,flexspi_nor工程类似。修改工程目录下的MIMXRT1052xxxxx_sdram.scf文件,缩减出1M的SDRAM内存
可以看到32MB的SDRAM内存是不连续的,中间那段0x81D00000~0x81E00000用于我自己的内存管理,内存管理的配置表也放在这个位置,所以内存池最大其实没有1MB,需要减去配置表数组大小。
内存管理分配的内存块大小是64Byte,所以每申请一次就是64字节
初始化内存池,将数据清零
内存分配函数的实现,是从头开始查找配置,找到一块连续的内存块
内存释放函数的实现
测试内存管理,初始化内存池,申请512字节,占用了8个内存块,相应的数据被写入
再申请256字节,占用4个内存块,相应的数据紧接着之前的地址被写入
释放第一次申请的内存,可以看到配置表的数据已被清零,可用于下次申请,但内存的数据没做处理,所以没变(应该是清零比较合适)
第三次申请128字节的内存,可以看到配置表更新了,内存地址也写入了相应数据,说明内存管理函数都正确
附上工程文件,放在SDK_2.4.2_MIMXRT1052xxxxB\boards\EasyARM-RT1052-V1_0\demo_apps目录下解压即可,keil版本是V5.26.2.0
此内容由EEWORLD论坛网友ID.LODA原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]