Программирование DSP VDK: дополнительные кучи Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


VDK: дополнительные кучи Печать
Добавил(а) microsin   

В среде 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.

VDK new heap

3. Будет создана новая куча VDK. Введите имя для этой новой кучи (VDK heap name) и нажмите клавишу Enter.

VDK new heap name

Замечание: имя кучи VDK должно быть допустимым идентификатором языка C. Для него не допускаются специальные символы, такие как пробелы или дефисы.

4. Кликните на столбце Value справа от ID и введите идентификатор кучи (выберите его из выпадающего списка).

Замечание: это ID, используемый при создании кучи с помощью библиотеки поддержки нескольких куч C/C++ (C/C++ run-time library multiple heap support, [1]). Перед выполнением пункта 4 новую кучу необходимо создать статически.

[Ссылки]

1. VisualDSP: работа с динамически выделяемой памятью.
2. Как устроена куча Blackfin.
3. VDK: пулы памяти.

 

Добавить комментарий


Защитный код
Обновить

Top of Page