uriy 4 4 марта, 2016 Опубликовано 4 марта, 2016 · Жалоба Есть проект на 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 52 4 марта, 2016 Опубликовано 4 марта, 2016 · Жалоба 3. а почему поздно? только заполнять не целиком с 0, а от текущего значения указателя стэка и до конца можно в любой момент Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 5 марта, 2016 Опубликовано 5 марта, 2016 · Жалоба только заполнять не целиком с 0, а от текущего значения указателя стэкаЧто-то и правда я не подумал о возможности считать текущее значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 11 марта, 2016 Опубликовано 11 марта, 2016 · Жалоба Есть startup, где в числе прочего инициализируются указатель стека и вызывается main. там можно всё необходимое сделать. применяемый файл стартапа указан в ldf, а исходники идут в комлекте с vdsp Что-то и правда я не подумал о возможности считать текущее значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться