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

 
 
 
Reply to this topicStart new topic
> Отловить причину oveerun error на USART SAM7X
Dron_Gus
сообщение Dec 14 2007, 12:13
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Собственно сабж. К USART1 AT91SAM7X256 подключен модем SIM508. В моменты большой нагрузки (прием большого объема данных по GPRS) случается overrun. Порт работает на 115200, обработчик прерывания короткий - запись в кольцевой буфер. Кроме того из прерываний крутится еще один обработчик USART0 и FreeRTOS'овский шулдер на PIT. Все остальное крутиться без прерываний. Отключение всего что можно отключить результатов не дало. Дело осложныется наличием PowerPack FS в виде библиотеки, и что она там внутри делает непонятно. Может она запрещает прерывания и надолго.



Может быть есть какие-то стандартные методы отлавливания таких глюков? Сам уже несколько дней с этим бьюсь...



Пытался только что отловить момент взведения бита overrun с помошью "железной" watchpoint. Не прокатило. Похоже они отлавливают только обращения со стороны ядра... sad.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2007, 12:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Dron_Gus @ Dec 14 2007, 15:13) *
Порт работает на 115200, обработчик прерывания короткий - запись в кольцевой буфер.

А на PDC его завести? FIFO нет, а без него по прерываниям работать ну оч. плохо.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 14 2007, 12:30
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Можно и на PDC. Но тогда вылезают проблемы с определением конца строки. Сканировать весь буфер и выкусывать оттуда строки - лишняя потеря времени.
Все же хочется отловить этот глюк.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2007, 12:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Dron_Gus @ Dec 14 2007, 15:30) *
Можно и на PDC. Но тогда вылезают проблемы с определением конца строки. Сканировать весь буфер и выкусывать оттуда строки - лишняя потеря времени.

ИМХО, это не лишняя потеря времени, а единственно верный путь smile.gif
Можно просто перебрасывать в уже имеющийся кольцевой буфер данные из PDC, при этом менять обработку не придется.

Цитата(Dron_Gus @ Dec 14 2007, 15:30) *
Все же хочется отловить этот глюк.

"Глюком" может быть запрет прерываний на время больше 174uS. Ловить будет трудновато, особенно учитывая наличие чужого кода.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 14 2007, 12:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Спасибо, судя по всему Вы правы. Перевесил прерывание на FIQ (хорошо звучит smile.gif ) проблемма не исчезла. Похоже прерывания запрешаются "по полной".


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 07:12
Рейтинг@Mail.ru


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