TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C6748的DDR的内存软件配置

我现在使用是C6748的芯片,我有一个疑问啊,就是如果改变外部的DDR的大小,软件是否需要重新配置,否则,系统如何得知我当前使用的内存是多少,如果我内存使用完了呢?

Thanks

Tony Tang:

DDR大小与软件配置相关的是列地址宽度(page size). bank数等.

系统没办法知道内存大小。需要你人为设定。或者自己通过一些技巧性的方法来判断内存大小。

chenyu zhang2:

回复 Tony Tang:

hi Tony:

我现在是C6748的sysbios程序,这个page size.bank在哪里设置的?

“系统没办法知道内存大小。需要你人为设定。”

对于你说的这个,我们先不考虑那么复杂,就假设我是知道我的DDR内存大小的,比如64M,那么我这个内存管理是如何进行的呢?比如我现在写一个malloc(),那他申请的这个内存是从哪里申请的呢?是从片上内存还是从DDR?如果从DDR的话,我理解我应该先从总线上把这部分内存初始化管理起来才对啊。

我看有一段参考例程它是这样写的:

Ptr bufs[4];    IHeap_Handle heap = HeapMem_Handle_upCast(heapMem0);    System_printf("Initial task1 heap status\n");    PrintHeapStatus(heap);    bufs[0] = Memory_alloc(heap, 16, 0, NULL);    bufs[1] = Memory_alloc(heap, 32, 0, NULL);    bufs[2] = Memory_alloc(heap, 64, 0, NULL);    System_printf("Current HeapBuf status 1\n");    PrintHeapStatus(heap);    Memory_free(heap, bufs[1], 32);    Memory_free(heap, bufs[2], 64);

但是我没有找到Memory_alloc定义的地方,我不知道他到底是如何管理的,所以我现在对这一部分可以说是完全不理解。

Thanks.

Tony Tang:

回复 chenyu zhang2:

chenyu zhang2我现在是C6748的sysbios程序,这个page size.bank在哪里设置的?

这是硬件初始部分的,与操作系统无关,在DDR的寄存器初始化配置里。

chenyu zhang2比如我现在写一个malloc(),那他申请的这个内存是从哪里申请的呢?是从片上内存还是从DDR?如果从DDR的话,我理解我应该先从总线上把这部分内存初始化管理起来才对啊。

这是纯软件的问题,malloc是从heap里分配的。在C环境初始化时就把heap的指针初始化好了,然后针对这个指针进行操作。而heap的分配是在cmd里指令的,用BIOS的情况下是在BIOS的配置做的。跟cmd里的配置其实是一回事。

可以看一下BIOS安装目录下的文档:C:\ti\bios_6_45_01_29\docs\Bios_User_Guide.pdf的7.7.2节.

赞(1)
未经允许不得转载:TI中文支持网 » 关于C6748的DDR的内存软件配置
分享到: 更多 (0)