STM32 и USB (практика)

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

Wireshark анализирует пакеты после того, как ядро их уже обработали. Поэтому для низкоуровневой отладки не годится. Только логанализатор.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 и USB (практика)

Сообщение COKPOWEHEU »

Так Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
пытался сделать USB, правда на AVR
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.
Последний раз редактировалось COKPOWEHEU Чт апр 01, 2021 13:06:32, всего редактировалось 1 раз.
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

Ну, ХЗ. Лично у меня основные трудности вызвало именно оперирование с этими дебильными toggle-битами в регистрах STM32, а если их неправильно выставить, получаются битые пакеты или еще какие ошибки, wireshark их никак не отображал.
А вот когда уже с пакетами все было ОК, то и wireshark был уже не нужен: там все совсем уж элементарно.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 и USB (практика)

Сообщение COKPOWEHEU »

Оно может и элементарно, но очень удобно когда показывает какие именно запросы хост посылает и принимает ли ответы. Или, скажем, что в какой-то момент запросы прекращаются.
Реклама
Эиком - электронные компоненты и радиодетали
Wladimir_TS
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Re: STM32 и USB (практика)

Сообщение Wladimir_TS »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4008014#p4008014"]Так Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
пытался сделать USB, правда на AVR
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.[/uquote]

Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128 Задача работа в WimXP, другая система - неможно и точка.

Тип контролера могу глянуть завтра на работе. Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом. При этом устройство в системе не появляется вообще. Никаких ошибок в логах - ничего.

Добавлено after 2 minutes 31 second:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4007981#p4007981"]
Wladimir_TS писал(а):Нет-ли со стороны компа какого-то ПО - которое может смотреть пакеты USB в сырой форме
Воспользуйся saleae logic. Этот логический анализатор китайцы мешками по 3 копейки продают, а ПО оригинальное работает.[/uquote]

Он умеет декодировать USB пакеты на лету ? Я таких пока не встречал. Есть акиповский - он не умеет декодировать USB.
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

[uquote="Wladimir_TS",url="/forum/viewtopic.php?p=4008394#p4008394"]Задача — работа в WinXP, другая система - неможно и точка.[/uquote]
Это что — первоапрельская шутка? Или в психушке день открытых дверей?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Wladimir_TS
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Re: STM32 и USB (практика)

Сообщение Wladimir_TS »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4007988#p4007988"]
По винХП естественно.
Вот будет ли работать на таком - не уверен. Впрочем, никто не мешает установить в дуалбут что-то более современное и удобное для разработки. Да хотя бы Убунту.[/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]

Нет это реальность. :cry:
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 и USB (практика)

Сообщение COKPOWEHEU »

Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128
Это предложение не понял. То есть у вас к m128 прикручен преобразователь чего-то в usb?
Задача работа в WimXP, другая система - неможно и точка.
Нет, тестирование работоспособности в экзотических системах это само собой. Но при разработке-то зачем себя мучить?
Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом.
Что значит "запрос конечных точек"? Если ConfigurationDescriptor передался, то хоть как-то в системе опознаться должно. Хотя в winXP не уверен...
Вы какое устройство вообще эмулируете?
они в XP-то идут со скрипом ибо под DOS писаны.
Виртуальная машина или DOSBox не помогают?
BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
Не исключено, что я в настройках устройства косячил сильнее, так что и BSOD'ы были.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

Про хрюндель - бред какой-то!
Я вообще любую разработку чего угодно, кроме игр, под геймерскую прошивку считаю идиотизмом. А разрабатывать не-игры для прошивки, которая уже лет 15 как deprecated…

Ну есть же современная мастдайка — бубунта называется. Чего бы, коль так линукс не нравится, не работать в этой мастдайке?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 и USB (практика)

Сообщение COKPOWEHEU »

Ну если есть доисторический софт, который на современных ОС не работает, куда деваться? Хотя даже так проще найти не менее антикварный компьютер специально под такие софтины. Даже эмуляторы могут не спасти - если завязка на адреса железа, прерывания и прочие развлечения времен DOS'а.
У нас аналогичная фигня на работе началась: есть древняя плата под ISA шину, на которую часть задач завязана. Плюс когда-то внедрили LabView. И крутится все это на машинке с процессором 600 МГц что ли. Обновлять или хотя бы переустанавливать тамошнюю XP все боятся - а ну как доломается. Сейчас потихоньку переходим на что-то более вменяемое - Debian и автоматизация на Lua. Больше всего сомнений пока вызывает подключение GPIB: как он отображается (должен отображаться) в системе я не знаю.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

Если руки не из задницы, то ничего не мешает переписать все на современный лад!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 и USB (практика)

Сообщение COKPOWEHEU »

Ну вперед, перепишите драйвер под древнюю железяку, от которого нет исходников. Бесплатно, разумеется.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32 и USB (практика)

Сообщение Eddy_Em »

Я этим обычно и занимаюсь.
За зарплату, разумеется.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 и USB (практика)

Сообщение azhel12 »

Коллеги, прошу совета: добавил в свой код возможность отправки данных, размер которых больше буфера (до этого посылал, сколько поместится), включил в аргументы функции отправки третий параметр - callback. Так вот такой вопрос: как лучше (как принято): принимать указатель на функцию или std::function? Во втором случае размер прошивки сразу же увеличивается на ~1,2Кб, использование RAM на ~100Байтов, зато появляется возможность принимать в качестве callback-ов лямбды. Вроде и удобнее, но килобайт тоже на дороге не валяется.

И второй вопрос: как я понял, размер пакета для нулевой EP ограничен снизу, для FS USB 2.0 у меня меньше 16 байтов не работает. Действительно ли есть такое ограничение, или где-то в коде ошибка?

Спасибо!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 и USB (практика)

Сообщение Reflector »

[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); });
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 и USB (практика)

Сообщение azhel12 »

Reflector писал(а):Разве по указателю на функцию нельзя передать лямбду?
Вроде нет, по крайней мере мой g++ выдаёт: cannot convert XXX::<lambda()>' to 'XXX::InTransferCallback' {aka 'void (*)()'}
Reflector писал(а):А так можно передать любую лямбду, не важно какая у нее сигнатура
Спасибо, попробую когда-нибудь. В текущей ситуации не подходит, потому что callback я сохраняю как поле класса (чтобы после передачи последнего куска вызвать).
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 и USB (практика)

Сообщение Reflector »

Нужно сохранять 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();
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 и USB (практика)

Сообщение azhel12 »

Reflector, спасибо большое, разобрался с Вашей помощью. Оказалось, что невозможно привести к указателю на функцию лямбду с захватом (собственно, и код из-за захвата разрастается). Буду думать дальше, сильно ли удобен захват переменных и стоит ли оно того.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 и USB (практика)

Сообщение Reflector »

[uquote="azhel12",url="/forum/viewtopic.php?p=4009904#p4009904"]Оказалось, что невозможно привести к указателю на функцию лямбду с захватом[/uquote]
Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 и USB (практика)

Сообщение azhel12 »

Reflector писал(а):Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Не знал этой особенности.
Ответить

Вернуться в «ARM»