реклама на сайте
подробности

 
 
> Изучение модуля USB
TrampX
сообщение Apr 9 2013, 14:31
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



Здравствуйте. Впервые на этом форуме, решил все таки зарегистрироваться, похоже самостоятельно мне не разобраться в этот раз. Хочу впервые заюзать аппаратный модуль 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 использовать не собираюсь. Ну и минимум функций, которые будут нужны для обмена данными с хостом.
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 46)
aaarrr
сообщение Apr 9 2013, 15:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Боюсь, модуль USB у STM32F4xx очень плохо подходит для первого самостоятельного знакомства с шиной.
Если стоит цель освоить работу с USB, то лучше взять другой МК.
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 15:48
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



Жаль, конечно, что плохо подходит, но нужен именно он sad.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 9 2013, 16:11
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Примеры для STM32F4DISCOVERY запускались без каких-либо проблем.
Например, обновление прошивки с USB-флешки.
Или проигрывание wav-файла с USB-флеш.
Пробовал модифицировать, добавил управление громкостью с акселерометра.
Не заработал только цифровой микрофон (видимо связано с использованием плавучки, которое на тот момент было не актуально - поэтому дальше не копал).
У Вас собственное железо или используете указанную выше отладочную плату?
PS. Дальше запуска примеров не разбирался с комплектом поставки (либы), поскольку не сторонник "чужих велосипедов", а изобретаю потихоньку свои)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 9 2013, 16:27
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А почему USB_Host? Цель была - изучить HID-устройство, подключаемый к компьютеру, правильно?
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 16:41
Сообщение #6





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



У меня отладочная плата STM32F4Discovery, приобретенная мной пару дней назад. На ней запускается один единственный проект, тот который идет с завода, остальные либо не компилятся, либо компилятся не работают. Пытался создать новый чистый проект, без использования SPL, не получается. Осложняется дело тем, что на эту библиотеку вообще нет никакого описания.

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

Цитата
Если стоит цель освоить работу с USB, то лучше взять другой МК.
Как то пропустил вторую часть сообщения. Я написал впервые заюзать модуль USB STM32, а не впервые заюзать шину USB. Разница принципиальна, так как на других МК уже юзал эту шину. Здесь же затык из за полного отсутствия документации, да и с примерами разобраться не так то просто.

Сообщение отредактировал TrampX - Apr 9 2013, 16:43
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 9 2013, 16:47
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Так Вы же сами писали:
Цитата(TrampX @ Apr 9 2013, 18:31) *
С самой шиной никогда не работал.


Если опыт есть, то достаточно User Manual'а для написания своего драйвера. Но STM'овский USB весьма своеобразен, скажем прямо.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 9 2013, 16:49
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



насколько глубоко хотите заюзать?
до уровня стандарта и полного понимания что происходит, или библиотеку приколотить костылями и успокоиться?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 9 2013, 16:53
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



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

Цитата
была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 9 2013, 16:56
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Для использования USB в своих проектах документации хватает (Reference Manual).
Для изучения USB конечно же не хватит. Нужны спецификации USB классов (я использовал только HID и CDC) + книжка по самому USB (часть вопросов снял труд Агурова).
Модуль USB в STM32 мягко говоря "нетривиальный")) Например, чтобы установить какое-нить значение бита в регистре нужно его считать и если значение устраивает, то записать в эту позицию "0", а если нужно изменить на противоположенное - то "1". Где-то так...
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 17:02
Сообщение #11





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



Цитата
для написания своего драйвера.
Зачем 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.

Сообщение отредактировал TrampX - Apr 9 2013, 17:05
Go to the top of the page
 
+Quote Post
kovigor
сообщение Apr 9 2013, 17:14
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(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. Именно об эту особенность я и споткнулся в первый же день ...
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 9 2013, 17:19
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(TrampX @ Apr 9 2013, 21:02) *
Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.

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

Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются)
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 17:32
Сообщение #14





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



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

Сообщение отредактировал TrampX - Apr 9 2013, 17:36
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 9 2013, 17:34
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(TrampX @ Apr 9 2013, 21:02) *
Зачем HID нужен драйвер???

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

