Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изучение модуля USB
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
TrampX
Здравствуйте. Впервые на этом форуме, решил все таки зарегистрироваться, похоже самостоятельно мне не разобраться в этот раз. Хочу впервые заюзать аппаратный модуль USB в STM32F407. была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0 с ней в комплекте идет и STM32F4xx_StdPeriph_Driver) с сайта www.st.com и примеры работы с того же сайта. Ни один пример не удалось запустить, т.е. хоть и компилируется все, но ничего не хочет работать. К тому же в примерах используются StdPeriph_Lib. Что что, а именно эта библиотека вводит меня в состояние, насыщенное негативными эмоциями. Поэтому не хочется мне ее использовать. без нее же библиотеку USB никак не могу подключить и даже найти толковое описание этой библиотеки не получается. Т.к. скорость не нужна большая и не хочется иметь кучу виртуальный com портов, решено было изучить класс USB HID Device. Поэтому есть несколько вопросов:
1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib?
2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?
3. Есть ли толковое описание библиотеки USB?
С самой шиной никогда не работал. Язык Си знаю более менее, но до профи далеко, поэтому разобраться с библиотеками без помощи пока не могу. Работа с устройством со стороны хоста это уже другой вопрос и следующий этап.

P.S. Прошерстил поиском весь форум, нашел и скачал много примеров, но либо не рабочие, либо шибко навороченные и без комментариев в основном. Может кто вкратце распишет что к чему? Т.е. задача заюзать usb hid device, хотелось бы для начала просто знать, какие файлы необходимы в проекте из библиотеки STM32_USB-Host-Device_Lib_V2.1.0, STM32F4xx_StdPeriph_Driver использовать не собираюсь. Ну и минимум функций, которые будут нужны для обмена данными с хостом.
aaarrr
Боюсь, модуль USB у STM32F4xx очень плохо подходит для первого самостоятельного знакомства с шиной.
Если стоит цель освоить работу с USB, то лучше взять другой МК.
TrampX
Жаль, конечно, что плохо подходит, но нужен именно он sad.gif
adnega
Примеры для STM32F4DISCOVERY запускались без каких-либо проблем.
Например, обновление прошивки с USB-флешки.
Или проигрывание wav-файла с USB-флеш.
Пробовал модифицировать, добавил управление громкостью с акселерометра.
Не заработал только цифровой микрофон (видимо связано с использованием плавучки, которое на тот момент было не актуально - поэтому дальше не копал).
У Вас собственное железо или используете указанную выше отладочную плату?
PS. Дальше запуска примеров не разбирался с комплектом поставки (либы), поскольку не сторонник "чужих велосипедов", а изобретаю потихоньку свои)
ViKo
А почему USB_Host? Цель была - изучить HID-устройство, подключаемый к компьютеру, правильно?
TrampX
У меня отладочная плата STM32F4Discovery, приобретенная мной пару дней назад. На ней запускается один единственный проект, тот который идет с завода, остальные либо не компилятся, либо компилятся не работают. Пытался создать новый чистый проект, без использования SPL, не получается. Осложняется дело тем, что на эту библиотеку вообще нет никакого описания.

Цитата
USB_Host
Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

Цитата
Если стоит цель освоить работу с USB, то лучше взять другой МК.
Как то пропустил вторую часть сообщения. Я написал впервые заюзать модуль USB STM32, а не впервые заюзать шину USB. Разница принципиальна, так как на других МК уже юзал эту шину. Здесь же затык из за полного отсутствия документации, да и с примерами разобраться не так то просто.
aaarrr
Так Вы же сами писали:
Цитата(TrampX @ Apr 9 2013, 18:31) *
С самой шиной никогда не работал.


Если опыт есть, то достаточно User Manual'а для написания своего драйвера. Но STM'овский USB весьма своеобразен, скажем прямо.
Golikov A.
насколько глубоко хотите заюзать?
до уровня стандарта и полного понимания что происходит, или библиотеку приколотить костылями и успокоиться?
ViKo
Цитата(TrampX @ Apr 9 2013, 19:41) *
Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

