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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

COKPOWEHEU писал(а):Я уже объяснил почему ни С++, ни сама эта тема мне неинтересна.
Если вам не интересна, это не значит что другим не интересна. :) :)))
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006194#p4006194"]см. выше: библиотека это скомпилированный файл.[/uquote]Это ложное утверждение.

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006194#p4006194"]Я не знаю зачем вы столь упорно мусолите эту тему.[/uquote]А я расскажу. Вы сделали совершенно неадекватное замечание по моему коду. Конкретно, что код размещён в заголовочном файле. Я с примерами объяснял почему так делают, в надежде что вы поймёте, так как создавали впечатление адекватного собеседника. Но если не вам, то кому-нибудь другому информация окажется полезной, читателей у этой темы много.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006096#p4006096"]Так я в С++ и не лезу. И сразу объясняю почему - потому что С++ объективно сложнее Си.[/uquote]
В ранних версиях C++, когда он еще назывался "С с классами", не было шаблонов, виртуальных функций и т.д., но были классы и еще много чего, при этом язык считался диалектом С. От С он отличался пожалуй меньше, чем С++20 отличается от С++98, т.е. разделение на языки весьма условно, исторически могло так сложиться, что сейчас бы существовал только С, но по функционалу это был бы современный С++. В том же C# 1.0 не было обобщенного программирования(шаблоны), оно появилось в 2.0, а в 9.0 уже столько всего, что по сложности он приближается к C++, но все это не мешает избегать излишних сложностей и по-прежнему писать на C# 2.0 или С++ 98. Можно сгенерить кубом проект для USB и сделав мелкие правки превратить его в проект на С++20, знать для этого практически ничего не нужно, а далее можно по мере усвоения нового функционала постепенно что-то менять делая код проще. Вот разбирательство с USB и написание собственной либы вместо генерации кубом - это действительно объективно сложнее, но почему-то же ты этим занимаешься :)
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

[uquote="Reflector",url="/forum/viewtopic.php?p=4006340#p4006340"]В ранних версиях C++, когда он еще назывался "С с классами", не было шаблонов, виртуальных функций и т.д., но были классы и еще много чего, при этом язык считался диалектом С. От С он отличался пожалуй меньше, чем С++20 отличается от С++98[/uquote]
Категорически не согласен! С++ изначально был ДРУГИМ языком. И общего с С у него была лишь схожесть синтаксиса и возможность линковки с сишными объектными файлами.
Но вот то, в какое дерьмо превратили С++ к стандарту С++20 — да, вообще не похоже на оригинальные кресты. Взяли приличный ЯП и сделали из него дерьмо!.. Хорошо хоть, в С не так плохо с этим.

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

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

Сообщение COKPOWEHEU »

Это ложное утверждение.
Откройте /lib, /usr/lib или где у вас там хранятся системные библиотеки (может вообще C:\system32) и убедитесь сами.
Вы сделали совершенно неадекватное замечание по моему коду. Конкретно, что код размещён в заголовочном файле.
И всего-то? Я лишь иллюстрировал ограничения С++, претензий именно к вашему коду в этом плане нет: что доступно, тем и пользуетесь. Прошу прощения если обидел.
Вот разбирательство с USB и написание собственной либы вместо генерации кубом - это действительно объективно сложнее, но почему-то же ты этим занимаешься :)
Я же писал вроде: потому что не осилил ту адскую лапшу, что Куб нагенерировал. Ну и 14 кБ кода для пустого проекта это перебор. Даже на ATmega8, где аппаратного USB нет, аналогичный код занимает около 2 кБ.
Реклама
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

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

Сообщение azhel12 »

COKPOWEHEU писал(а):Откройте /lib, /usr/lib или где у вас там хранятся системные библиотеки
А если я открою STL - Standart Template Library? Это превращается в спор по поводу значения слова "библиотека". Сейчас в ветку заглянет какой-нибудь лингвист и вообще скажет, что "библиотека" - это такое заведение и даже ссылку на толковый словарь оставит :))

