|
Изучение модуля USB |
|
|
|
Apr 9 2013, 14:31
|
Группа: Новичок
Сообщений: 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 использовать не собираюсь. Ну и минимум функций, которые будут нужны для обмена данными с хостом.
|
|
|
|
|
 |
Ответов
(1 - 46)
|
Apr 9 2013, 15:48
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425

|
Жаль, конечно, что плохо подходит, но нужен именно он
|
|
|
|
|
Apr 9 2013, 16:41
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425

|
У меня отладочная плата STM32F4Discovery, приобретенная мной пару дней назад. На ней запускается один единственный проект, тот который идет с завода, остальные либо не компилятся, либо компилятся не работают. Пытался создать новый чистый проект, без использования SPL, не получается. Осложняется дело тем, что на эту библиотеку вообще нет никакого описания. Цитата USB_Host Чего то я не припомню где это я писал про хост??? Нужен USB HID Device. Цитата Если стоит цель освоить работу с USB, то лучше взять другой МК. Как то пропустил вторую часть сообщения. Я написал впервые заюзать модуль USB STM32, а не впервые заюзать шину USB. Разница принципиальна, так как на других МК уже юзал эту шину. Здесь же затык из за полного отсутствия документации, да и с примерами разобраться не так то просто.
Сообщение отредактировал TrampX - Apr 9 2013, 16:43
|
|
|
|
|
Apr 9 2013, 17:02
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Apr 9 2013, 17:14
|
Гуру
     
Группа: Свой
Сообщений: 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. Именно об эту особенность я и споткнулся в первый же день ...
|
|
|
|
|
Apr 9 2013, 17:19
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(TrampX @ Apr 9 2013, 21:02)  Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST. Предлагается изучение библиотеки оставить для самостоятельной работы, а на форуме начать озвучивать конкретные вопросы. Что именно не получается? Дело в том, что изучение библиотеки это не такой уж легкий путь с учетом сопровождающей ее документации. Описаны параметры функции, возвращаемый результат, но это и так в большинстве случаев понятно. Как строится логика работы с библиотекой нигде (по крайне мере я) не встречал. Можно подглядеть в примерах, но это лишь частный случай... Возможно, Вам будет легче плюнуть на эту библиотеку, разобраться с регистрами и написать что-то свое. Я пока так не поступил, тратил очень много времени. Отказавшись от ST-библиотеки, поднял свой USB-стек за несколько дней. Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются)
|
|
|
|
|
Apr 9 2013, 17:32
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425

|
Цитата Что именно не получается? Конкретные вопросы были озвучены в самом начале Цитата 1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib? 2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств? 3. Есть ли толковое описание библиотеки USB Похоже ответ на первый вопрос НЕТ. Второй пока остается без ответа  Третий похоже тоже НЕТ  Но вот по 3 вопросу, я вообще не могу найти ни одного! документа на STM32_USB-Host-Device_Lib_V2.1.0. Вот написать что то свое для модуля USB при отсутствии опыта программирования STM32 будет действительно сложно, да и рускоязычной документации или хотя бы его обсуждений на форумах я еще не встречал, а вот изучение модуля USB по англоязычному даташиту может действительно вынести моск...
Сообщение отредактировал TrampX - Apr 9 2013, 17:36
|
|
|
|
|
Apr 9 2013, 17:45
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425

|
Цитата Драйвер - это не обязательно компонент ПО для ПК. А я как раз подумал именно об этом. Цитата пришлось потратить несколько дней на написание и отладку своего варианта. Если есть возможность, можно поделиться для старта?
|
|
|
|
|
Apr 9 2013, 18:42
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(TrampX @ Apr 9 2013, 21:45)  Если есть возможность, можно поделиться для старта? Для старта. Может поможет. В исходниках много отладочной информации касательно работы USB. Правда, все для STM32F103. Но с минимальными "допиливаниями" (инициализация GPIO, NVIC) должно работать и на STM32F4.
|
|
|
|
|
Apr 9 2013, 19:11
|
Группа: Новичок
Сообщений: 7
Регистрация: 9-04-13
Пользователь №: 76 425