Цитата
была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0
adnega
Для использования USB в своих проектах документации хватает (Reference Manual).
Для изучения USB конечно же не хватит. Нужны спецификации USB классов (я использовал только HID и CDC) + книжка по самому USB (часть вопросов снял труд Агурова).
Модуль USB в STM32 мягко говоря "нетривиальный")) Например, чтобы установить какое-нить значение бита в регистре нужно его считать и если значение устраивает, то записать в эту позицию "0", а если нужно изменить на противоположенное - то "1". Где-то так...
TrampX
Цитата
для написания своего драйвера.
Зачем HID нужен драйвер??? Он уже есть в виндоус, нужно только приложение для работы с устройством.
Скажем так: Хотелось бы разобраться в самой бибилиотеке, как ее юзать, общие принципы. Знание и понимание что происходит на шине на самом низком уровне мало кому нужно, мне и подавно. Для меня представляет интерес сопряжения МК по шине USB с компьютером, в частности работа как hid device, а так же хотелось попробовать работать на уровне эндпойнтов, но это уже потом. Также представляет интерес usb host, но это ужже как нибудь потом, с этим вообще еще не имел дела.
Т.е. получается просто приколотить костылями, но разобраться в самой библиотеке что к чему, чтобы самостоятельно изучать потихоньку дальше...

Цитата
Цитата(TrampX @ Apr 9 2013, 19:41) *
Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

Цитата
была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0
Ну дык в этой библе есть разные классы. Это всего лишь название. Есть и хост, и HID Device, и CDC и все остальное.
Цитата
Для изучения USB конечно же не хватит
Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.
kovigor
Цитата(TrampX @ Apr 9 2013, 20:02) *
Скажем так: Хотелось бы разобраться в самой бибилиотеке, как ее юзать, общие принципы. Знание и понимание что происходит на шине на самом низком уровне мало кому нужно, мне и подавно. Для меня представляет интерес сопряжения МК по шине USB с компьютером, в частности работа как hid device, а так же хотелось попробовать работать на уровне эндпойнтов, но это уже потом. Также представляет интерес usb host, но это ужже как нибудь потом, с этим вообще еще не имел дела.
Т.е. получается просто приколотить костылями, но разобраться в самой библиотеке что к чему, чтобы самостоятельно изучать потихоньку дальше...

Ну дык в этой библе есть разные классы. Это всего лишь название. Есть и хост, и HID Device, и CDC и все остальное.

Без комментариев. Скажу про свой опыт использования этой библиотеки и USB - движка STM. Мне нужно было именно разобраться в исходниках USB Device'ов, поставляемых с этой библиотекой. Опыт работы с шиной и понимание того, как она работает, имелось - я писал свои реализации Device'ов для HID и Mass-Storage для NXP и Atmel, а также писал свою реализацию хоста для Atmel ARM9, т.е., я знал, что делаю, почему и зачем. Так вот, движок от STM и оная библиотека буквально вынесли мне мозги. Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).
Это мое личное мнение: начинать с STM в части освоения USB есть дело чуть ли не безнадежное. А поверхностное знакомство с ихней библиотекой недопустимо, надо именно вникать в детали, иначе рано или поздно ваш проект встанет колом, а вы окажетесь в этой ситуации совершенно беспомощным.
P.S. Не работать примеры могут из-за того, что они рассчитаны на МК в корпусе X, а у вас МК в корпусе Y, а там линии USB идут на другие GPIO. Именно об эту особенность я и споткнулся в первый же день ...
adnega
Цитата(TrampX @ Apr 9 2013, 21:02) *
Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.

