STM32 и USB (практика)
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
Wireshark анализирует пакеты после того, как ядро их уже обработали. Поэтому для низкоуровневой отладки не годится. Только логанализатор.
- Реклама
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 и USB (практика)
Так Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.пытался сделать USB, правда на AVR
Последний раз редактировалось COKPOWEHEU Чт апр 01, 2021 13:06:32, всего редактировалось 1 раз.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
Ну, ХЗ. Лично у меня основные трудности вызвало именно оперирование с этими дебильными toggle-битами в регистрах STM32, а если их неправильно выставить, получаются битые пакеты или еще какие ошибки, wireshark их никак не отображал.
А вот когда уже с пакетами все было ОК, то и wireshark был уже не нужен: там все совсем уж элементарно.
А вот когда уже с пакетами все было ОК, то и wireshark был уже не нужен: там все совсем уж элементарно.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 и USB (практика)
Оно может и элементарно, но очень удобно когда показывает какие именно запросы хост посылает и принимает ли ответы. Или, скажем, что в какой-то момент запросы прекращаются.
-
Wladimir_TS
- Друг Кота
- Сообщения: 5066
- Зарегистрирован: Вс фев 15, 2009 01:04:58
- Откуда: Kaluga
Re: STM32 и USB (практика)
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4008014#p4008014"]Так Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128 Задача работа в WimXP, другая система - неможно и точка.
Тип контролера могу глянуть завтра на работе. Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом. При этом устройство в системе не появляется вообще. Никаких ошибок в логах - ничего.
Добавлено after 2 minutes 31 second:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4007981#p4007981"]
Он умеет декодировать USB пакеты на лету ? Я таких пока не встречал. Есть акиповский - он не умеет декодировать USB.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.[/uquote]пытался сделать USB, правда на AVR
Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128 Задача работа в WimXP, другая система - неможно и точка.
Тип контролера могу глянуть завтра на работе. Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом. При этом устройство в системе не появляется вообще. Никаких ошибок в логах - ничего.
Добавлено after 2 minutes 31 second:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4007981#p4007981"]
Воспользуйся saleae logic. Этот логический анализатор китайцы мешками по 3 копейки продают, а ПО оригинальное работает.[/uquote]Wladimir_TS писал(а):Нет-ли со стороны компа какого-то ПО - которое может смотреть пакеты USB в сырой форме
Он умеет декодировать USB пакеты на лету ? Я таких пока не встречал. Есть акиповский - он не умеет декодировать USB.
- Реклама
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
[uquote="Wladimir_TS",url="/forum/viewtopic.php?p=4008394#p4008394"]Задача — работа в WinXP, другая система - неможно и точка.[/uquote]
Это что — первоапрельская шутка? Или в психушке день открытых дверей?
Это что — первоапрельская шутка? Или в психушке день открытых дверей?
-
Wladimir_TS
- Друг Кота
- Сообщения: 5066
- Зарегистрирован: Вс фев 15, 2009 01:04:58
- Откуда: Kaluga
Re: STM32 и USB (практика)
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4007988#p4007988"]
Неможно - это рабочий комп на котором параллельно крутятся программы по работе, они в XP-то идут со скрипом ибо под DOS писаны. К тому-же *nix слишком сложен для меня. Имел счастье ставить - 2 месяца е....и результат ноль ибо как раз USB не видит. Вообще, а винда любая видит и прекрасно работает.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4007988#p4007988"]Кстати, именно на winXP тестировать USB не рекомендую: одна небольшая ошибка в дескрипторе - и получите BSOD, я такое уже ловил.[/uquote]
BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
Нужно смотреть именно низкоуровневые пакеты что ходят на этапе установления соединения до регистрации устройства в системе.
Добавлено after 4 minutes 26 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4008395#p4008395"][uquote="Wladimir_TS",url="/forum/viewtopic.php?p=4008394#p4008394"]Задача — работа в WinXP, другая система - неможно и точка.[/uquote]
Это что — первоапрельская шутка? Или в психушке день открытых дверей?[/uquote]
Нет это реальность.
Вот будет ли работать на таком - не уверен. Впрочем, никто не мешает установить в дуалбут что-то более современное и удобное для разработки. Да хотя бы Убунту.[/uquote]По винХП естественно.
Неможно - это рабочий комп на котором параллельно крутятся программы по работе, они в XP-то идут со скрипом ибо под DOS писаны. К тому-же *nix слишком сложен для меня. Имел счастье ставить - 2 месяца е....и результат ноль ибо как раз USB не видит. Вообще, а винда любая видит и прекрасно работает.
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4007988#p4007988"]Кстати, именно на winXP тестировать USB не рекомендую: одна небольшая ошибка в дескрипторе - и получите BSOD, я такое уже ловил.[/uquote]
BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
Нужно смотреть именно низкоуровневые пакеты что ходят на этапе установления соединения до регистрации устройства в системе.
Добавлено after 4 minutes 26 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4008395#p4008395"][uquote="Wladimir_TS",url="/forum/viewtopic.php?p=4008394#p4008394"]Задача — работа в WinXP, другая система - неможно и точка.[/uquote]
Это что — первоапрельская шутка? Или в психушке день открытых дверей?[/uquote]
Нет это реальность.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 и USB (практика)
Это предложение не понял. То есть у вас к m128 прикручен преобразователь чего-то в usb?Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128
Нет, тестирование работоспособности в экзотических системах это само собой. Но при разработке-то зачем себя мучить?Задача работа в WimXP, другая система - неможно и точка.
Что значит "запрос конечных точек"? Если ConfigurationDescriptor передался, то хоть как-то в системе опознаться должно. Хотя в winXP не уверен...Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом.
Вы какое устройство вообще эмулируете?
Виртуальная машина или DOSBox не помогают?они в XP-то идут со скрипом ибо под DOS писаны.
Не исключено, что я в настройках устройства косячил сильнее, так что и BSOD'ы были.BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
Про хрюндель - бред какой-то!
Я вообще любую разработку чего угодно, кроме игр, под геймерскую прошивку считаю идиотизмом. А разрабатывать не-игры для прошивки, которая уже лет 15 как deprecated…
Ну есть же современная мастдайка — бубунта называется. Чего бы, коль так линукс не нравится, не работать в этой мастдайке?
Я вообще любую разработку чего угодно, кроме игр, под геймерскую прошивку считаю идиотизмом. А разрабатывать не-игры для прошивки, которая уже лет 15 как deprecated…
Ну есть же современная мастдайка — бубунта называется. Чего бы, коль так линукс не нравится, не работать в этой мастдайке?
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 и USB (практика)
Ну если есть доисторический софт, который на современных ОС не работает, куда деваться? Хотя даже так проще найти не менее антикварный компьютер специально под такие софтины. Даже эмуляторы могут не спасти - если завязка на адреса железа, прерывания и прочие развлечения времен DOS'а.
У нас аналогичная фигня на работе началась: есть древняя плата под ISA шину, на которую часть задач завязана. Плюс когда-то внедрили LabView. И крутится все это на машинке с процессором 600 МГц что ли. Обновлять или хотя бы переустанавливать тамошнюю XP все боятся - а ну как доломается. Сейчас потихоньку переходим на что-то более вменяемое - Debian и автоматизация на Lua. Больше всего сомнений пока вызывает подключение GPIB: как он отображается (должен отображаться) в системе я не знаю.
У нас аналогичная фигня на работе началась: есть древняя плата под ISA шину, на которую часть задач завязана. Плюс когда-то внедрили LabView. И крутится все это на машинке с процессором 600 МГц что ли. Обновлять или хотя бы переустанавливать тамошнюю XP все боятся - а ну как доломается. Сейчас потихоньку переходим на что-то более вменяемое - Debian и автоматизация на Lua. Больше всего сомнений пока вызывает подключение GPIB: как он отображается (должен отображаться) в системе я не знаю.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
Если руки не из задницы, то ничего не мешает переписать все на современный лад!
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: STM32 и USB (практика)
Ну вперед, перепишите драйвер под древнюю железяку, от которого нет исходников. Бесплатно, разумеется.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 и USB (практика)
Я этим обычно и занимаюсь.
За зарплату, разумеется.
За зарплату, разумеется.
Re: STM32 и USB (практика)
Коллеги, прошу совета: добавил в свой код возможность отправки данных, размер которых больше буфера (до этого посылал, сколько поместится), включил в аргументы функции отправки третий параметр - callback. Так вот такой вопрос: как лучше (как принято): принимать указатель на функцию или std::function? Во втором случае размер прошивки сразу же увеличивается на ~1,2Кб, использование RAM на ~100Байтов, зато появляется возможность принимать в качестве callback-ов лямбды. Вроде и удобнее, но килобайт тоже на дороге не валяется.
И второй вопрос: как я понял, размер пакета для нулевой EP ограничен снизу, для FS USB 2.0 у меня меньше 16 байтов не работает. Действительно ли есть такое ограничение, или где-то в коде ошибка?
Спасибо!
И второй вопрос: как я понял, размер пакета для нулевой EP ограничен снизу, для FS USB 2.0 у меня меньше 16 байтов не работает. Действительно ли есть такое ограничение, или где-то в коде ошибка?
Спасибо!
Re: STM32 и USB (практика)
[uquote="azhel12",url="/forum/viewtopic.php?p=4009834#p4009834"]Так вот такой вопрос: как лучше (как принято): принимать указатель на функцию или std::function? Во втором случае размер прошивки сразу же увеличивается на ~1,2Кб, использование RAM на ~100Байтов, зато появляется возможность принимать в качестве callback-ов лямбды.[/uquote]
Разве по указателю на функцию нельзя передать лямбду?
А так можно передать любую лямбду, не важно какая у нее сигнатура:
Разве по указателю на функцию нельзя передать лямбду?
Код: Выделить всё
using FP = void(*)(const char*, int);
void foo(FP f) { f("Hello", 123); }
foo([](const char* s, int val) { rtt.println(s, val); });
Код: Выделить всё
void foo(auto f) { f("Hello", 123); }
foo([](auto s, auto val) { rtt.println(s, val); });
Re: STM32 и USB (практика)
Вроде нет, по крайней мере мой g++ выдаёт: cannot convert XXX::<lambda()>' to 'XXX::InTransferCallback' {aka 'void (*)()'}Reflector писал(а):Разве по указателю на функцию нельзя передать лямбду?
Спасибо, попробую когда-нибудь. В текущей ситуации не подходит, потому что callback я сохраняю как поле класса (чтобы после передачи последнего куска вызвать).Reflector писал(а):А так можно передать любую лямбду, не важно какая у нее сигнатура
Re: STM32 и USB (практика)
Нужно сохранять callback как поле класса?
Код: Выделить всё
using FP = void(*)(int);
class Bar
{
public:
Bar(FP f, int arg) : f(f), arg(arg) {}
void print() { f(arg); }
private:
FP f;
int arg;
};
Bar bar([](int val) { rtt.println(val); }, 555);
bar.print();
Re: STM32 и USB (практика)
Reflector, спасибо большое, разобрался с Вашей помощью. Оказалось, что невозможно привести к указателю на функцию лямбду с захватом (собственно, и код из-за захвата разрастается). Буду думать дальше, сильно ли удобен захват переменных и стоит ли оно того.
Re: STM32 и USB (практика)
[uquote="azhel12",url="/forum/viewtopic.php?p=4009904#p4009904"]Оказалось, что невозможно привести к указателю на функцию лямбду с захватом[/uquote]
Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Re: STM32 и USB (практика)
Не знал этой особенности.Reflector писал(а):Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.


