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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> scmRTOS+usb-device, минимальный проект не работает
Legath
сообщение Nov 2 2012, 13:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Добрый день.
Как я обмолвился в соседней теме, хочу создать устройство комбинированного локатора которое взаимодействует с ПК посредством usb.
За основу взял шаблон проекта usb cdc из набора с сайта st. недостающие файлы (usbd_desc.c usbd_desc.h usbd_usr.c ) взял оттуда же, из демонстрации. Функции инициализации не менял.
Но при подключении к ПК в dmesg упоминаний нет. Грешу на то, что конфликтует инициализация, т.к. она от ОС. Подскажите в какую сторону начать отладку?
В отладчике пока не могу посмотреть, st-util не прошивает файл больше 40кб, openocd не работает с eclipse из-за ошибки в тулчейне.
Разъем исправен точно, проверял демонстрационной прошивкой. В проекте есть лишние файлы для host библиотеки, они выключены из сборки в eclipse.

Сообщение отредактировал Legath - Nov 2 2012, 13:54
Прикрепленные файлы
Прикрепленный файл  usb.tar.gz ( 463.7 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 2 2012, 17:15
Сообщение #2


фанат дивана
******

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



А программа-то работает вообще? Лампочкой, например, мигает?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 2 2012, 18:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Нет, шим не генерируется
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 2 2012, 18:44
Сообщение #4


фанат дивана
******

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



Что-то я не вижу обработчика прерывания USB (OTG_FS_IRQHandler()).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 5 2012, 16:35
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Добавил обработчик со следующим текстом
Код
void OTG_FS_IRQHandler(void)
{
  USBD_OTG_ISR_Handler (&USB_OTG_dev);
}


Шим генерируется, но usb не инициализируется. в dmesg нет упоминания. и в прерывание по usb не уходит.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 5 2012, 16:40
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Legath @ Nov 5 2012, 18:35) *
Добавил обработчик со следующим текстом
Шим генерируется, но usb не инициализируется. в dmesg нет упоминания. и в прерывание по usb не уходит.

А куда уходит?
Флаги прерывания устанавливаются? Или usb совсем не проинициализирован?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 5 2012, 17:09
Сообщение #7


фанат дивана
******

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



На всякий случай напомню, что в cpp-файлах обработчик прерывания должен быть объявлен как
Код
extern "C" void OTG_FS_IRQHandler(void)
{
...

Сравните процедуры инициализации (init_clocks() в sysinit.cpp и SetSysClock() в system_stm32f4xx.c). Убедитесь, что частоты совпадают (что частота USB правильная).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 5 2012, 17:13
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Nov 5 2012, 19:09) *
На всякий случай напомню, что в cpp-файлах обработчик прерывания должен быть объявлен как
Код
extern "C" void OTG_FS_IRQHandler(void)
{
...

В STM-ских хидерах С++ не поддержан?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 5 2012, 18:01
Сообщение #9


фанат дивана
******

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



Нет, не поддержан.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 5 2012, 19:23
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Extern не нужен, обработчик в C файле. Процедуры инициализации почти одинаковые и , насколько вижу, USB не затрагивают.
Не может быть из-за того что USB_OTG_BSP_EnableInterrupt пустая? Прерывание получается не прописано.

А слона то я и не заметил, USB_OTG_BSP_Init не перетащил из примера/

Но чего то все еще не хватает.

Сообщение отредактировал Legath - Nov 5 2012, 20:19
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 6 2012, 11:03
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Получил заветную строку
usb 3-1: new full speed USB device number 11 using ohci_hcd

Дело было в void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev) , ID pin неправильно инициализировал.

Но устройство в /dev не появляется. Буду разбираться дальше.

UPD: выставил гарантированно работающие VID/PID - результата нет.

П.С. заранее прошу прощения за то что превратил тему в блог

Сообщение отредактировал Legath - Nov 6 2012, 13:45
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 6 2012, 14:36
Сообщение #12


фанат дивана
******

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



Цитата(Legath @ Nov 6 2012, 17:03) *
П.С. заранее прошу прощения за то что превратил тему в блог

Ничего-ничего, нам тоже интересно, мы все за вас болеемsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 19 2012, 12:52
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Вновь занялся проблемой, раскопал что ядро отвергает устройство с ошибкой 110 (ETIMEDOUT - Connection timed out ). Посему делаю вывод что при подключении что то не отсылается.

upd: что странно, если запускать в отладчике то все работает.

разрешил idle hook с телом __NOP() и девайс определился, вечером буду проверять на работу с данными.

Сообщение отредактировал Legath - Nov 19 2012, 13:38
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 19 2012, 14:35
Сообщение #14


фанат дивана
******

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



idle hook с телом __NOP() - это даже не шаманство, это чистое плацебоsm.gif
Я в том смысле, что это абсолютно ничего не меняет в работе оси. Вспоминайте, что ещё поменяли вместе с этим хуком.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Nov 20 2012, 04:59
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



так без него то не работает. сам в шоке был когда заметил.
Go to the top of the page
 
+Quote Post

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

 


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


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