Предлагается изучение библиотеки оставить для самостоятельной работы, а на форуме начать озвучивать конкретные вопросы. Что именно не получается?
Дело в том, что изучение библиотеки это не такой уж легкий путь с учетом сопровождающей ее документации. Описаны параметры функции, возвращаемый результат, но это и так в большинстве случаев понятно. Как строится логика работы с библиотекой нигде (по крайне мере я) не встречал. Можно подглядеть в примерах, но это лишь частный случай...
Возможно, Вам будет легче плюнуть на эту библиотеку, разобраться с регистрами и написать что-то свое. Я пока так не поступил, тратил очень много времени. Отказавшись от ST-библиотеки, поднял свой USB-стек за несколько дней.

Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются)
TrampX
Цитата
Что именно не получается?
Конкретные вопросы были озвучены в самом начале
Цитата
1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib?
2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?
3. Есть ли толковое описание библиотеки USB
Похоже ответ на первый вопрос НЕТ.
Второй пока остается без ответа sad.gif
Третий похоже тоже НЕТ sad.gif
Но вот по 3 вопросу, я вообще не могу найти ни одного! документа на STM32_USB-Host-Device_Lib_V2.1.0.
Вот написать что то свое для модуля USB при отсутствии опыта программирования STM32 будет действительно сложно, да и рускоязычной документации или хотя бы его обсуждений на форумах я еще не встречал, а вот изучение модуля USB по англоязычному даташиту может действительно вынести моск...
aaarrr
Цитата(TrampX @ Apr 9 2013, 21:02) *
Зачем HID нужен драйвер???

Драйвер - это не обязательно компонент ПО для ПК. Та часть программы, что обслуживает какую-либо периферию МК тоже имеет полное право так именоваться. Именно её я и имел в виду.

В свое время попробовал воспользоваться библиотекой от ST, так как очень не хотелось тратить время ради одного проекта. Заставить себя в результате так и не смог, пришлось потратить несколько дней на написание и отладку своего варианта.
TrampX
Цитата
Драйвер - это не обязательно компонент ПО для ПК.
А я как раз подумал именно об этом.
Цитата
пришлось потратить несколько дней на написание и отладку своего варианта.
Если есть возможность, можно поделиться для старта?
adnega
Цитата(TrampX @ Apr 9 2013, 21:45) *
Если есть возможность, можно поделиться для старта?

Для старта.
Может поможет. В исходниках много отладочной информации касательно работы USB.
Правда, все для STM32F103. Но с минимальными "допиливаниями" (инициализация GPIO, NVIC) должно работать и на STM32F4.
TrampX
Спасибо. Буду смотреть и разбираться.
alx125
Цитата(TrampX @ Apr 9 2013, 18:31) *
С самой шиной никогда не работал. Язык Си знаю более менее, но до профи далеко, поэтому разобраться с библиотеками без помощи пока не могу. Работа с устройством со стороны хоста это уже другой вопрос и следующий этап.

На форуме st.com запомнилось следующее (в моем переводе): "Я считал , что хорошо знаю язык С, Но после ознакомления с билиотекой STM32_USB-Host-Device_Lib я понял , что этот язык я совершенно не знаю..." crying.gif

Цитата(kovigor @ Apr 9 2013, 21:14) *
Без комментариев. Скажу про свой опыт использования этой библиотеки и USB - движка STM. Мне нужно было именно разобраться в исходниках USB Device'ов, поставляемых с этой библиотекой. Опыт работы с шиной и понимание того, как она работает, имелось - я писал свои реализации Device'ов для HID и Mass-Storage для NXP и Atmel, а также писал свою реализацию хоста для Atmel ARM9, т.е., я знал, что делаю, почему и зачем. Так вот, движок от STM и оная библиотека буквально вынесли мне мозги. Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).


Абсолютно согласен с этим мнением!
Мне пришлось сильно модернизировать Host из этой библиотеки для работы с др. классами USB-устройств (не HID и MSC), др.типов передач и нескольких конфигураций/интерфейсов. "Врагу не пожелаешь" biggrin.gif
Потому хочется предупредить Вас, что этим можно заниматься имея большой запас времени и терпения!