В свое время попробовал воспользоваться библиотекой от ST, так как очень не хотелось тратить время ради одного проекта. Заставить себя в результате так и не смог, пришлось потратить несколько дней на написание и отладку своего варианта.
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 17:45
Сообщение #16





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



Цитата
Драйвер - это не обязательно компонент ПО для ПК.
А я как раз подумал именно об этом.
Цитата
пришлось потратить несколько дней на написание и отладку своего варианта.
Если есть возможность, можно поделиться для старта?
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 9 2013, 18:42
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(TrampX @ Apr 9 2013, 21:45) *
Если есть возможность, можно поделиться для старта?

Для старта.
Может поможет. В исходниках много отладочной информации касательно работы USB.
Правда, все для STM32F103. Но с минимальными "допиливаниями" (инициализация GPIO, NVIC) должно работать и на STM32F4.
Прикрепленные файлы
Прикрепленный файл  usb_cdc_complex.zip ( 146.9 килобайт ) Кол-во скачиваний: 314
Прикрепленный файл  usb_hid_template.zip ( 681.71 килобайт ) Кол-во скачиваний: 188
Прикрепленный файл  stm32f103t4.txt ( 44.8 килобайт ) Кол-во скачиваний: 441
 
Go to the top of the page
 
+Quote Post
TrampX
сообщение Apr 9 2013, 19:11
Сообщение #18





Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425



Спасибо. Буду смотреть и разбираться.
Go to the top of the page
 
+Quote Post
alx125
сообщение Apr 9 2013, 23:29
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204



Цитата(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. Все-таки она рабочая
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Apr 10 2013, 01:02
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



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

Но, если это четко понимать, то, все равно, полезная. Большую часть описаний харда можно почерпнуть только из нее, поскольку иные описания на ST отсутствуют.
Go to the top of the page
 
+Quote Post
vptr
сообщение Apr 10 2013, 08:42
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 15-11-07
Пользователь №: 32 363



Цитата(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 тоже слышал о проблемах. Как-то оно работает, но до оптимальной работы надо допиливать. Да и это не совсем библиотека, это пример с добавкой всякого ненужного кода для моргания свтодиодом и т.д. Весь этот мусор потом надо вычищать.

Сообщение отредактировал vptr - Apr 10 2013, 08:52
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Apr 11 2013, 15:52
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(rudy_b @ Apr 10 2013, 05:02) *
Могу еще добавить - совершенно сознательно запутанная так, чтобы сложнее было разобраться.


У меня иногда складывается ощушение, что производители контроллеров и производители демоплат и программисты, что пишут примеры(которые бесплатно распространяются) и производители платных решений -- это вся большая мафия ). Одни пишут что покупайте наши контроллеры -- для них есть бесплатные примеры. Другие, видимо, специально так коряво пишут эти примеры, чтобы покупались платные решения. biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
fsergey
сообщение Apr 11 2013, 19:52
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 19-07-12
Пользователь №: 72 832



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

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

Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???
Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 11 2013, 20:24
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(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 с кучей магических констант) сидел бы над документацией и плевался ооочень долго. Мой диагноз: библиотеке быть! И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 11 2013, 21:56
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Прыгнуть с F103 на F107 легко, в 107 не нужен транзистор без которого в 103 не обойтись. Также со временем ушли от написания своих драйверов, под WIN(xp/7).
Но неприятность с USB, после 2006 года остается, когда нужно платить за большой пул. VID, PID свое берут.
Go to the top of the page
 
+Quote Post
fsergey
сообщение Apr 12 2013, 04:45
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 19-07-12
Пользователь №: 72 832



Цитата(adnega @ Apr 12 2013, 00:24) *
Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать.
...
В своих проектах я ее не использую.
...
И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))

Ну, собственно, хоть какая-то STLib лучше чем вообще её отсутствие.
Главная притензия, кстати, не к её производительности. А к её форме. Код с использованием либы выглядит мягко сказать неприглядным, сложным для прочтения. Вообще, это только они догадались объединить и верблюжью и венгерскую нотации, культурные программисты, как правило, так не делают. В результате разные куски кода получаются гарантированно в разных нотациях. Что глаз не радует. Это лишь вершина айсберга под названием "стиль библиотеки".
Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 12 2013, 09:41
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(fsergey @ Apr 12 2013, 08:45) *
Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).

Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)
Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))
Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.
Go to the top of the page
 
+Quote Post
fsergey
сообщение Apr 12 2013, 11:10
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 19-07-12
Пользователь №: 72 832



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

Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете? Кто бы и что не говорил про велосипедописание - это полезное дело, т.к. в результате рождаются разные альтернативы имеющимся продуктам. А потом бывает и последователи находятся!
Если ваш вариант в спортивной форме - выкладывайте, я бы с удовольствием изучил!
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 12 2013, 11:39
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(fsergey @ Apr 12 2013, 15:10) *
Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете?

Тут все просто: я коммерческая организация, это не увеличит мои доходы, скорее наоборот...
Опытом делюсь с удовольствием, а наработками... увы))
Да, и продуктом это назвать сложно. Опять же нет хорошей документации (кроме описаний doxygen).
Скорее, конструктор, позволяющий за 1-3 дня поднимать средней тяжести проект, с дальнейшей недельной отладкой.
При наличии 100+ реализованных более-менее схожих проектов любой разработчик может придти к такому решению (а не продукту).
Главное решится "изобретать свой велосипед".
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 13 2013, 05:06
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.
К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 13 2013, 06:13
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



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

Я не настаиваю на своей правоте. Наработки я не то чтобы скрываю, просто не афиширую. Было пару случаев, когда ими воспользовались сторонние люди, но ничего кроме реакции "круто, оно работает" ничего не получил. Чтобы довести код до совершенства нужна как минимум соответствующая квалификация: от "молодых" толку мало, а у "старичков" нет времени и желания ковыряться в чужом коде, когда уже есть или свои наработки, или стандартные библиотеки. Имя мне делает не то как я пишу код, а то что готовое изделие работает, обладает соответствующим функционалом, при определенной стоимости и времени разработки. Это с одной стороны. С другой стороны: все люди разные,у каждого свое мировоззрение. Не редко приходилось сталкиваться с разработчиками, более авторитетными чем я, и склонять к своему мнению - хм, не тут-то было. Тряся кодом ничего не докажешь, нужно время чтобы заметить разницу в подходах к программированию в целом. Начинать нужно со студентов. Года два назад помогал с одной разработкой родному ВУЗу - провел несколько семинаров для аспирантов. Приглашали вести курс на постоянной основе, но времени к сожалению нет.
По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше. Ничего оригинального в них нет. Хотя замахнулся на USB HID "свисток" с управлением входами-выходами, показанием температуры, возможностью подключения монето- и купюроприемников, приема ИК-кодов, проигрывания музыки через бузер (по нотам и длительностям), пробрасыванием RS-232, функциями сторожевого таймера, расчета MD5 для выполнения функций взаимной авторизации как ПК, так и USB-устройства (типа аппаратный ключ). Это для платежных систем, музыкальных автоматов. Работает без драйверов, можно втыкать-вытыкать устройство на горячую - демо-ПО все отслеживает и не падает. Вот наработки - вопросов от сообщества пока нет))
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 13 2013, 08:21
Сообщение #32


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



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

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

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

Кстати, а кто это будет бесплатно тестировать, трассироать и утсранять баги в коде, хотелось бы услышать? Скорее всего народ сделает так, как написать выше, т.е. соптимизирует для себя и всё. Конечно, я сужу исключительно по себе, но кто так не делает? rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 24 2013, 12:08
Сообщение #33


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(adnega @ Apr 13 2013, 09:13) *
По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше...

В примере USB_HID не хватает файла stm32f10x_map.h
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 24 2013, 13:11
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



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