|
Спасибо. Буду смотреть и разбираться.
|
|
|
|
|
Apr 9 2013, 23:29
|
Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204

|
Цитата(TrampX @ Apr 9 2013, 18:31)  С самой шиной никогда не работал. Язык Си знаю более менее, но до профи далеко, поэтому разобраться с библиотеками без помощи пока не могу. Работа с устройством со стороны хоста это уже другой вопрос и следующий этап. На форуме st.com запомнилось следующее (в моем переводе): "Я считал , что хорошо знаю язык С, Но после ознакомления с билиотекой STM32_USB-Host-Device_Lib я понял , что этот язык я совершенно не знаю..." Цитата(kovigor @ Apr 9 2013, 21:14)  Без комментариев. Скажу про свой опыт использования этой библиотеки и USB - движка STM. Мне нужно было именно разобраться в исходниках USB Device'ов, поставляемых с этой библиотекой. Опыт работы с шиной и понимание того, как она работает, имелось - я писал свои реализации Device'ов для HID и Mass-Storage для NXP и Atmel, а также писал свою реализацию хоста для Atmel ARM9, т.е., я знал, что делаю, почему и зачем. Так вот, движок от STM и оная библиотека буквально вынесли мне мозги. Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили). Абсолютно согласен с этим мнением! Мне пришлось сильно модернизировать Host из этой библиотеки для работы с др. классами USB-устройств (не HID и MSC), др.типов передач и нескольких конфигураций/интерфейсов. "Врагу не пожелаешь" Потому хочется предупредить Вас, что этим можно заниматься имея большой запас времени и терпения! К перечисленным недостаткам добавлю: 1. Отвратительная документация! Практически отсутствует достаточное описание API. Все приходится искать в коде. А про его качество уже много сказали.... 2. Это не библиотека USB-стандарта в обычном понимании!!!! А только Очень ограниченная реализация только 2 классов USB устройств - HID и MSC. И для конкретной схемотехники оценочных плат. Любой шаг в сторону и головные боли вам обеспечены! Из достоинств: 1. Бесплатная 2. Все-таки она рабочая
|
|
|
|
|
Apr 10 2013, 08:42
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 11 2013, 19:52
|
Участник

Группа: Участник
Сообщений: 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. Плюс хочется комфорта.
|
|
|
|
|
Apr 11 2013, 20: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 с кучей магических констант) сидел бы над документацией и плевался ооочень долго. Мой диагноз: библиотеке быть! И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))
|
|
|
|
|
Apr 12 2013, 04:45
|
Участник

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

|
Цитата(adnega @ Apr 12 2013, 00:24)  Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать. ... В своих проектах я ее не использую. ... И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать)) Ну, собственно, хоть какая-то STLib лучше чем вообще её отсутствие. Главная притензия, кстати, не к её производительности. А к её форме. Код с использованием либы выглядит мягко сказать неприглядным, сложным для прочтения. Вообще, это только они догадались объединить и верблюжью и венгерскую нотации, культурные программисты, как правило, так не делают. В результате разные куски кода получаются гарантированно в разных нотациях. Что глаз не радует. Это лишь вершина айсберга под названием "стиль библиотеки". Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).
|
|
|
|
|
Apr 12 2013, 09:41
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

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

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

|
Цитата(adnega @ Apr 12 2013, 13:41)  Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.) Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая)) Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала. Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете? Кто бы и что не говорил про велосипедописание - это полезное дело, т.к. в результате рождаются разные альтернативы имеющимся продуктам. А потом бывает и последователи находятся! Если ваш вариант в спортивной форме - выкладывайте, я бы с удовольствием изучил!
|
|
|
|
|
Apr 12 2013, 11:39
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(fsergey @ Apr 12 2013, 15:10)  Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете? Тут все просто: я коммерческая организация, это не увеличит мои доходы, скорее наоборот... Опытом делюсь с удовольствием, а наработками... увы)) Да, и продуктом это назвать сложно. Опять же нет хорошей документации (кроме описаний doxygen). Скорее, конструктор, позволяющий за 1-3 дня поднимать средней тяжести проект, с дальнейшей недельной отладкой. При наличии 100+ реализованных более-менее схожих проектов любой разработчик может придти к такому решению (а не продукту). Главное решится "изобретать свой велосипед".
|
|
|
|
|
Apr 13 2013, 06:13
|
Гуру
     