C++ хорош, особенно с его шаблонами, позволяющими кучу всего перенести в compile-time + за счет строгого контроля типов избежать множества ошибок, которые в мире, состоящем только из uint8_t, uint16_t и uint32_t появляются постоянно.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4006362#p4006362"]Категорически не согласен! С++ изначально был ДРУГИМ языком.[/uquote]
Дадим слово автору языка:
Спойлер
В октябре 1979 г. был готов препроцессор, который я назвал Срге. Он добавлял Simula-подобные классы к С. В марте 1980 г. препроцессор был улучшен настолько, что использовался в одном реальном проекте и нескольких экспериментальных. Язык, подаваемый на вход препроцессора, получил название «С with Classes». С with Classes все еще рассматривался как диалект С, а не как самостоятельный язык. Даже классы тогда назывались «абстрактными типами данных.
Новый язык поначалу продолжал именоваться С with Classes, но после вежливой просьбы руководства получил название С84. Причиной переименования было то, что пользователи стали называть С with Classes сначала «новым С», а потом и просто С. Из-за этого настоящий С низвели до «чистого С», «простого С» и «старого С». Последнее название было особенно обидным, поэтому естественная вежливость и желание избежать путаницы заставили меня искать новое имя. Имя С84 продержалось всего несколько месяцев отчасти из-за того, что было некрасиво и слишком официально, а отчасти потому, что путаница все равно возникла бы, если бы люди стали опускать «84». Я выбрал для нового языка имя C++...
Добавь сюда тот факт, что первый коммерческий компилятор С++ генерил на выходе сишные исходники, а до этого вообще использовался препроцессор :)
Но вот то, в какое дерьмо превратили С++ к стандарту С++20 — да, вообще не похоже на оригинальные кресты. Взяли приличный ЯП и сделали из него дерьмо!.. Хорошо хоть, в С не так плохо с этим.
Кресты превратили в самый эффективный язык программирования для эмбедда, еще немного и пишущих на С будут приравнивать к калокубщикам :)

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006374#p4006374"]Я же писал вроде: потому что не осилил ту адскую лапшу, что Куб нагенерировал. Ну и 14 кБ кода для пустого проекта это перебор. Даже на ATmega8, где аппаратного USB нет, аналогичный код занимает около 2 кБ.[/uquote]
У меня есть проект ЛА/осцилла с кучей разных генераторов, частотомером и т.д., абсолютно все на классах, включая выкушенную(и упрощенную) из куба либу USB для F7(она изначально жирнее не OTG-ой). Размер бинарника для O2 - 11КБ, для Os - 8760 байт. Конечно конкретно либу USB можно урезать еще больше, однако когда я пробовал использовать одну из таких, то она работала только при низкой нагрузке, а при захвате относительно большого объема данных подвисала... Или возьми Eddy_Em, он потратил более чем достаточно времени на борьбу с USB и у него есть STM32F4, но к OTG хотя бы в режиме девайса он еще вроде и не подступался. Сложно, потому все откладывает, как и изучение C++ :)
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

он потратил более чем достаточно времени на борьбу с USB и у него есть STM32F4, но к OTG хотя бы в режиме девайса он еще вроде и не подступался. Сложно, потому все откладывает
Либо есть более приоритетные дела. Тот же USB ведь нужен не сам по себе, а чтобы на нем какое-то устройство сделать. Для тех же клавомышек, переходников на UART и т.п. за глаза хватит той же F103.
Хотя я все же хочу поиграться с USB на контроллере GD32VF103 (RISC-V, по нему у меня тоже есть статья), тоже с otg. Но для этого хорошо бы найти и запустить хоть какой-то образец кода. А это, как вы правильно сказали, долго, сложно и страшно. И практической пользы немного.
У меня есть проект ЛА/осцилла с кучей разных генераторов, частотомером и т.д.
А вот это интересно. Я догадываюсь, что на контроллерах общего назначения полноценный осциллограф с хорошей частотой оцифровки не сделать, но и "игрушечные" на 1-10 Msps тоже полезны. Вы говорите, что он подключается по USB - имитируется какое-то стандартное устройство или пишете свой драйвер? Какая частота оцифровки, используется встроенный АЦП или внешний?
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006439#p4006439"]Я догадываюсь, что на контроллерах общего назначения полноценный осциллограф с хорошей частотой оцифровки не сделать, но и "игрушечные" на 1-10 Msps тоже полезны. Вы говорите, что он подключается по USB - имитируется какое-то стандартное устройство или пишете свой драйвер? Какая частота оцифровки, используется встроенный АЦП или внешний?[/uquote]
ЛА на 80 MSPS, можно и 100, но настолько гнать не стал. Естественно непрерывно такой поток по USB не передашь, потому захватывает в буфер и потом передает на комп. Тем более во время захвата мк спит иначе для ЛА меньше скорость, а для осцилла еще и больше помехи. Никаких своих драйверов, обычный CDC выдает ~820КБ/c. Осцилл юзает встроенный ADC, в одноканальном режиме 12 MSPS, в двухканальном - 4.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

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

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

Сообщение Eddy_Em »

[uquote="Reflector",url="/forum/viewtopic.php?p=4006427#p4006427"]Или возьми Eddy_Em, он потратил более чем достаточно времени на борьбу с USB и у него есть STM32F4, но к OTG хотя бы в режиме девайса он еще вроде и не подступался. Сложно, потому все откладывает, как и изучение C++ :)[/uquote]
Нет ничего настолько сложного, чтобы его было бы невозможно в конце-концов осилить. Другое дело, что мне F4 вряд ли вообще когда-нибудь понадобятся, уж очень понравились F072. Под F103 пишу сниппеты лишь потому, что у меня есть горсть "синих таблеток", а на F072 надо девборду делать (или менять F103 на F072 в "синей таблетке", для этого нужно подождать, пока спалю хотя бы один F103).
Возможно, через 0.5-2 года появится свободное время и можно будет заняться F401, F407 и F303 (девборду с последним планирую на работе заказать).