Во вложенном архиве.
Прикрепленные файлы
Прикрепленный файл  include.zip ( 8.85 килобайт ) Кол-во скачиваний: 75
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 24 2013, 13:22
Сообщение #35


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(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
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 24 2013, 15:18
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



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

Думаю, что в define.h должно быть так:
Код
#define     WORKLED_bit                        PER_BIT_ADDR(GPIOA_ODR, WORKLED)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 24 2013, 15:52
Сообщение #37


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Теперь осталось последнее. Кейл создает скаттер-файл следующего вида.
Код
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()).
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 24 2013, 16:19
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(ViKo @ Jun 24 2013, 19:52) *
Что бы такого здесь подправить. Можно свой ассемблерный стартап создать, но интересно именно на C испытать...

В кейле я не силен...
От стартапа ничего особенного не надо: инициализировать данные и передать управление в main().
Можно и на asm.
А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,
что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.
Обсуждаемые исходники всего лишь демонстрация этого утверждения.
Думаю, под кейлом запустить еще надо постараться (хотя первая версия была именно под кейл).
Стартап и размещения для линкера это только часть неприятностей (другие неприятности связаны с использованием
особенностей gcc, например, те же анонимные структуры и объединения; а еще и обработчики прерываний надо по
особому оформлять). Тут я видел два пути: либо запускать под gcc, либо скопировать частично исходник в свой (ваш) проект.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 24 2013, 16:36
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(adnega @ Jun 24 2013, 19:19) *
А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,
что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.

Цель та же - понять USB в STM32. От примеров из библиотеки голова кругом идет. Хочу пройтись по функциям, минимально необходимым.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 24 2013, 17:48
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



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

В таком случае, правильнее было бы запустить проект по второму варианту (с вашим стартапом и размещением для линкера).
Как написать стартап на С в кейл, по моему, заслуживает отдельной темы))... Хотя для Cortex-M3 все пишется достаточно
просто на ЯВУ С. Правда, я не сторонник настраивать PLL и другую периферию до вызова main().
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 8 2014, 05:56
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Доброго дня.
Недавно тоже начал разбираться с 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 там пара фраз.

Подскажите, где искать, если кто знает.
Go to the top of the page
 
+Quote Post
Axel
сообщение Feb 8 2014, 06:54
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



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

Контроллеры из "ООЧЕНЬ давно" похожи на современные как велосипед на трактор... Вам стоит начать "от печки" - почитать про Cortex-ы вообще. Там, например, Вы сразу найдете ответы на заданные Вами вопросы.
Я, кстати, тоже "велосипедист", CMSIS не использую, но ST-шные примеры, ввиду многократно обсуждавшегося качества их доки - элемент необходимый. Мне, например, они помогли написать простенькое и устойчивое Bulk-устройство, читаемое (мною) гораздо легче, чем код от ST.
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 8 2014, 10:45
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Знаете, ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности.
Если бы я нашел ответы на свои опросы, то и не задавал бы их вообще.
Go to the top of the page
 
+Quote Post
Axel
сообщение Feb 8 2014, 11:15
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(billidean @ Feb 8 2014, 13:45) *
...ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности...

Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 8 2014, 12:36
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(billidean @ Feb 8 2014, 09:56) *
Подскажите, где искать, если кто знает.

На сайте ARM в документации на ядро Cortex-M3.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 8 2014, 15:00
Сообщение #46


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(billidean @ Feb 8 2014, 08:56) *
ViKo, у Вас получилось запустить на stm32f4?

Увы, пока еще нет. Все хожу вокруг да около. Но цель такая стоит.
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 8 2014, 15:59
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Цитата(aaarrr @ Feb 8 2014, 15:36) *
На сайте ARM в документации на ядро Cortex-M3.

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

Цитата
Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...
я разбираю конкретный проект, который у автора работает. А использование ST мне просто не нравится, т.к. посторение этой "библиотеки" для меня неприемлимо. Как разработчику "своих" проектов, мне интересна разработка с ноля, и не по навязываемому шаблону, а именно по такой структуре, по которой я захочу.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01922 секунд с 7
ELECTRONIX ©2004-2016