Кто любит RISC в жизни, заходим, не стесняемся.
Чт апр 01, 2021 09:07:29
Wireshark анализирует пакеты после того, как ядро их уже обработали. Поэтому для низкоуровневой отладки не годится. Только логанализатор.
Чт апр 01, 2021 09:51:14
Так
Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
пытался сделать USB, правда на AVR
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть
статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.
Последний раз редактировалось
COKPOWEHEU Чт апр 01, 2021 13:06:32, всего редактировалось 1 раз.
Чт апр 01, 2021 12:39:51
Ну, ХЗ. Лично у меня основные трудности вызвало именно оперирование с этими дебильными toggle-битами в регистрах STM32, а если их неправильно выставить, получаются битые пакеты или еще какие ошибки, wireshark их никак не отображал.
А вот когда уже с пакетами все было ОК, то и wireshark был уже не нужен: там все совсем уж элементарно.
Чт апр 01, 2021 13:05:09
Оно может и элементарно, но очень удобно когда показывает какие именно запросы хост посылает и принимает ли ответы. Или, скажем, что в какой-то момент запросы прекращаются.
Чт апр 01, 2021 19:52:43
Так
Wladimir_TS же говорит что обмен начинается, и только потом отваливается. Значит пакеты идут.
Ну и остальные соображения (про установку современной системы в дуалбут с winXP, например) никуда не деваются.
пытался сделать USB, правда на AVR
Кстати, вы программный USB ковыряете или аппаратный? Если vusb, то по нему у меня есть
статья на Хабре, где упоминается в том числе поэтапная отладка. Вот до аппаратного пока не дошел.
Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128 Задача работа в WimXP, другая система - неможно и точка.
Тип контролера могу глянуть завтра на работе. Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом. При этом устройство в системе не появляется вообще. Никаких ошибок в логах - ничего.
Добавлено after 2 minutes 31 second:Wladimir_TS писал(а):Нет-ли со стороны компа какого-то ПО - которое может смотреть пакеты USB в сырой форме
Воспользуйся saleae logic. Этот логический анализатор китайцы мешками по 3 копейки продают, а ПО оригинальное работает.
Он умеет декодировать USB пакеты на лету ? Я таких пока не встречал. Есть акиповский - он не умеет декодировать USB.
Чт апр 01, 2021 19:54:46
Задача — работа в WinXP, другая система - неможно и точка.
Это что — первоапрельская шутка? Или в психушке день открытых дверей?
Чт апр 01, 2021 20:08:16
По винХП естественно.
Вот будет ли работать на таком - не уверен. Впрочем, никто не мешает установить в дуалбут что-то более современное и удобное для разработки. Да хотя бы Убунту.
Неможно - это рабочий комп на котором параллельно крутятся программы по работе, они в XP-то идут со скрипом ибо под DOS писаны. К тому-же *nix слишком сложен для меня. Имел счастье ставить - 2 месяца е....и результат ноль ибо как раз USB не видит. Вообще, а винда любая видит и прекрасно работает.
Кстати, именно на winXP тестировать USB не рекомендую: одна небольшая ошибка в дескрипторе - и получите BSOD, я такое уже ловил.
BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
Нужно смотреть именно низкоуровневые пакеты что ходят на этапе установления соединения до регистрации устройства в системе.
Добавлено after 4 minutes 26 seconds:Задача — работа в WinXP, другая система - неможно и точка.
Это что — первоапрельская шутка? Или в психушке день открытых дверей?
Нет это реальность.
Чт апр 01, 2021 20:08:46
Аппаратный с внешним контролером на шине внешней памяти данных ATMEGA128
Это предложение не понял. То есть у вас к m128 прикручен преобразователь чего-то в usb?
Задача работа в WimXP, другая система - неможно и точка.
Нет, тестирование работоспособности в экзотических системах это само собой. Но при разработке-то зачем себя мучить?
Именно начинается обмен проходят первые приветствия идет запрос конечных точек и все облом.
Что значит "запрос конечных точек"? Если ConfigurationDescriptor передался, то хоть как-то в системе опознаться должно. Хотя в winXP не уверен...
Вы какое устройство вообще эмулируете?
они в XP-то идут со скрипом ибо под DOS писаны.
Виртуальная машина или DOSBox не помогают?
BSOD небыло - было отключение конкретного порта и более с ним не работало ничего до перезагрузки.
Не исключено, что я в настройках устройства косячил сильнее, так что и BSOD'ы были.
Чт апр 01, 2021 20:14:01
Про хрюндель - бред какой-то!
Я вообще любую разработку чего угодно, кроме игр, под геймерскую прошивку считаю идиотизмом. А разрабатывать не-игры для прошивки, которая уже лет 15 как deprecated…
Ну есть же современная мастдайка — бубунта называется. Чего бы, коль так линукс не нравится, не работать в этой мастдайке?
Чт апр 01, 2021 22:05:14
Ну если есть доисторический софт, который на современных ОС не работает, куда деваться? Хотя даже так проще найти не менее антикварный компьютер специально под такие софтины. Даже эмуляторы могут не спасти - если завязка на адреса железа, прерывания и прочие развлечения времен DOS'а.
У нас аналогичная фигня на работе началась: есть древняя плата под ISA шину, на которую часть задач завязана. Плюс когда-то внедрили LabView. И крутится все это на машинке с процессором 600 МГц что ли. Обновлять или хотя бы переустанавливать тамошнюю XP все боятся - а ну как доломается. Сейчас потихоньку переходим на что-то более вменяемое - Debian и автоматизация на Lua. Больше всего сомнений пока вызывает подключение GPIB: как он отображается (должен отображаться) в системе я не знаю.
Чт апр 01, 2021 23:12:30
Если руки не из задницы, то ничего не мешает переписать все на современный лад!
Пт апр 02, 2021 11:49:58
Ну вперед, перепишите драйвер под древнюю железяку, от которого нет исходников. Бесплатно, разумеется.
Пт апр 02, 2021 11:51:44
Я этим обычно и занимаюсь.
За зарплату, разумеется.
Вс апр 04, 2021 16:07:16
Коллеги, прошу совета: добавил в свой код возможность отправки данных, размер которых больше буфера (до этого посылал, сколько поместится), включил в аргументы функции отправки третий параметр - callback. Так вот такой вопрос: как лучше (как принято): принимать указатель на функцию или std::function? Во втором случае размер прошивки сразу же увеличивается на ~1,2Кб, использование RAM на ~100Байтов, зато появляется возможность принимать в качестве callback-ов лямбды. Вроде и удобнее, но килобайт тоже на дороге не валяется.
И второй вопрос: как я понял, размер пакета для нулевой EP ограничен снизу, для FS USB 2.0 у меня меньше 16 байтов не работает. Действительно ли есть такое ограничение, или где-то в коде ошибка?
Спасибо!
Вс апр 04, 2021 16:43:11
Так вот такой вопрос: как лучше (как принято): принимать указатель на функцию или std::function? Во втором случае размер прошивки сразу же увеличивается на ~1,2Кб, использование RAM на ~100Байтов, зато появляется возможность принимать в качестве callback-ов лямбды.
Разве по указателю на функцию нельзя передать лямбду?
- Код:
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); });
Вс апр 04, 2021 16:53:23
Reflector писал(а):Разве по указателю на функцию нельзя передать лямбду?
Вроде нет, по крайней мере мой g++ выдаёт:
cannot convert XXX::<lambda()>' to 'XXX::InTransferCallback' {aka 'void (*)()'}Reflector писал(а):А так можно передать любую лямбду, не важно какая у нее сигнатура
Спасибо, попробую когда-нибудь. В текущей ситуации не подходит, потому что callback я сохраняю как поле класса (чтобы после передачи последнего куска вызвать).
Вс апр 04, 2021 17:13:20
Нужно сохранять 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();
Вс апр 04, 2021 17:36:56
Reflector, спасибо большое, разобрался с Вашей помощью. Оказалось, что невозможно привести к указателю на функцию лямбду с захватом (собственно, и код из-за захвата разрастается). Буду думать дальше, сильно ли удобен захват переменных и стоит ли оно того.
Вс апр 04, 2021 17:40:45
Оказалось, что невозможно привести к указателю на функцию лямбду с захватом
Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Вс апр 04, 2021 17:42:03
Reflector писал(а):Лямбда с захватом трансформируется в класс который в полях хранит то, что захватил, к обычной функции оно уже не приводится.
Не знал этой особенности.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.