реклама на сайте
подробности

 
 
> И снова LPC4337 + SSP + DMA, При выполнении memset, std::fill валится связь
haker_fox
сообщение Apr 28 2018, 01:11
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добрый день!

В моём проекте в целом работает связь микроконтроллера по ssp с флешками n25q128. Для транзакций задействован DMA. Были в своё время проблемы, не очень чётко описанные в документации, но они давно решены (тема тут.

Но недавно выползла новая проблемка. Как я уже сказал, запись/чтение на флешки работает отлично. Никаких сбоев. SSP не использует прерываний, они разрешены лишь только для диагностики. (overrun/timeout). И вот если во время обмена данными в одной из задач выполняется memset в массив, либо std::fill в вектор, то вывалвается прерывание overrun по SSP. Я ни как не могу разобраться в чём дело. У меня есть теория, которую пока не могу ни опровергнуть, ни подтвердить. Возможно, что DMA и процессор не могут поделить шины. И если проц начинает копирование данных, т.е. интенсивно использовать шины, то DMA (не смотря на то, что у него есть fifo, у SSP есть fifo) не успевает вычитать данные с шины. И там наступает переполнение. Если это так, то подскажите, пожалуйста. как грамотно разрулить ситуацию?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016