Проблема с драйвером McAsp процессора OMAP-L138
Здравствуйте. Сейчас я разрабатываю программное обеспечение для устройства по сбору данных. Создано оно на базе процессора OMAP-L138, а сбор данных производится с 4-канального АЦП PCM4204. В качестве инструментария я использую Code Composer Studio 4.2, набор драйверов pspdrivers_01_30_01, EDMA пакет edma3_lld_01_11_02_05. При отладке других узлов устройства возникали проблемы из-за ошибок в драйверах, но они мною успешно выявлялись и исправлялись. Однако несколько дней назад я столкнулся с проблемой, которая поставила меня в тупик, в коем я сейчас и пребываю. Мне не удалось заставить корректно работать драйвер McAsp, отвечающий за связь с АЦП. При вызове функции SIO_reclaim, чтобы возвратить адрес заполненного данными буфера, процесс блокируется до момента, когда в выходной очереди драйвера появятся готовые буферы. Этого не происходит, и, следовательно, процесс так и остаётся находиться в состоянии блокировки. Почему этого не происходит, я и пытаюсь выяснить.
При детальном изучении проблемы я выяснил следующие факты. Операция испускания пустых буферов данных в канал SIO посредством функции SIO_issue проходит успешно. Всего канал предусмотрен для содержания 5 необработанных буферов. Я посылаю в канал 4 буфера. Каждый буфер имеет размер 16000 байт. В каждый из них должны складироваться данные выборок со всех четырёх каналов АЦП. Применяемый формат данных для McAsp -Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLE AVED_1. При наблюдении, как изменяется содержимое буферов во время работы программы, я обнаружил, что данные первых двух посланных буферов регулярно обновляются. Возникает впечатление, что не вызывается функция Mcasp_localEdmaCallback. Однако, почему так происходит, мне пока не ясно. Здесь я выкладываю урезанную версию своего проекта. Он содержит только то, что относится к осуществлению коммуникации с АЦП.
Комментарии:
1.Библиотека pspiom.mcasp_LPE.a674 – это библиотека pspiom.mcasp.a674 с использованием
-DMcasp_LOOPJOB_ENABLED.
2. .Библиотека ti.pspiom.gpio_8_15.a674 – это изменённая библиотека ti.pspiom.gpio.a674. В ней я исправил ошибку, допущенную разработчиками драйвера, не позволяющую задействовать контакт GPIO 8[15] процессора.
Буду очень благодарен откликнувшимся людям, у которых уже есть за плечами опыт работы с данным драйвером. Спасибо за внимание.
|