Группа: Свой
Сообщений: 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-устройства (типа аппаратный ключ). Это для платежных систем, музыкальных автоматов. Работает без драйверов, можно втыкать-вытыкать устройство на горячую - демо-ПО все отслеживает и не падает. Вот наработки - вопросов от сообщества пока нет))
|
|
|
|
|
Apr 13 2013, 08:21
|

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

|
QUOTE (Golikov A. @ Apr 13 2013, 14:06)  Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить. К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай... Это стандартное заблуждение Наверно любой широкодоступный код годится для надежной работы, но требует оптимизации. И тот, кто потратил время на доводку такого кода (Free RTOS, scmRTOS, Fat FS и т.п.) вряд ли будет его раскрывать, если зарабатывает на этом. Оригинальность она ведь тоже денег стоит. Кстати, а кто это будет бесплатно тестировать, трассироать и утсранять баги в коде, хотелось бы услышать? Скорее всего народ сделает так, как написать выше, т.е. соптимизирует для себя и всё. Конечно, я сужу исключительно по себе, но кто так не делает?
--------------------
Выбор.
|
|
|
|
|
Jun 24 2013, 13:22
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
Jun 24 2013, 15:52
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 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()).
|
|
|
|
|
Jun 24 2013, 16:19
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(ViKo @ Jun 24 2013, 19:52)  Что бы такого здесь подправить. Можно свой ассемблерный стартап создать, но интересно именно на C испытать... В кейле я не силен... От стартапа ничего особенного не надо: инициализировать данные и передать управление в main(). Можно и на asm. А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том, что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку. Обсуждаемые исходники всего лишь демонстрация этого утверждения. Думаю, под кейлом запустить еще надо постараться (хотя первая версия была именно под кейл). Стартап и размещения для линкера это только часть неприятностей (другие неприятности связаны с использованием особенностей gcc, например, те же анонимные структуры и объединения; а еще и обработчики прерываний надо по особому оформлять). Тут я видел два пути: либо запускать под gcc, либо скопировать частично исходник в свой (ваш) проект.
|
|
|
|
|
Feb 8 2014, 05:56
|
Местный
  
Группа: Свой
Сообщений: 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 там пара фраз. Подскажите, где искать, если кто знает.
|
|
|
|
|
Feb 8 2014, 06:54
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(billidean @ Feb 8 2014, 08:56)  ...ООЧЕНЬ давно, работал с контроллерами Контроллеры из "ООЧЕНЬ давно" похожи на современные как велосипед на трактор... Вам стоит начать "от печки" - почитать про Cortex-ы вообще. Там, например, Вы сразу найдете ответы на заданные Вами вопросы. Я, кстати, тоже "велосипедист", CMSIS не использую, но ST-шные примеры, ввиду многократно обсуждавшегося качества их доки - элемент необходимый. Мне, например, они помогли написать простенькое и устойчивое Bulk-устройство, читаемое (мною) гораздо легче, чем код от ST.
|
|
|
|
|
Feb 8 2014, 11:15
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(billidean @ Feb 8 2014, 13:45)  ...ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности... Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...
|
|
|
|
|
Feb 8 2014, 15:59
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата(aaarrr @ Feb 8 2014, 15:36)  На сайте ARM в документации на ядро Cortex-M3. Спасибо за подсказку. Я не нашел этого момента в доке "референс мануале", поэтому и задал вопрос. Цитата Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед... я разбираю конкретный проект, который у автора работает. А использование ST мне просто не нравится, т.к. посторение этой "библиотеки" для меня неприемлимо. Как разработчику "своих" проектов, мне интересна разработка с ноля, и не по навязываемому шаблону, а именно по такой структуре, по которой я захочу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|