К перечисленным недостаткам добавлю:
1. Отвратительная документация! Практически отсутствует достаточное описание API. Все приходится искать в коде. А про его качество уже много сказали....
2. Это не библиотека USB-стандарта в обычном понимании!!!! А только Очень ограниченная реализация только 2 классов USB устройств - HID и MSC. И для конкретной схемотехники оценочных плат. Любой шаг в сторону и головные боли вам обеспечены!

Из достоинств:
1. Бесплатная
2. Все-таки она рабочая
rudy_b
Могу еще добавить - совершенно сознательно запутанная так, чтобы сложнее было разобраться.

Но, если это четко понимать, то, все равно, полезная. Большую часть описаний харда можно почерпнуть только из нее, поскольку иные описания на ST отсутствуют.
vptr
Цитата(TrampX @ Apr 9 2013, 17:31) *
.... Т.к. скорость не нужна большая и не хочется иметь кучу виртуальный com портов, решено было изучить класс USB HID Device. Поэтому есть несколько вопросов:
....
2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?
3. Есть ли толковое описание библиотеки USB?

По 2 вопросу. Надо открыть пример из этой библиотеки в среде (я в Keil открывал), для своего процессора и для своего класса USB. Компильнуть, увидеть что все компелится и потом посмотреть в кейле, какие файлы с и h подлключены именно к данному примеру. Потом только эти файлы надо поключать к своему проекту.
По 3 вопросу. Есть какое-то описание от STM, называется UM1021 http://www.st.com/st-web-ui/static/active/...rchtype=keyword

Примеры от STM по части USB VCP c небольшой недоработкой, там надо добавлять кусок кода, чтобы не зависнуть в этом USB коде при определенных условиях. Для HID тоже слышал о проблемах. Как-то оно работает, но до оптимальной работы надо допиливать. Да и это не совсем библиотека, это пример с добавкой всякого ненужного кода для моргания свтодиодом и т.д. Весь этот мусор потом надо вычищать.
SyncLair
Цитата(rudy_b @ Apr 10 2013, 05:02) *
Могу еще добавить - совершенно сознательно запутанная так, чтобы сложнее было разобраться.


У меня иногда складывается ощушение, что производители контроллеров и производители демоплат и программисты, что пишут примеры(которые бесплатно распространяются) и производители платных решений -- это вся большая мафия ). Одни пишут что покупайте наши контроллеры -- для них есть бесплатные примеры. Другие, видимо, специально так коряво пишут эти примеры, чтобы покупались платные решения. biggrin.gif
fsergey
Цитата(kovigor @ Apr 9 2013, 21:14) *
Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).

Ещё час назад думал, что психушка обеспечена. Два дня поднимал CDC VCP.
Порт заработал, но осадочек остался... Такого отвратительного кода я не видел давно.
При чём раньше плевался, помнится, на StdPeriph Library, на её стиль, нотацию, код.
Ну никак не укладываются программные решения ST в какие-то удобные, локоничные формы...

Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???
Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.
adnega
Цитата(fsergey @ Apr 11 2013, 23:52) *
Ещё час назад думал, что психушка обеспечена. Два дня поднимал CDC VCP.
Порт заработал, но осадочек остался... Такого отвратительного кода я не видел давно.
При чём раньше плевался, помнится, на StdPeriph Library, на её стиль, нотацию, код.
Ну никак не укладываются программные решения ST в какие-то удобные, локоничные формы...

Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???
Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.

Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать. С учетом нынешних объемов памяти и мегагерцев использование такого универсального средства как STLib в некоторых случаях можно оправдать. В своих проектах я ее не использую. Один раз на работе для достаточно нетривиального контроллера ради эксперимента решил попробовать - вроде работает и все довольны, и сопровождаемость возросла, и с камня на камень легко прыгнули (с F103 на F107), и FreeRTOS с uIP легко запустились. Просто не надо думать, что использование этой библиотеки освобождает Вас от чтения документации)) Скорее наоборот: библиотека, примеры от ST и документация дополняют друг друга. Повторюсь, сам эту библиотеку не использую, но без нее и примеров при запуске некоторых блоков (например, Ethernet с кучей магических констант) сидел бы над документацией и плевался ооочень долго. Мой диагноз: библиотеке быть! И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))
Aner
Прыгнуть с F103 на F107 легко, в 107 не нужен транзистор без которого в 103 не обойтись. Также со временем ушли от написания своих драйверов, под WIN(xp/7).
Но неприятность с USB, после 2006 года остается, когда нужно платить за большой пул. VID, PID свое берут.
fsergey
Цитата(adnega @ Apr 12 2013, 00:24) *
Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать.
...
В своих проектах я ее не использую.
...
И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))

