|
STM32 OTG USB проблема с отладкой |
|
|
|
Feb 21 2017, 07:35
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757

|
Проц STM32F411RE. Сгенерил в кубе и собрал в кейле пример виртуального ком-порта (CDC класс). Все работает. Когда пытаюсь добавить в код вывод отладки через UART, все разваливается. Просто добавляю в начало обработчика OTG_USB_IRQHandler строку UARTPrint("\r\n---USB_IRQHandler") и после этого в терминале вижу бесконечно только эту стоку и само устройство перестает определяться. Скорость UART 115200. До этого всегда делал отладку по этому принципу и для silabs и для SAM7, никогда она не мешала. В STM32 USB имеет какие-то критичные тайм-ауты? ---------- Продолжение --------------------- Через отладчик выяснил, что USB контроллер завален прерываниями. Например код обработки CODE /* Handle Connection event Interrupt */ if(__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) { HAL_PCD_ConnectCallback(hpcd); __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); } Это прерывание сыплется непрерывно. Дефайн __HAL_PCD_CLEAR_FLAG определен как CODE #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__)) Если упростить, получится CODE GINTSTS &= 0x40000000; Но ведь для сброса флага прерывания в него надо записывать "1" ???? Т.е. делать так: CODE GINTSTS |= 0x40000000; И так "сбрасываются" все биты прерываний в регистре GINTSTS. Как вообще эти примеры оказываются работоспособными???
Сообщение отредактировал Chameleon - Feb 21 2017, 12:18
|
|
|
|
|
 |
