调用MEM_alloc()动态申请内存时tcf中mem的配置

当我直接建立工程的时候,在自己的main()函数里调用MEM_alloc()函数申请一块动态内存,编译时出错如下:

[Linking...]"C:\CCStudio_v3.3\C6000\cgtools\bin\cl6x" -@"Debug.lkf"

<Linking>

>>  error: 15-bit displacment ffffffff is not aligned. Located in

           D:\\all\\SoftWare\\hello_bios_mem\\Debug\\hello_bios_mem.obj,

           section .text, SPC offset 00000040

 

原因是在默认情况下,不能申请动态内存的。要在BIOS 的tcf文件配置一下

 

在System --> MEM – Memory Sesion Manager --> 右击 --> Insert MEM ,命名为DDR2_DATA。然后对着DDR2_DATA右击 --> Properties --> 设置首地址和长度 ,此时的”create a heap in this memory” 选项还不能选上。如下图:

 

如何能把 ”create aheap in this memory” 选上呢?

1、把DDR2 Properties 的”create a heap in this memory” 选上。

2、回到System --> MEM –Memory Sesion Manager --> 右击 --> Properties --> 把”No Dynamic Memory Heaps” 的“√”去掉,配置如下图:

 

 

 

完面之后再回去配置DDR2_DATA的Properties 就可以了。

 

 

Main的主程序如下:

 

#include <std.h>

#include <log.h>
#include <mem.h>

#include "hello_bios_memcfg.h"
 
 
#define BUFSIZE (3*40) 
extern Int DDR2_DATA;

 
Void main()
{
   Ptr my_ptr;
    LOG_printf(&trace, "memtest example started.\n");
   LOG_printf(&trace, "beforeallocating ...");


   my_ptr = MEM_alloc(DDR2_DATA, BUFSIZE,0); 
        LOG_printf(&trace, "seg%d: ptr = 0x%x", DDR2_DATA, my_ptr);

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值