当我直接建立工程的时候,在自己的main()函数里调用MEM_alloc()函数申请一块动态内存,编译时出错如下:
[Linking...]"C:CCStudio_v3.3C6000cgtoolsincl6x" -@"Debug.lkf"
>> 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
#include
#include
#include "hello_bios_memcfg.h"
#define BUFSIZE (3*40)
extern Int DDR2_DATA;
Void main()
{
Ptr my_ptr;
LOG_printf(&trace, "memtest example started.
");
LOG_printf(&trace, "beforeallocating ...");
my_ptr = MEM_alloc(DDR2_DATA, BUFSIZE,0);
LOG_printf(&trace, "seg%d: ptr = 0x%x", DDR2_DATA, my_ptr);
}