Ну, собственно, хоть какая-то STLib лучше чем вообще её отсутствие.
Главная притензия, кстати, не к её производительности. А к её форме. Код с использованием либы выглядит мягко сказать неприглядным, сложным для прочтения. Вообще, это только они догадались объединить и верблюжью и венгерскую нотации, культурные программисты, как правило, так не делают. В результате разные куски кода получаются гарантированно в разных нотациях. Что глаз не радует. Это лишь вершина айсберга под названием "стиль библиотеки".
Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).
adnega
Цитата(fsergey @ Apr 12 2013, 08:45) *
Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).

Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)
Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))
Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.
fsergey
Цитата(adnega @ Apr 12 2013, 13:41) *
Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)
Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))
Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.

Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете? Кто бы и что не говорил про велосипедописание - это полезное дело, т.к. в результате рождаются разные альтернативы имеющимся продуктам. А потом бывает и последователи находятся!
Если ваш вариант в спортивной форме - выкладывайте, я бы с удовольствием изучил!
adnega
Цитата(fsergey @ Apr 12 2013, 15:10) *
Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете?

Тут все просто: я коммерческая организация, это не увеличит мои доходы, скорее наоборот...
Опытом делюсь с удовольствием, а наработками... увы))
Да, и продуктом это назвать сложно. Опять же нет хорошей документации (кроме описаний doxygen).
Скорее, конструктор, позволяющий за 1-3 дня поднимать средней тяжести проект, с дальнейшей недельной отладкой.
При наличии 100+ реализованных более-менее схожих проектов любой разработчик может придти к такому решению (а не продукту).
Главное решится "изобретать свой велосипед".
Golikov A.
Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.
К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...
adnega
Цитата(Golikov A. @ Apr 13 2013, 09:06) *
Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.
К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

Я не настаиваю на своей правоте. Наработки я не то чтобы скрываю, просто не афиширую. Было пару случаев, когда ими воспользовались сторонние люди, но ничего кроме реакции "круто, оно работает" ничего не получил. Чтобы довести код до совершенства нужна как минимум соответствующая квалификация: от "молодых" толку мало, а у "старичков" нет времени и желания ковыряться в чужом коде, когда уже есть или свои наработки, или стандартные библиотеки. Имя мне делает не то как я пишу код, а то что готовое изделие работает, обладает соответствующим функционалом, при определенной стоимости и времени разработки. Это с одной стороны. С другой стороны: все люди разные,у каждого свое мировоззрение. Не редко приходилось сталкиваться с разработчиками, более авторитетными чем я, и склонять к своему мнению - хм, не тут-то было. Тряся кодом ничего не докажешь, нужно время чтобы заметить разницу в подходах к программированию в целом. Начинать нужно со студентов. Года два назад помогал с одной разработкой родному ВУЗу - провел несколько семинаров для аспирантов. Приглашали вести курс на постоянной основе, но времени к сожалению нет.
По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше. Ничего оригинального в них нет. Хотя замахнулся на USB HID "свисток" с управлением входами-выходами, показанием температуры, возможностью подключения монето- и купюроприемников, приема ИК-кодов, проигрывания музыки через бузер (по нотам и длительностям), пробрасыванием RS-232, функциями сторожевого таймера, расчета MD5 для выполнения функций взаимной авторизации как ПК, так и USB-устройства (типа аппаратный ключ). Это для платежных систем, музыкальных автоматов. Работает без драйверов, можно втыкать-вытыкать устройство на горячую - демо-ПО все отслеживает и не падает. Вот наработки - вопросов от сообщества пока нет))
haker_fox
QUOTE (Golikov A. @ Apr 13 2013, 14:06) *
Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.
К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