Что до С++, то сильно сомневаюсь, что буду в это дерьмо лезть. Я 18-20 лет назад после фортрана и С засел за изучение крестов, прочитал пару раз Страуструпа, примеры кой-какие поделал. Вполне приятный язык. Был. Пока всякие мудаки до него не добрались и не превратили в фекалопомойку, которую назвали С++20!
В общем, для меня сейчас С++20 наравне с пытхоном: то же неюзабельное дерьмище. Не вижу смысла тратить годы на изучение синтаксиса и особенностей языка. В случае с С достаточно пару раз K&R почитать, да немного попрактиковаться, чтобы во всех тонкостях разобраться. В случае же с С++20 минимум лет 10 уйдет лишь на понимание всех его возможностей (а тем временем С++20 уже устареет). Аналогично с пытхоном: пока полностью осилишь это дерьмище и все 100500 "must have" библиотек, выйдет четвертый пытхон и придется все заново начинать.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4006467#p4006467"]А визуализацию потока с CDC и управление им на чем-то самописном делали?[/uquote]
Клиент свой, C# и WPF.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4006469#p4006469"]Я 18-20 лет назад после фортрана и С засел за изучение крестов, прочитал пару раз Страуструпа, примеры кой-какие поделал. Вполне приятный язык. Был. Пока всякие мудаки до него не добрались и не превратили в фекалопомойку, которую назвали С++20![/uquote]
Я могу согласится только с тем, что язык перегружен и не хватает литературы которая помогла бы безболезненно совершить переход тем, кто уже знает С, но опасается сложности C++, в том числе если говорить непосредственно про эмбедд, т.к. у него своя специфика. Да даже парочки статей бы хватило, хоть бери и сам пиши :)
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Парочки статей не хватило бы точно! Потому что какой смысл учить только кусок С++? Писать на нем под МК, а под ПК продолжать на С?
Если уж менять язык, то полностью. Вот сейчас я на С пишу абсолютно все: от мелких утилит (которые на баше не реализовать) и МК до всякой обработки изображений, сетевых демонов, БД и т.п. Фактически мне пришлось бы учиться все это делать на крестах (в т.ч. штудировать Asio и т.п. вещи, которые уже фактически стали частью стандарта).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4006531#p4006531"]Парочки статей не хватило бы точно! Потому что какой смысл учить только кусок С++? Писать на нем под МК, а под ПК продолжать на С?[/uquote]
Статьи должны демонстрировать, что если сильно не зарываться, то на С++ писать даже проще, чем на С, при этом знать нужно примерно столько же. Многих отталкивает именно высокий порог вхождения, в таком случае самый простой способ отпугнуть от языка - это заставлять учить его весь :)
Если уж менять язык, то полностью. Вот сейчас я на С пишу абсолютно все: от мелких утилит (которые на баше не реализовать) и МК до всякой обработки изображений, сетевых демонов, БД и т.п. Фактически мне пришлось бы учиться все это делать на крестах (в т.ч. штудировать Asio и т.п. вещи, которые уже фактически стали частью стандарта).
Да. Или нет :) Допустим хочешь png загрузить, берешь сишный libpng, подключаешь и загружаешь, практически любая более-менее известная либа должна быть написана из расчета, что ее будут использовать в том числе и в программах на плюсах. Лично я бы стал писать сетевое или гуишное приложение на С++, тем более на С, только в случае самой крайне нужды, это гораздо проще сделать на C#...
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Вот только не надо вспоминать это мелкомягкое проприетарное дерьмо! Си-диез - это же как архивы в RAR - очень тревожный звоночек!!!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Wladimir_TS
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

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

Сообщение Wladimir_TS »

А чем тревожен звоночек в виде архивов RAR ?
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

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

Сообщение azhel12 »

Eddy_Em писал(а):мелкомягкое проприетарное дерьмо
Ну да, конечно, а .Net Core не считается?

А окна на чем писать, или все приложения должны быть только консольными? По-моему, надо поблагодарить Microsoft за WPF и Core, это большое достижение. Туда же Xamarin (хотя лично не использовал). Выучил шарпы (весьма удобный все-таки язык, а еще если ReSharper стоит, так вообще сказка) и покрыл сразу много всего: desktop-программы - пожалуйста, даже на Linux/Mac теперь все работает, Web - есть ASP, мобильная разработка - бери Xamarin. К тому же много библиотек уже написано, NuGet более чем удобный, в два клика либы подключаются.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4006853#p4006853"]мелкомягкое проприетарное дерьмо![/uquote]
Eddy, проснись, весь .Net Runtime, Xamarin, компиляторы C# и VB, VSCode и т.д., уже давно opensource и большей частью все кроссплатформенное :)

Добавлено after 5 minutes 29 seconds:
[uquote="azhel12",url="/forum/viewtopic.php?p=4006863#p4006863"]А окна на чем писать, или все приложения должны быть только консольными?[/uquote]
На JS он пишет :)
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

А окна на чем писать
gtk, qt, естественно. Ну, если нужна только визуализация, можно всякие SDL, SFML, даже GLUT.
А что, есть вменяемые альтернативы?
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

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

Сообщение azhel12 »

COKPOWEHEU писал(а):А что, есть вменяемые альтернативы?
Я просто абсолютный виндузятник, поэтому намекал на WPF :)) Никогда не писал окна на Qt, Gtk, только чужой код видел, и мне не зашло. Надеюсь, что дойдет дело до поддержки WPF в Linux.
Ответить

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