В среде VisualDSP есть возможность использовать несколько куч [1], что очень полезно при наличии SDRAM. Быстрая, но маленькая системная куча (system heap, эта куча всегда создается по умолчанию, если куча вообще используется) находится во внутренней сверхбыстрой памяти SRAM (L1), и может быть создана одна дополнительная куча (или несколько таких куч) в более медленной внешней памяти SDRAM. Несколько куч также можно использовать в библиотеках VDK.
По умолчанию все элементы и объекты VDK выделяются в системной куче (L1, SRAM). В предыдущих версиях VDK при определении пулов памяти [3] на процессорах, у которых поддерживается несколько куч, можно использовать разные кучи для разных пулов. Этот механизм был расширен, и VDK теперь может использовать несколько куч, определенных во время линковки (динамически созданные кучи VDK не поддерживаются), и для других целей - чтобы указать, какая область памяти используется для создания различных элементов VDK - семафоров, сообщений, стеков потоков и т. д. Это очень удобно, потому что при наличии SDRAM дает возможность экономить драгоценную память системной кучи по умолчанию (которая находится в L1 SRAM). За создание дополнительных куч во время компиляции отвечает программист (как это делается, см. [1]).
Новая куча VDK создается в среде VisualDSP++ на закладке Kernel проекта VDK. В этот момент происходит создание имени кучи VDK и привязка его к идентификатору кучи. Идентификатор кучи должен быть выбран такой же, какой использовался бы при создании кучи библиотеками C/C++ run-time (в зависимости от используемого процессора идентификатор может быть числовым или строковым; в частности, процессор Blackfin ADSP-BF538 использует для идентификатора кучи числовой идентификатор, см. [1]).
Как добавить кучу в проект VDK:
1. В окне Project проекта VDK (браузер проекта) перейдите на закладку Kernel.
2. Выполните правый клик мышью на разделе Heaps, и выберите в контекстном меню New Heap.
3. Будет создана новая куча VDK. Введите имя для этой новой кучи (VDK heap name) и нажмите клавишу Enter.
Замечание: имя кучи VDK должно быть допустимым идентификатором языка C. Для него не допускаются специальные символы, такие как пробелы или дефисы.
4. Кликните на столбце Value справа от ID и введите идентификатор кучи (выберите его из выпадающего списка).
Замечание: это ID, используемый при создании кучи с помощью библиотеки поддержки нескольких куч C/C++ (C/C++ run-time library multiple heap support, [1]). Перед выполнением пункта 4 новую кучу необходимо создать статически.
[Ссылки]
1. VisualDSP: работа с динамически выделяемой памятью. 2. Как устроена куча Blackfin. 3. VDK: пулы памяти. |