Это стандартное заблуждение rolleyes.gif

Наверно любой широкодоступный код годится для надежной работы, но требует оптимизации. И тот, кто потратил время на доводку такого кода (Free RTOS, scmRTOS, Fat FS и т.п.) вряд ли будет его раскрывать, если зарабатывает на этом. Оригинальность она ведь тоже денег стоит.

Кстати, а кто это будет бесплатно тестировать, трассироать и утсранять баги в коде, хотелось бы услышать? Скорее всего народ сделает так, как написать выше, т.е. соптимизирует для себя и всё. Конечно, я сужу исключительно по себе, но кто так не делает? rolleyes.gif
ViKo
Цитата(adnega @ Apr 13 2013, 09:13) *
По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше...

В примере USB_HID не хватает файла stm32f10x_map.h
adnega
Цитата(ViKo @ Jun 24 2013, 16:08) *
В примере USB_HID не хватает файла stm32f10x_map.h

Во вложенном архиве.
ViKo
Цитата(adnega @ Jun 24 2013, 16:11) *
Во вложенном архиве.

Спасибо!
Сейчас Keil считает ошибкой следующую конструкцию:
Код
typedef struct sPORT
{
    BYTE    report;                // Report = 3 (in/out), size = 33 + 1
    union
    {
        struct
        {
            BYTE    length;                // 0..32
            BYTE    data[32];
        };
        struct
        {
            BYTE    command;
            WORD    baud;
            BYTE    parity;
            BYTE    stop;
        };
    };
} sPORT;

Сначала пишет предупреждения на внутренние структуры:
type.h(45): warning: #40-D: expected an identifier
А потом уже ошибку на объединение:
type.h(53): error: #618: struct or union declares no named members

Это поправил, добавил имен. Но еще не находится WORKLED_bit
adnega
Цитата(ViKo @ Jun 24 2013, 17:22) *
Это поправил, добавил имен. Но еще не находится WORKLED_bit

Думаю, что в define.h должно быть так:
Код
#define     WORKLED_bit                        PER_BIT_ADDR(GPIOA_ODR, WORKLED)
ViKo
Теперь осталось последнее. Кейл создает скаттер-файл следующего вида.
Код
LR_IROM1 0x08000000 0x00080000  {  ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {; RW data
   .ANY (+RW +ZI)
  }
}

И выдает ошибку
USB_CDC.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
Это связано с тем, что в проекте стартап написан на C, и секции RESET нет. Что бы такого здесь подправить? Можно свой ассемблерный стартап создать, но интересно именно на C испытать...
Еще не нахожу, где же настраиваются частоты, PLL. То, что в Кейле вызывается в первую очередь после сброса (функция SystemInit()).
adnega
Цитата(ViKo @ Jun 24 2013, 19:52) *
Что бы такого здесь подправить. Можно свой ассемблерный стартап создать, но интересно именно на C испытать...

В кейле я не силен...
От стартапа ничего особенного не надо: инициализировать данные и передать управление в main().
Можно и на asm.
А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,
что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.
Обсуждаемые исходники всего лишь демонстрация этого утверждения.
Думаю, под кейлом запустить еще надо постараться (хотя первая версия была именно под кейл).
Стартап и размещения для линкера это только часть неприятностей (другие неприятности связаны с использованием
особенностей gcc, например, те же анонимные структуры и объединения; а еще и обработчики прерываний надо по
особому оформлять). Тут я видел два пути: либо запускать под gcc, либо скопировать частично исходник в свой (ваш) проект.
ViKo
Цитата(adnega @ Jun 24 2013, 19:19) *
А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,
что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.

