Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разработка архитектуры проекта
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
ZeratulSC007
Доброго времени суток.
Есть задача - читать с микрофона (MP45DT02, родной для stm32f4Disco), с последующей передачей в канале с пропускной способностью 6.8 Мб/с и воспроизведением на приемной стороне. На стороне передачи - Discovery(f4), на приемнике ПЛИС с периферией. Хочется как можно ближе подойти к "живому звуку", т.е. воспроизводить звук на приемной части с минимальным отставанием. В первой итерации выбрал записывать с микрофона через DMA во флеш, по накоплению 3х секунд производить обработку (обработка производится с помощью библиотеки libPDMFilter_Keil.lib), выбрасывать в канал, и воспроизводить сразу (после кодека) звук. Связь с каналом передачи осуществляется по SPI. Является ли такое построение взаимосвязей правильным или нужно что-то изменить?
jcxz
Цитата(ZeratulSC007 @ Dec 11 2017, 10:36) *
В первой итерации выбрал записывать с микрофона через DMA во флеш

Во флешь? Зачем??? wacko.gif
Вы разрабатываете УПДДФ? biggrin.gif
ZeratulSC007
Цитата(jcxz @ Dec 11 2017, 15:42) *
Во флешь? Зачем??? wacko.gif
Вы разрабатываете УПДДФ? biggrin.gif


Нет, рассчитывал, что так меньше нагрузки на проц, еще ведь обрабатывать PDM с микрофона и рулить SPI с каналом передачи. Если я где-то ошибся, пожалуйста, поправьте или укажите на неточность); я этого и жду
jcxz
Цитата(ZeratulSC007 @ Dec 11 2017, 16:43) *
Нет, рассчитывал, что так меньше нагрузки на проц, еще ведь обрабатывать PDM с микрофона и рулить SPI с каналом передачи. Если я где-то ошибся, пожалуйста, поправьте или укажите на неточность); я этого и жду

Как запись во флешь поможет снизить нагрузку на проц??? wacko.gif
AlexandrY
Цитата(jcxz @ Dec 11 2017, 18:38) *
Как запись во флешь поможет снизить нагрузку на проц??? wacko.gif

Ключевое слово не Flash ( внешнего RAM все равно нет), а 3 сек.
Речь наверно о разделении во времени.
ZeratulSC007
Цитата(jcxz @ Dec 11 2017, 19:38) *
Как запись во флешь поможет снизить нагрузку на проц??? wacko.gif

Через DMA же

Цитата(AlexandrY @ Dec 11 2017, 21:44) *
Ключевое слово не Flash ( внешнего RAM все равно нет), а 3 сек.
Речь наверно о разделении во времени.

На макетной плате, которая будет под это сделана, она предусмотрена
Да, мне хочется понять, будет ли слаженно по времени работать или можно просто забить на флеш, например
AlexandrY
Цитата(ZeratulSC007 @ Dec 12 2017, 11:54) *
Через DMA же
На макетной плате, которая будет под это сделана, она предусмотрена
Да, мне хочется понять, будет ли слаженно по времени работать или можно просто забить на флеш, например

На SD карту по любому быстрее будет.
Хотя, если честно, не понял алгоритма.
Да и либа ваша без исходников, тут ничего сказать заранее нельзя, надо профайлить.
ZeratulSC007
Цитата(AlexandrY @ Dec 12 2017, 13:01) *
На SD карту по любому быстрее будет.
Хотя честно не понял алгоритма.

Насчет SD не думали, спасибо за такой вариант.
Алгоритм (если я правильно вас понял): MEMS-микрофон -> флеш-память -> когда набирается три секунды, обработка PDM-библиотекой -> по SPI в канал связи -> отправка -> получение -> воспроизведение
ZeratulSC007
Цитата(AlexandrY @ Dec 12 2017, 13:01) *
Да и либа ваша без исходников, тут ничего сказать заранее нельзя, надо профайлить.


Либа с сайта stm, у них есть пара application note для ее использования и она применяется в одном из примеров по записи/воспроизведению аудио
x893
а стирать флэш не планируется ?
после 3 секунд записи всё заканчивается ?
jcxz
Цитата(ZeratulSC007 @ Dec 12 2017, 11:54) *
Через DMA же

Жесть какая.... да уж, нет слов.... sad.gif
ZeratulSC007
Цитата(jcxz @ Dec 12 2017, 15:15) *
Жесть какая.... да уж, нет слов.... sad.gif

ну так объясните, пожалуйста, я же для этого и написал

Цитата(x893 @ Dec 12 2017, 15:03) *
а стирать флэш не планируется ?
после 3 секунд записи всё заканчивается ?

