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

 
 
> Прерывание DMA TMS320VC5509A, пропадают прерывания
Gar_Ri
сообщение Nov 29 2013, 06:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 1-11-07
Пользователь №: 31 949



DMA канал постоянно пересылает данные на последовательный порт и в определенный момент перестают генерироваться прерывания по этому каналу. При этом сам канал продолжает передавать данные и прерывания с других DMA каналов работают в штатном режиме. Все биты разрешающие прерывания по данному каналу установлены ( INTM, IER0/1, DMACICR). Флаги статуса (SYNC, HALF, FRAME) расположенные в DMACSR имеют значение 1.
В чем может быть причина пропадания прерывания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
alexeyv
сообщение Dec 2 2013, 03:07
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



поподробнее о том сколько DMA,McBSP и др периферии и как конретно настроено.......
Go to the top of the page
 
+Quote Post
Gar_Ri
сообщение Dec 2 2013, 05:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 1-11-07
Пользователь №: 31 949



Цитата(alexeyv @ Dec 2 2013, 09:07) *
поподробнее о том сколько DMA,McBSP и др периферии и как конретно настроено.......

Использую DSP/BIOS. Загрузка проца до 60 %. Активно работает USB + один McBSP (CLK до 12Мгц) и два DMA его обслуживает ( один на прием , другой на передачу). Управление передачей данных по McBSP происходит по прерываниям DMA (HALF, FRAME). Прерывания от DMA происходят примерно раз в 100 мкс.
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Dec 3 2013, 04:35
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



1. Надо смотреть не загрузку проца, а загрузку шин
2. какой приоритет у DMA?
3. USB используют DMA ? два Endpoint однозначно используют и приоритет выше чем DMA-controller, а остальные Endpoint?
4. Сколько времени тратится на обработку каждого прерывания, включая USB, DMA и другой периферии?
5. Есть ли прерывания, которые обрабатываюся более 100 мкс? Проверить осциллом в режиме запоминания в течении длительного времени
6. Или может суммарно все прерывания могут перевалить за 100 мкс в какой-либо момент времени?
7. Отключи USB и проверь будет ли отпадывать прерывания без него
8. Где-то видал расчет загрузки шин дсп в зависимости от включенной периферии, но не могу найти

Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 4 2013, 02:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Gar_Ri @ Dec 2 2013, 11:07) *
Использую DSP/BIOS. Загрузка проца до 60 %. Активно работает USB + один McBSP (CLK до 12Мгц) и два DMA его обслуживает ( один на прием , другой на передачу). Управление передачей данных по McBSP происходит по прерываниям DMA (HALF, FRAME). Прерывания от DMA происходят примерно раз в 100 мкс.

Странно у вас как-то построено....
DMA обычно используется для уменьшения частоты прерываний. Для этого стараются увеличить размер блока.
У вас же вижу частота прерываний очень высокая (10кГц). Зачем так - пересылать всего по неск. байт?
И это при том, что у DSP вход/выход в ISR обычно требуют сохранения/восстановления большого контекста. Подозреваю что значительная часть из 60% загрузки у вас тратится именно на сохранения/восстановления контекста в ISR.
Go to the top of the page
 
+Quote Post
Gar_Ri
сообщение Dec 4 2013, 03:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 1-11-07
Пользователь №: 31 949



Цитата(alexeyv @ Dec 3 2013, 10:35) *
1. Надо смотреть не загрузку проца, а загрузку шин
2. какой приоритет у DMA?
3. USB используют DMA ? два Endpoint однозначно используют и приоритет выше чем DMA-controller, а остальные Endpoint?
4. Сколько времени тратится на обработку каждого прерывания, включая USB, DMA и другой периферии?
5. Есть ли прерывания, которые обрабатываюся более 100 мкс? Проверить осциллом в режиме запоминания в течении длительного времени
6. Или может суммарно все прерывания могут перевалить за 100 мкс в какой-либо момент времени?
7. Отключи USB и проверь будет ли отпадывать прерывания без него
8. Где-то видал расчет загрузки шин дсп в зависимости от включенной периферии, но не могу найти


Я вполне могу допустить, что у меня прерывания могут "налезать" друг на друг. Но разве это или сбой по шине может привести к полному прекращению появления одного из прерывания и при этом ни по какому биту/флагу мы это не сможем определить?
А есть какой-нибудь флаг, который показывает что произошел сбой передачи по шине ? Случайно не BERR(Bus Error interrupt) для этого используется ?

Цитата(jcxz @ Dec 4 2013, 08:11) *
Странно у вас как-то построено....
DMA обычно используется для уменьшения частоты прерываний. Для этого стараются увеличить размер блока.
У вас же вижу частота прерываний очень высокая (10кГц). Зачем так - пересылать всего по неск. байт?
И это при том, что у DSP вход/выход в ISR обычно требуют сохранения/восстановления большого контекста. Подозреваю что значительная часть из 60% загрузки у вас тратится именно на сохранения/восстановления контекста в ISR.

Возможна передача/прием коротких пакетов, на которые надо быстро реагировать. Но возможно действительно стоит увеличить размер блока немного пожертвовав скоростью реакции.
Большая часть загрузки у меня все-таки тратиться на обработку принятых пакетов ( фильтрация и т.п.). Без обработки пакетов загрузка cpu с учетом dsp/bios 10-15% .
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Dec 4 2013, 04:31
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Случайно не BERR(Bus Error interrupt) для этого используется ?

В том числе для этого и создано
но для 5509А как-то мало описания
в 5502 есть регистр Time-Out Control Register (TOCR) для этих целей, а в 5509А его не нашел

зато в ДМА DMACICR/DMACSR есть биты TIMEOUTIE/TIMEOUT и DROPIE/DROP, которые можно проанализировать
Go to the top of the page
 
+Quote Post
Gar_Ri
сообщение Dec 4 2013, 05:01
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 1-11-07
Пользователь №: 31 949



Цитата(alexeyv @ Dec 4 2013, 10:31) *
В том числе для этого и создано
но для 5509А как-то мало описания
в 5502 есть регистр Time-Out Control Register (TOCR) для этих целей, а в 5509А его не нашел

зато в ДМА DMACICR/DMACSR есть биты TIMEOUTIE/TIMEOUT и DROPIE/DROP, которые можно проанализировать

Я тоже не особо много информации насчет BERR нашел, поэтому и появились сомнения насчет него. Но я проверял флаг BERR у меня он не выставляется при пропадание прерывания.

TIMEOUTIE/TIMEOUT и DROPIE/DROP тоже проверял. Данные флаги не устанавливаются и прерывания по ним не срабатывают.



Go to the top of the page
 
+Quote Post
SM
сообщение Jan 1 2014, 09:14
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Bus error возникает, когда происходит обращение к адресу в I/O space, которого нет физически, когда процессор обращается не с той шины не в ту область ОЗУ (например с шины BB/BAB во внешнее ОЗУ), ну и т.п., и к DMA прямого отношения не имеет.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th August 2025 - 09:26
Рейтинг@Mail.ru


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