Цель та же - понять USB в STM32. От примеров из библиотеки голова кругом идет. Хочу пройтись по функциям, минимально необходимым.
adnega
Цитата(ViKo @ Jun 24 2013, 20:36) *
Цель та же - понять USB в STM32. От примеров из библиотеки голова кругом идет. Хочу пройтись по функциям, минимально необходимым.

В таком случае, правильнее было бы запустить проект по второму варианту (с вашим стартапом и размещением для линкера).
Как написать стартап на С в кейл, по моему, заслуживает отдельной темы))... Хотя для Cortex-M3 все пишется достаточно
просто на ЯВУ С. Правда, я не сторонник настраивать PLL и другую периферию до вызова main().
billidean
Доброго дня.
Недавно тоже начал разбираться с USB-HID (STM32F4-DISCOVERY).
До этого, ООЧЕНЬ давно, работал с контроллерами, так что небольшое представление о них имею. С этой платой начал только разбираться, поэтому в его регистрах пока не очень.
По поводу ST-библиотеки - ужас+вынос_мозга, потыкал-повключал примеры и все, даже в голову мысли не пускаю об её использовании в своих проектах.
То, что я изобретаю велосипед (да еще и не оптимальной конструкции) - это все понятно. Но то, что это будет МОЙ велосипед - это и есть радость разработчика.
adnega, спасибо за исходники, скачал, начал разбирать их.
ViKo, у Вас получилось запустить на stm32f4?

Есть вопрос по файлу stm32f10x_map.h
Код
/* System Control Space memory map */
#define SCS_BASE              ((u32)0xE000E000)

Откуда взялся адрес 0xE000E000? (в референс мануале на stm32f10xx не нашел такого адреса)

И ещё:
Код
/*------------------------ SystemTick ----------------------------------------*/
typedef struct
{
  vu32 CTRL;
  vu32 LOAD;
  vu32 VAL;
  vuc32 CALIB;
} SysTick_TypeDef;

- этих регистров не нашел в доке, вообще про SysTick там пара фраз.

Подскажите, где искать, если кто знает.
Axel
Цитата(billidean @ Feb 8 2014, 08:56) *
...ООЧЕНЬ давно, работал с контроллерами

Контроллеры из "ООЧЕНЬ давно" похожи на современные как велосипед на трактор... Вам стоит начать "от печки" - почитать про Cortex-ы вообще. Там, например, Вы сразу найдете ответы на заданные Вами вопросы.
Я, кстати, тоже "велосипедист", CMSIS не использую, но ST-шные примеры, ввиду многократно обсуждавшегося качества их доки - элемент необходимый. Мне, например, они помогли написать простенькое и устойчивое Bulk-устройство, читаемое (мною) гораздо легче, чем код от ST.
billidean
Знаете, ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности.
Если бы я нашел ответы на свои опросы, то и не задавал бы их вообще.
Axel
Цитата(billidean @ Feb 8 2014, 13:45) *
...ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности...

Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...
aaarrr
Цитата(billidean @ Feb 8 2014, 09:56) *
Подскажите, где искать, если кто знает.

На сайте ARM в документации на ядро Cortex-M3.
ViKo
Цитата(billidean @ Feb 8 2014, 08:56) *
ViKo, у Вас получилось запустить на stm32f4?

Увы, пока еще нет. Все хожу вокруг да около. Но цель такая стоит.
billidean
Цитата(aaarrr @ Feb 8 2014, 15:36) *
На сайте ARM в документации на ядро Cortex-M3.

Спасибо за подсказку. Я не нашел этого момента в доке "референс мануале", поэтому и задал вопрос.

Цитата
Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...
я разбираю конкретный проект, который у автора работает. А использование ST мне просто не нравится, т.к. посторение этой "библиотеки" для меня неприемлимо. Как разработчику "своих" проектов, мне интересна разработка с ноля, и не по навязываемому шаблону, а именно по такой структуре, по которой я захочу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.