планируется
3 секунды выбраны для примера
записывать будем пока не пришла команда конца записи (до ее получения может быть от 3 секунд до часа и больше)
т.е. в идеале должно постоянно писаться с микрофона во флешку
AlexandrY
Цитата(ZeratulSC007 @ Dec 12 2017, 14:39) *
ну так объясните, пожалуйста, я же для этого и написал

Да все нормально у вас придумано.
Возьмите линейную файловую систему из Keil-а и вполне себе по DMA все получится.
Если бы вы использовали вот такой модуль на MK66, то я бы дал вам свою адаптированую по быстродействию версию такой системы.
jcxz
Цитата(ZeratulSC007 @ Dec 12 2017, 14:39) *
ну так объясните, пожалуйста, я же для этого и написал

Что тут объяснять? Я вас спрашиваю - вы даже вопросы понять не можете..... wacko.gif
Спрашиваю - зачем вообще писать во флешь, вы пишете "чтобы снизить нагрузку на проц". Какая связь между "нагрузкой на проц" и записью или не записью во флешь??? Это вообще вещи взаимно-перпендикулярные как тёплое и круглое.
Описываете задачу как задачу захвата аудио-сигнала, его обработки и передачи куда-то. Тут всё понятно. Но при чём тут запись во флешь??? Я вас об этом спрашивал. Зачем она нужна? Чтобы во флешь дырку протереть что-ль? Так для этого необязательно какие-то аудио-данные туда писать, можно просто случайные.
И ещё DMA приплетаете ни к селу ни к городу... У вас похоже каша в голове такая же как и в формулировке задачи.
ZeratulSC007
Цитата(AlexandrY @ Dec 12 2017, 18:32) *
Да все нормально у вас придумано.
Возьмите линейную файловую систему из Keil-а и вполне себе по DMA все получится.
Если бы вы использовали вот такой модуль на MK66, то я бы дал вам свою адаптированую по быстродействию версию такой системы.

Спасибо, поинтересуюсь возможностью приобретения такого модуля

Цитата(jcxz @ Dec 12 2017, 19:19) *
Что тут объяснять? Я вас спрашиваю - вы даже вопросы понять не можете..... wacko.gif
Спрашиваю - зачем вообще писать во флешь, вы пишете "чтобы снизить нагрузку на проц". Какая связь между "нагрузкой на проц" и записью или не записью во флешь??? Это вообще вещи взаимно-перпендикулярные как тёплое и круглое.
Описываете задачу как задачу захвата аудио-сигнала, его обработки и передачи куда-то. Тут всё понятно. Но при чём тут запись во флешь??? Я вас об этом спрашивал. Зачем она нужна? Чтобы во флешь дырку протереть что-ль? Так для этого необязательно какие-то аудио-данные туда писать, можно просто случайные.
И ещё DMA приплетаете ни к селу ни к городу... У вас похоже каша в голове такая же как и в формулировке задачи.

Запись во флеш через контроллер DMA позволяет освободить процессор от необходимости рулить записью процессором. Во флеш я думаю писать, чтобы пока копились следующие три секунды, процессор мог обработать полученные данные с микрофона и отправить их в канал. Почему здесь "DMA ни к селу ни к городу"?
XVR
Цитата(ZeratulSC007 @ Dec 13 2017, 13:33) *
Запись во флеш через контроллер DMA позволяет освободить процессор от необходимости рулить записью процессором.
Вы флешь с RAM не перепутали? В флешь через DMA писать не получится.

AlexandrY
Цитата(XVR @ Dec 13 2017, 12:45) *
Вы флешь с RAM не перепутали? В флешь через DMA писать не получится.

Пишется в SRAM Data Buffer
jcxz
Цитата(XVR @ Dec 13 2017, 12:45) *
Вы флешь с RAM не перепутали? В флешь через DMA писать не получится.

Человек похоже не понимает разницы ни между RAM и FLASH, ни между внутренней и внешней FLASH. Ни про работу FLASH понятия не имеет. Разговор пустой....
ZeratulSC007
Цитата(XVR @ Dec 13 2017, 13:45) *
Вы флешь с RAM не перепутали? В флешь через DMA писать не получится.

В примере stm Audio_playback_and_record идет запись на внешний носитель. Объясните, почему не получится? Понятно, что с флешкой работаю по usb, но dma все равно используется, чтобы заполнить буфер от микрофона в буфер к памяти, или нет?

