DSP

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

2019-07-13 15:16发布

当我直接建立工程的时候,在自己的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); }