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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Слетает прерывание UART при работающем LWIP, плата Freescale FRDM-K64F
asm_lock
сообщение Mar 30 2016, 07:51
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Здравствуйте Уважаемые коллеги!!!
Возникла такая вот проблема.
Когда подключен сетевой кабель и происходит обмен данными по UART'у, через какое то время запрещается прерывание этого UART'а.
Если сетевой кабель не подключен, то UART работает без глюков.

Из-за чего происходит запрет прерывания ?

Заранее всем спасибо.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 30 2016, 08:15
Сообщение #2


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

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Могу предположить случайный проезд по памяти.

Точка останова на доступ к памяти может помочь, если есть возможность под отладчиком воспроизвести.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 30 2016, 08:29
Сообщение #3


Гуру
******

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



Цитата(asm_lock @ Mar 30 2016, 13:51) *
Если сетевой кабель не подключен, то UART работает без глюков.
Из-за чего происходит запрет прерывания ?

На 99.(9)% из-за багов в Вашем коде, но никак не из-за самого UART.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 30 2016, 08:30
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(ataradov @ Mar 30 2016, 12:15) *
Могу предположить случайный проезд по памяти.

Точка останова на доступ к памяти может помочь, если есть возможность под отладчиком воспроизвести.


Я тоже так думаю. т.к. иногда отладчик ругается что не может прочитать память....
Просто часть прогарммы то работает, плата по сети пингуется...обмен по lwip происходит (снифером посмотрел)...отправка данных по злосчастному уарту идет но ни чего не принимает....
Как с этим бороться ?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 30 2016, 08:32
Сообщение #5


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

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (asm_lock @ Mar 30 2016, 01:30) *
Как с этим бороться ?
Ну так если отладчик есть, то поставить точку останова на запись в этот регистр. Там и видно будет, кто его выключает.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 30 2016, 08:35
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(ataradov @ Mar 30 2016, 12:32) *
Ну так если отладчик есть, то поставить точку останова на запись в этот регистр. Там и видно будет, кто его выключает.

Запись в какой регистр ????

Я сейчас пере инициализацию уарта поставил если прерывание будет запрещено...посмотрим как оно зафурычит..

Кстати, отлаживаю под eclipse (KDS_3.0.0)....там хрен что посмотришь....

ЗЫ: в NXP Community прочитал что при отладке, встроенный в плату J-Link подглючивает....память там не читает и т.д....

Сообщение отредактировал asm_lock - Mar 30 2016, 08:40
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 30 2016, 08:41
Сообщение #7


Гуру
******

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



Цитата(ataradov @ Mar 30 2016, 14:15) *
Могу предположить случайный проезд по памяти.
Точка останова на доступ к памяти может помочь, если есть возможность под отладчиком воспроизвести.

Фразу "происходит запрет прерывания" в контексте данного топика не следует воспринимать буквально как "самопроизвольно снимается бит разрешения прерывания по событию опустошения или заполнения FIFO UART". Это исходя из формулировки вопроса.
Речь может идти от чего угодно, вплоть от банального переполнения стека или разрушения каких структур в памяти и улёта куда угодно, до как Вы указали - записи в управляющие регистры периферии, но не конкретный регистр, а какие угодно - от любого регистра конфигурирования UART, до регистров разрешения тактирования или питания UART либо любых других.
Так что бряк на доступ к памяти вряд-ли поможет.

Цитата(asm_lock @ Mar 30 2016, 14:30) *
Я тоже так думаю. т.к. иногда отладчик ругается что не может прочитать память....

Вот и подтверждение моих слов. sm.gif
Эта фраза отладчика расшифровывается как "не могу прочитать некие регистры периферии так как их тактирование (или питание) отключено через соответствующие биты конфигурации тактирования/питания".
Возможно у Вас происходит перезапуск ПО устройства с переинициализацией всей периферии, а Вы этого даже не замечаете. Поставьте бряк на начало main().