Ответов
|
Feb 22 2017, 13:02
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Forger @ Feb 22 2017, 14:38)  Короче, далее бейтесь о стену уже без моей помощи - все, чем я мог помочь, тут уже прозвучало и неоднократно и не только от меня. Удачи  Вы всё обещаете, но никак не уходите. Помощи от вас никакой, только тему засоряете. Автор темы давно убрал глухой цикл из прерывания, а вы продолжаете ему твердить про это. Вообще, я первый раз такое вижу - "HAL не пробовал, но он прекрасен". Этакое "Рабинович напел" наоборот. Цитата(Chameleon @ Feb 22 2017, 14:52)  Посмотрите настройки флеша. wait-states, ART prefetch. Если у вас старая ревизия контроллера (какой кстати контроллер?), то там были баги в ART prefetch. Возможно, куб включает ART безусловно, и проблема в этом.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 22 2017, 13:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(AHTOXA @ Feb 22 2017, 16:02)  Помощи от вас никакой, только тему засоряете. Да не расстраивайтесь вы так за ТС, он не маленький, сам разберется, хоть и не сразу ... Цитата Автор темы давно убрал глухой цикл из прерывания, а вы продолжаете ему твердить про это. © "Читаю книгу, а вижу фигу" Внимательнее читайте порядок действий, которые я уже неоднократно приводил для ТС. Продублирую: Цитата(Forger @ Feb 21 2017, 16:54)  Нужно, точно локализовать источник косяка. Пока что все упирается в вашу функцию. Копайте в этом направлении. Например, подряд в основном коде вызвать ее несколько раз или более радикально - гонять в бесконечном цикле, но не в прерываниях. Цитата(Forger @ Feb 22 2017, 12:11)  Вижу простое решение: отладить это чудо-код на ПУСТОМ проекте, добиться от него стабильной работы в разных ситуациях (банально тесты), и уже только после этого куда-то сувать. Цитата(Forger @ Feb 22 2017, 12:38)  А что делает тут USB? Короче, ПУСТОЙ НОВЫЙ проект только для того, чтобы отладить ваши несчастные костыльные функции. Добейтесь тут от них нормальной работы в ПУСТОМ проекте. Поиграйтесь с размером стека (например). В конце концов, сделайте нормальный функционал БЕЗ поллинга! Может еще нужно разжевать до косточек и написать проект за самого ТС??? Цитата Вообще, я первый раз такое вижу - "HAL не пробовал, но он прекрасен". Этакое "Рабинович напел" наоборот. Не пойму, какое отношение подобные домыслы имеют к этой теме и ко мне лично? Я пользуюсь HAL (ранее SPL), ничего дурного в этом не вижу. Но без соотв. тестов слепо доверять бесплатному чужому коду тоже не стану.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Feb 22 2017, 14:44
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Forger @ Feb 22 2017, 18:23)  Внимательнее читайте порядок действий, которые я уже неоднократно приводил для ТС. Продублирую: То есть, для отладки USB вы предлагаете выбросить USB? Ну, нормально, да. То-то автор темы так оценил вашу помощь. Цитата(Forger @ Feb 22 2017, 18:23)  Не пойму, какое отношение подобные домыслы имеют к этой теме и ко мне лично? Я пользуюсь HAL (ранее SPL), ничего дурного в этом не вижу. Но без соотв. тестов слепо доверять бесплатному чужому коду тоже не стану. Я имел в виду куб, не думал, что есть разница между HAL и кубом. Вот та цитата, от которой я отталкивался: Цитата(Forger @ Feb 20 2017, 19:16)  Я сам лично не пользуюсь кубом и пока не планирую, но и отговаривать от этого новичков не стану.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 22 2017, 15:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(AHTOXA @ Feb 22 2017, 17:44)  То есть, для отладки USB вы предлагаете выбросить USB? Ну, нормально, да. То-то автор темы так оценил вашу помощь. И откуда ж вы такие умные беретесь, а? Для начала хорошенько почитайте тему. Кратко для ленивых: проблема в данном случае вовсе не в CUBE/HAL/USB, а т.н. user-коде. Без самодеятельности ТС все там работает (с его же слов). Цитата Я имел в виду куб, не думал, что есть разница между HAL и кубом. Ну, коли вы не видите разницу между красным и мокрым, то сначала изучите матчасть, перед тем, как кидать кирпичи.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Feb 22 2017, 15:49
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Chameleon @ Feb 22 2017, 20:06)  Ревизия проца A. Две штуки. Взял вторую плату, китайский клон Nucleo. А какой проц-то? В F405/407/415/417 - ART не рабочий в ревизии A. Если куб его включает, то причина вылетов может быть в этом. Кроме того, проверьте частоту, на которую вы настроили PLL. Правильно ли задана частота кварца. Цитата(Forger @ Feb 22 2017, 20:02)  И откуда ж вы такие умные беретесь, а? Для начала хорошенько почитайте тему. Кратко для ленивых: проблема в данном случае вовсе не в CUBE/HAL/USB, а т.н. user-коде. Без самодеятельности ТС все там работает (с его же слов). Я вообще-то высказывался не против CUBE/HAL/USB, а против вашего способа "помогать" автору темы. Вы не помогаете. Вы чешете своё ЧСВ. Цитата(Forger @ Feb 22 2017, 20:02)  Ну, коли вы не видите разницу между красным и мокрым Разницу вижу. Повторюсь: я имел в виду куб. Вы, не пользуясь кубом, тем не менее уверены, что проблема в пользовательском коде. Вот это я и имел в виду под тезисом "анти-Рабинович напел".
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
Chameleon STM32 OTG USB проблема с отладкой Feb 21 2017, 07:35 Forger Цитата(Chameleon @ Feb 21 2017, 10:35) UA... Feb 21 2017, 12:18 Chameleon QUOTE (Forger @ Feb 21 2017, 15:18) Нельз... Feb 21 2017, 12:28  Forger Цитата(Chameleon @ Feb 21 2017, 15:28) Пр... Feb 21 2017, 12:30   Chameleon QUOTE (Forger @ Feb 21 2017, 15:30) Если ... Feb 21 2017, 12:37    Forger Цитата(Chameleon @ Feb 21 2017, 15:37) Пр... Feb 21 2017, 12:45     aaarrr Цитата(Forger @ Feb 21 2017, 15:45) Все я... Feb 21 2017, 12:54     Chameleon QUOTE (Forger @ Feb 21 2017, 15:45) Это н... Feb 21 2017, 12:55      Forger Цитата(Chameleon @ Feb 21 2017, 15:55) Я ... Feb 21 2017, 13:06       Chameleon QUOTE (Forger @ Feb 21 2017, 16:06) А без... Feb 21 2017, 13:15        jcxz Цитата(Chameleon @ Feb 21 2017, 19:15) UA... Feb 21 2017, 13:18         Chameleon QUOTE (jcxz @ Feb 21 2017, 16:18) Вы теле... Feb 21 2017, 13:21          jcxz Цитата(Chameleon @ Feb 21 2017, 19:21) См... Feb 21 2017, 15:42 jcxz Цитата(Forger @ Feb 21 2017, 18:18) Нельз... Feb 21 2017, 13:12  Forger Цитата(jcxz @ Feb 21 2017, 16:12) А как В... Feb 21 2017, 13:32   Chameleon QUOTE (Forger @ Feb 21 2017, 16:32) Богат... Feb 21 2017, 13:40    Forger Цитата(Chameleon @ Feb 21 2017, 16:40) У ... Feb 21 2017, 13:43     Chameleon QUOTE (Forger @ Feb 21 2017, 16:43) Если ... Feb 21 2017, 13:52      Forger Цитата(Chameleon @ Feb 21 2017, 16:52) US... Feb 21 2017, 13:54      A.Lex Цитата(Chameleon @ Feb 21 2017, 15:52) US... Feb 21 2017, 14:10     Chameleon QUOTE (Forger @ Feb 21 2017, 16:43) Если ... Feb 21 2017, 14:18      Forger Цитата(Chameleon @ Feb 21 2017, 17:18) На... Feb 21 2017, 14:25       Chameleon А тогда чего вы полезли на STM32, коли на sam4s вс... Feb 21 2017, 14:49        Forger Цитата(Chameleon @ Feb 21 2017, 17:49) А ... Feb 21 2017, 14:58         Chameleon В таком случае все же придется изучать матчасть и ... Feb 21 2017, 15:08        Forger Цитата(Chameleon @ Feb 21 2017, 17:49) Ко... Feb 21 2017, 15:13         Chameleon QUOTE (Forger @ Feb 21 2017, 18:13) Коли ... Feb 21 2017, 15:21          Forger Цитата(Chameleon @ Feb 21 2017, 18:21) Я ... Feb 21 2017, 15:31           Chameleon В основном коде ВНЕ прерываний эта функция работае... Feb 21 2017, 15:46            Forger Цитата(Chameleon @ Feb 21 2017, 18:46) Пр... Feb 21 2017, 16:32             Chameleon Чем дальше в лес, тем толще партизаны.
Сделал отл... Feb 22 2017, 04:53              Forger Цитата(Forger @ Feb 21 2017, 18:31) Прави... Feb 22 2017, 05:50               Chameleon QUOTE (Forger @ Feb 22 2017, 08:50) Покаж... Feb 22 2017, 06:14                Forger Я имел ввиду другое, гораздо более грамотное решен... Feb 22 2017, 06:49                 Chameleon QUOTE (Forger @ Feb 22 2017, 09:49) Я име... Feb 22 2017, 08:18                  Forger Цитата(Chameleon @ Feb 22 2017, 11:18) Па... Feb 22 2017, 08:27                   Chameleon QUOTE (Forger @ Feb 22 2017, 11:27) Мля, ... Feb 22 2017, 08:33              jcxz Цитата(Chameleon @ Feb 22 2017, 10:53) Че... Feb 22 2017, 10:53               Forger Цитата(jcxz @ Feb 22 2017, 13:53) И тогда... Feb 22 2017, 10:57         jcxz Цитата(Forger @ Feb 21 2017, 21:13) Кстат... Feb 21 2017, 15:49          Chameleon QUOTE (jcxz @ Feb 21 2017, 18:49) Если че... Feb 21 2017, 16:25 esaulenka Цитата(Chameleon @ Feb 21 2017, 10:35) Де... Feb 22 2017, 08:43 Forger Цитата(esaulenka @ Feb 22 2017, 11:43) Ко... Feb 22 2017, 09:11  Chameleon QUOTE (Forger @ Feb 22 2017, 12:11) Вижу ... Feb 22 2017, 09:20   Forger Цитата(Chameleon @ Feb 22 2017, 12:20) Сп... Feb 22 2017, 09:38    Chameleon QUOTE (Forger @ Feb 22 2017, 12:38) А что... Feb 22 2017, 09:52     Forger Цитата(Chameleon @ Feb 22 2017, 12:52) Вы... Feb 22 2017, 10:42  esaulenka Цитата(Forger @ Feb 22 2017, 12:11) Не на... Feb 22 2017, 11:07   Forger Цитата(esaulenka @ Feb 22 2017, 14:07) По... Feb 22 2017, 11:23 uriy Вероятно надо использовать HAL_UART_Transmit_IT ил... Feb 22 2017, 08:59     Forger Цитата(AHTOXA @ Feb 22 2017, 18:49) Разни... Feb 22 2017, 16:04      Chameleon QUOTE А какой проц-то? В F405/407/415/417 - ART не... Feb 22 2017, 16:25       Forger Цитата(Chameleon @ Feb 22 2017, 19:25) На... Feb 22 2017, 16:35   Chameleon Ревизия проца A. Две штуки. Взял вторую плату, кит... Feb 22 2017, 15:06    Forger Цитата(Chameleon @ Feb 22 2017, 18:06) Сд... Feb 22 2017, 15:15 Thorn Руководство по поиску причины HardFault Feb 22 2017, 15:37 AHTOXA Цитата(Chameleon @ Feb 22 2017, 21:25) UA... Feb 22 2017, 16:40 Forger Цитата(AHTOXA @ Feb 22 2017, 19:40) Всё д... Feb 22 2017, 16:44  AHTOXA Цитата(Forger @ Feb 22 2017, 21:44) Внутр... Feb 22 2017, 17:49   Forger Цитата(AHTOXA @ Feb 22 2017, 20:49) Стек ... Feb 22 2017, 17:59    Chameleon QUOTE (Forger @ Feb 22 2017, 20:59) Именн... Feb 23 2017, 06:49     Forger Цитата(Chameleon @ Feb 23 2017, 09:49)
В... Feb 23 2017, 07:31 Chameleon Все, нашел.
Куб в коде выставляет в USBD_LL_Init(... Feb 23 2017, 10:36 Forger Цитата(Chameleon @ Feb 23 2017, 13:36) И ... Feb 23 2017, 10:47  Chameleon Внутри MX_USB_DEVICE_Init() и есть настройка
hpcd... Feb 23 2017, 11:03   Forger Цитата(Chameleon @ Feb 23 2017, 14:03) Вн... Feb 23 2017, 13:29    Timmy Цитата(Forger @ Feb 23 2017, 16:29) Впроч... Feb 28 2017, 04:08     Obam Цитата(Timmy @ Feb 28 2017, 08:08) Чтобы ... Feb 28 2017, 08:25 Obam Гы-гы-гы, повеселили!
5 страниц увлекательного... Feb 23 2017, 11:16 rudy_b Ага, у меня уже даже привычка появилась. Сначала г... Feb 27 2017, 10:06
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|