Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Blackfin VDSP как разместить массив в scratchpad?
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Сигнальные процессоры и их программирование - DSP
uriy
Есть проект на BF533, из внешней памяти только SPI, внешней SRAM нет.
Весь код выполняется внутри. Поджимает объем памяти данных.
Возникло желание уменьшит стек и затолкать в scratchpad некоторые данные.
Приложена картинка как сейчас поделен scratchpad. Его общий объем 4КБ в моем проце.
Но я не все в этом понимаю.

1. Для чего используется System Heap? Предполагаю что это динамическое выделение памяти для библиотечных
функций. Как узнать использует или нет динамическую память то что я заинклудил?
Сейчас выставлено 512 байт для system heap. При недолгих тестах нарушений в работе устройства не вижу.

2. Для чего используется User Heap? Предполагаю что это область динамической памяти которую я сам могу создать. Мой код не использует динамическое выделение памяти, все статично. Наверно User heap мне не нужен?

Массив пробовал разместить двумя способами:
Код
section ("MyHeap") static uint8_t spi_tx_buffer[SPI_TX_BUFFER_SIZE];
section ("MEM_L1_SCRATCH") static uint8_t spi_tx_buffer[SPI_TX_BUFFER_SIZE];


В обоих случаях вылазит такое:
[Warning li2060] The following input section(s) that contain program code
and/or data have not been placed into the executable for processor 'p0'
as there are no relevant commands specified in the LDF:

.\Debug\spi.doj(MEM_L1_SCRATCH)


[Error li1060] The following symbols are referenced, but not mapped:
'_spi_tx_buffer' referenced from .\Debug\spi.doj(program)


В ldf файле такие секции есть
Код
         MyHeap_space = ldf_heap_end + 4;
         MyHeap_end = (MyHeap_space + (1024 - 4)) & 0xfffffffc;
         MyHeap_length = MyHeap_end - MyHeap_space;
      } > MEM_L1_SCRATCH


3. Как узнать необходимый размер стека. Я знаю только один способ. Залить предварительно область стека фиксированными данными, а потом смотреть докуда дополз стек. Но как в VDSP модифицировать код до main чтобы заполнить стек до входа в main. Ведь после входа в main это уже поздно делать.

Нажмите для просмотра прикрепленного файла
_pv
3. а почему поздно?
только заполнять не целиком с 0, а от текущего значения указателя стэка и до конца можно в любой момент
uriy
Цитата
только заполнять не целиком с 0, а от текущего значения указателя стэка
Что-то и правда я не подумал о возможности считать текущее значение.
Fat Robot
Есть startup, где в числе прочего инициализируются указатель стека и вызывается main. там можно всё необходимое сделать.
применяемый файл стартапа указан в ldf, а исходники идут в комлекте с vdsp

Цитата(uriy @ Mar 5 2016, 15:57) *
Что-то и правда я не подумал о возможности считать текущее значение.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.