PS: Совет - первым делом проверьте все стеки на предмет переполнения. И ищите баги в ПО методом исключения.
Go to the top of the page
 
+Quote Post
asm_lock
сообщение Mar 30 2016, 08:48
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 30-01-09
Из: СПб
Пользователь №: 44 178



Цитата(jcxz @ Mar 30 2016, 12:41) *
Вот и подтверждение моих слов. sm.gif
Эта фраза отладчика расшифровывается как "не могу прочитать некие регистры периферии так как их тактирование (или питание) отключено через соответствующие биты конфигурации тактирования/питания".
Возможно у Вас происходит перезапуск ПО устройства с переинициализацией всей периферии, а Вы этого даже не замечаете. Поставьте бряк на начало main().

PS: Совет - первым делом проверьте все стеки на предмет переполнения. И ищите баги в ПО методом исключения.



Бряк стоит...в том то и дело...перезапуска не происходит. Крутимся в wile'.....
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 30 2016, 08:49
Сообщение #9


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(asm_lock @ Mar 30 2016, 11:35) *
Запись в какой регистр ????

ЗЫ: в NXP Community прочитал что при отладке, встроенный в плату J-Link подглючивает....память там не читает и т.д....


Смотреть надо регистр UARTx_C2.
Еще изменения в SIM модуле могут вызвать остановку работы UART: SIM_SOPT5, SIM_SCGCx..

Подглючивают любые отладчики если нарушить систему тактирования.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 30 2016, 08:52
Сообщение #10


Гуру
******

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



Цитата(asm_lock @ Mar 30 2016, 14:48) *
Бряк стоит...в том то и дело...перезапуска не происходит. Крутимся в wile'.....

Если есть подозрения на несанкционированные записи в регистры конфигурации UART, то это можно отловить с помощью MPU, закрыв от записи соответствующий регион адресов.
Да заодно закрыть с помощью MPU и регион регистров управления системы тактирования и питания.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 30 2016, 08:54
Сообщение #11


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Mar 30 2016, 11:52) *
Если есть подозрения на несанкционированные записи в регистры конфигурации UART, то это можно отловить с помощью MPU, закрыв от записи соответствующий регион адресов.


MPU не для этого.
У Kinetis есть специальный для этого блок - Peripheral Bridge (AIPS-Lite)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 30 2016, 08:55
Сообщение #12


Гуру
******

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



Цитата(AlexandrY @ Mar 30 2016, 14:54) *
MPU не для этого.
У Kinetis есть специальный для этого блок - Peripheral Bridge (AIPS-Lite)

Раз это Cortex-M, то MPU и для этого тоже можно использовать. Автору важно получить исключение при попытке записи в отслеживаемые адреса памяти. И узнать источник. MPU это позволяет.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 30 2016, 08:58
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Mar 30 2016, 11:55) *
Раз это Cortex-M, то MPU и для этого тоже можно использовать. Автору важно получить исключение при попытке записи в отслеживаемые адреса памяти. И узнать источник. MPU это позволяет.


Нет. Почитайте как устроен MPU у Kinetis.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 30 2016, 09:01
Сообщение #14


Гуру
******

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



Цитата(AlexandrY @ Mar 30 2016, 14:58) *
Нет. Почитайте как устроен MPU у Kinetis.

Он устроен не как в других Cortex-M??? хм.... MPU вроде входит в ядро Cortex-M и должен быть устроен одинаково у всех.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 30 2016, 09:16
Сообщение #15


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Mar 30 2016, 12:01) *
Он устроен не как в других Cortex-M??? хм.... MPU вроде входит в ядро Cortex-M и должен быть устроен одинаково у всех.


MPU в Cortex-M это только опция.
В Kinetis есть свой более умный MPU , но он не для обсуждаемой цели.
Go to the top of the page
 
+Quote Post

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

 


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


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