Цитата(jcxz @ Dec 13 2017, 14:40) *
Человек похоже не понимает разницы ни между RAM и FLASH, ни между внутренней и внешней FLASH. Ни про работу FLASH понятия не имеет. Разговор пустой....

Почему бы не показать тогда мне, где конкретно я ошибаюсь, чтобы я мог научиться и понять? Разговор получается пустой, когда одна из сторон говорит только общие фразы, а не дает конкретных инструкций. Нельзя ли тогда сказать мне точнее, в какой части я не вижу разницы между типами памяти?
AlexandrY
Цитата(ZeratulSC007 @ Dec 13 2017, 13:54) *
Почему бы не показать тогда мне, где конкретно я ошибаюсь, чтобы я мог научиться и понять? Разговор получается пустой, когда одна из сторон говорит только общие фразы, а не дает конкретных инструкций. Нельзя ли тогда сказать мне точнее, в какой части я не вижу разницы между типами памяти?

Инициирование записи во Flash требует определенных программных процедур.
После записи надо читать статус готовности к новой записи.
Это занимает некоторое процессорное время.
Некоторые наверно думают, что это займет значительную часть процессорного времени.
Но запись в RAM по DMA заняла бы практически такое же время.
Правда модуль DMA должен быть достаточно развит для такого использования.
ZeratulSC007
Цитата(AlexandrY @ Dec 13 2017, 17:14) *
Инициирование записи во Flash требует определенных программных процедур.
После записи надо читать статус готовности к новой записи.
Это занимает некоторое процессорное время.
Некоторые наверно думают, что это займет значительную часть процессорного времени.
Но запись в RAM по DMA заняла бы практически такое же время.
Правда модуль DMA должен быть достаточно развит для такого использования.

Спасибо за объяснение! Программные процедуры для записи во флеш, в принципе, видны в примере stm. Можно уточнить, что значит, что модуль DMA должен быть достаточно развит для записи в RAM?
AlexandrY
Цитата(ZeratulSC007 @ Dec 13 2017, 17:14) *
Спасибо за объяснение! Программные процедуры для записи во флеш, в принципе, видны в примере stm. Можно уточнить, что значит, что модуль DMA должен быть достаточно развит для записи в RAM?

Я говорил про запись во Flash.
Во Flash чтобы сделать быструю запись нужно использовать связные списки DMA пересылок и гибкие триггеры DMA от таймеров и шины.
Кстати в Kinetis можно легко организовать параллельную запись сразу в 5-ть чипов SPI Flash. Увеличите пропускную способность в 5-ть раз.
ZeratulSC007
Цитата(AlexandrY @ Dec 14 2017, 00:13) *
Я говорил про запись во Flash.
Во Flash чтобы сделать быструю запись нужно использовать связные списки DMA пересылок и гибкие триггеры DMA от таймеров и шины.
Кстати в Kinetis можно легко организовать параллельную запись сразу в 5-ть чипов SPI Flash. Увеличите пропускную способность в 5-ть раз.

Спасибо! Погнал изучать связные списки и думать, нужно ли это будет реализнуть(и смогу ли в достаточное время).
mantech
Цитата(ZeratulSC007 @ Dec 13 2017, 13:33) *
Запись во флеш


Про ресурс флеш ничего не забыли? Так-то это не RAM laughing.gif
AlexandrY
Цитата(mantech @ Dec 15 2017, 14:08) *
Про ресурс флеш ничего не забыли? Так-то это не RAM laughing.gif

Во всех гаджетах видео на Flash записывается.
Ключевой вопрос об объеме Flash вы же не задали. wink.gif

Может там какая-нибудь гипер SPI флэш типа MX25UM51245G стоит.
ZeratulSC007
Цитата(AlexandrY @ Dec 15 2017, 18:27) *
Во всех гаджетах видео на Flash записывается.
Ключевой вопрос об объеме Flash вы же не задали. wink.gif

Может там какая-нибудь гипер SPI флэш типа MX25UM51245G стоит.


С этим буду разбираться по мере встречи с проблемами и непониманием). Я только первые проекты делаю, и, естественно, взгляд на проект профана все еще
P.S. Прошу прощения за долгий ответ
AlexandrY
Цитата(ZeratulSC007 @ Dec 20 2017, 15:08) *
С этим буду разбираться по мере встречи с проблемами и непониманием). Я только первые проекты делаю, и, естественно, взгляд на проект профана все еще
P.S. Прошу прощения за долгий ответ

Про гиперфлэши и гиперRAMы была недавно статья на хабре.
Гипер SPI шину поддерживает серия микроконтроллеров i.MX RT кстати.

KIT для i.MX RT совсем не дорогой
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.