我现在使用是C6748的芯片,我有一个疑问啊,就是如果改变外部的DDR的大小,软件是否需要重新配置,否则,系统如何得知我当前使用的内存是多少,如果我内存使用完了呢?
Thanks
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我现在使用是C6748的芯片,我有一个疑问啊,就是如果改变外部的DDR的大小,软件是否需要重新配置,否则,系统如何得知我当前使用的内存是多少,如果我内存使用完了呢?
Thanks
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.
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节.