МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Проект с USB разъемами шилда разъемов

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3509

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 16
Подумав, как было бы хорошо подсоединять к проектам на Марсоходе 2 внешние накопители или SD кардридеры, обнаружил, что нет ни одного проекта, который бы использовал бы USB разъемы шилда разъемов.

Добавку к Amber ARM не предлагать :) Кроме него уже ничего не поместится. Надо что-то под ядро поменьше и попроще. То, что в сети под 8-битные ядра находил, работает в сочетании с различными вспомогательными микросхемами, а не чисто в ПЛИС.

Вроде должно подойти вот это:
opencores.org/project,usbhostslave - есть ли у кого-то какие-либо "за" и "против"? Ну, или, тем более, практический опыт и предложения?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3525

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 16
вроде как этот "чистый" без использования каких-то встроенных в FPGA или в микроконтроллер USB 1.1 Host - opencores.org/project,usbhostslave
тоже "хочет" некой железной поддержки чего-то там в виде www.base2designs.com/DUSB-PHY.htm

как считаете, Марсоходовский шилд разъемов вообще способен работать с USB или там эти разъемы непонятно для чего?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3527

Должен работать, исходя из доверия к разработчикам Марсоходда2. Если проверять, то на простых устройствах, типа клавиатуры или чего попроще.
Для SD-ридера работы шибко много - на пустом месте не получится, сначала нужен рабочий USB стек, потом сверху него нужно "прикручивать" ATA\ATAPI протокол, и только на этом уровне можно будет писать/читать сектора на внешнем устройстве.

Думаю, полноценно реализовать это всё в железе не получится - не хватит логичесих элементов. Половину или больше работы придтся делать программно.

Я тоже задумываюсьь об USB - мечтаю добавить этот интерфейс к своему проекту. Если желаете, то давайте вместе сформулируем требования к этому устойству и подумаем над интерфейсом и свойствами устройства. К примеру, в настоящий момент меня устроит USB устройство, которое поместится в 1000 логических элементов и займет не более 8 Кб внутренней памяти. Если есть время и желание, то можно хотя бы поговорить об USB. Может быть вместе чего-нить придумаем, а если не придумаем, то хоть хорошо разберёмся в проблеме.
Спасибо сказали: Chaosorg

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3528

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 16
Хочется комментариев в этой теме от авторов марсоходовских шилдов, ибо я встречал высказывания про всякие PHY части интерфейса, где явно требуются подтягивающие резисторы.

По поводу нехватки логических элементов - я для себя сейчас рассматриваю такой путь - какой-то URISC проц и умение загружать эмулируюущие RISC и CISC микроинструкции откуда-то. Т.е. мне кажется разумным попробовать сделать медленнее, но компактнее, чем Amber ARM. Вторым путем вижу попытку понять текущую ситуацию по каким-то совсем простым процессорам (чуть ли не 8 бит), которые тем не менее успешно работают с USB при наличии какой-то аппаратной поддержки. Вот тут два пути - поиск исходников FPGA-аналога аппаратной части слабого компактного процессора или что-то новое, с учетом того, что наш слабый процессор может работать на совсем других частотах. Существование коммерческих проектов обнадеживает.

Опять же - я привел две ссылки на то, что вроде как весьма компактно - нужен комментарий тех, кто не пионер :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3539

Chaosorg пишет: Хочется комментариев в этой теме от авторов марсоходовских шилдов, ибо я встречал высказывания про всякие PHY части интерфейса, где явно требуются подтягивающие резисторы.

Мне бы тоже было интересно узнать мнение господина umarsohod о подтягивающих резисторах.
И кстати, насчёт PHY - на мой взгляд, именно PHY и есть самое интересно, а всё что выше - при желании можно реализовать программно.

По поводу нехватки логических элементов - я для себя сейчас рассматриваю такой путь - какой-то URISC проц и умение загружать эмулируюущие RISC и CISC микроинструкции откуда-то. Т.е. мне кажется разумным попробовать сделать медленнее, но компактнее, чем Amber ARM. Вторым путем вижу попытку понять текущую ситуацию по каким-то совсем простым процессорам (чуть ли не 8 бит), которые тем не менее успешно работают с USB при наличии какой-то аппаратной поддержки. Вот тут два пути - поиск исходников FPGA-аналога аппаратной части слабого компактного процессора или что-то новое, с учетом того, что наш слабый процессор может работать на совсем других частотах. Существование коммерческих проектов обнадеживает.


Хорошая тема для "холивора". Amber хорош несколькими вещами - это ARM, к нему есть масса компиляторов, на Марсоход2 его переносили те же люди. что и делали сам Марсоход (или тот же человек - не суть важно), но проект съел почти все логические элементы.

Удивтельно, что Вы ещё не определились с процессором - я хоть и "пионер" в схемотехнике, а от вида паяльника боросает в дрожь, но опыт низкоуровневого программирования всяких встраиаемых штук у меня имеется. И драйвер для "железки" написать могу. А почему бы Вам не посмотреть на вот этот процессор - marsohod.org/forum/proekty-polzovatelej/...lya-platy-marsokhod2 - вероятно, он лучше других подходит для реализации USB.

А если говорить о процессорах вообще, то я поставил всё на свой процессор. И даже считаю что смог бы Вас убедить в его преимуществах и достоинствах по сравнению с конкурентами. Но в другой раз и в другой теме. :)

Опять же - я привел две ссылки на то, что вроде как весьма компактно - нужен комментарий тех, кто не пионер :)


Кстати, обращали ли внимание вот на этот проект - marsohod.org/projects/marsohod2/253-usb-trecker
Вроде без подтягивающих резисторов работает?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от nckm.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3540

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 16

alman пишет: Удивтельно, что Вы ещё не определились с процессором - я хоть и "пионер" в схемотехнике, а от вида паяльника боросает в дрожь, но опыт низкоуровневого программирования всяких встраиаемых штук у меня имеется. И драйвер для "железки" написать могу. А почему бы Вам не посмотреть на вот этот процессор - marsohod.org/forum/proekty-polzovatelej/...lya-platy-marsokhod2 - вероятно, он лучше других подходит для реализации USB.

Не определился потому что много соблазнов и потому, что заинтересовался пониманием того, какая аппаратная поддержка нужна AVR, чтобы хватало даже его. И это больше будет соответствовать стилю работы с ПЛИС - разгружать проц специализированным железом, достигая недостижимых для софта скоростей.

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

Я делал что-то на форте и ассемблере во времена DOS еще. Свои интерпретаторы простые писал. Вон, для осциллографа какое-то что-то своеобразное сделал ради развлечения. Т.е. я понимаю удовольствие от "я сам по себе". Но может URISC поэтому и привлекателен будет - вроде процессор свой, а чужие системы команд может понимать - исходники можно чужие брать. Наш импортозамещающий Эльбрус, опять же, так же поступает:) Это, опять же, если замахиваться на 32битный, но компактный проц. Вам же USB нужен не просто так - какие задачи будут потом? 16 бит хватит (это я с учетом предложенной Вами ссылки на 16битный, вроде как, проект)?

Ну а проект USB трекера потому и работает, что он лишь слушает чужую, не им организованную физику процесса передачи данных. Он и не приемник и не передатчик. Поэтому и без отвечающих за физику элементов.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #3541

Chaosorg пишет: Не определился потому что много соблазнов и потому, что заинтересовался пониманием того, какая аппаратная поддержка нужна AVR, чтобы хватало даже его. И это больше будет соответствовать стилю работы с ПЛИС - разгружать проц специализированным железом, достигая недостижимых для софта скоростей.

Идею понял - вполне достойная и востребованная идея. Жаль, что цели у нас разные. Но наверное до какого-то уровня можно использовать общие вещи.

Конечно, я бы не отказался от какого-то более умного и быстрого устройства, которое умеет DMA передачу и всё работу по управлению пакетами берёт на себя, но если бы у Марсохода2 было бы чуть больше логических элементов...

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

От готового ПО я удалился на расстояние стадарта POSIX - всё что выше - пусть живёт, всё что ниже - переписать. Включая железо :)
Если серьёзно, то изначально и была идея добавить несколько инструкций к какой-нибудь существующей SoC. Чем глубже "рылся" в проектах процессоров на opencores.org , попутно изучая Verilog, тем меньше все эти проекты нравились. А потом показалось что можно сделать интереснее.

Это, опять же, если замахиваться на 32битный, но компактный проц. Вам же USB нужен не просто так - какие задачи будут потом? 16 бит хватит (это я с учетом предложенной Вами ссылки на 16битный, вроде как, проект)?

Вроде бы он 32-х битный, если не ошибаюсь. Хотя, автор проекта тоже может читать эту тему - может быть пояснит.

Мой процесссор в некотором роде тоже компактный:
Total logic elements 	6,710 / 10,320 ( 65 % )
Total combinational functions 	5,750 / 10,320 ( 56 % )
Dedicated logic registers	 2,404 / 10,320 ( 23 % )
Total pins	45 / 95 ( 47 % )
Total virtual pins 	0
Total memory bits	190,464 / 423,936 ( 45 % )
Embedded Multiplier 9-bit elements	0 / 46 ( 0 % )
Total PLLs	0 / 2 ( 0 % )
Но, к сожалению, для сколь-нибудь серьёзных применений он пока не готов. :(

Ну а проект USB трекера потому и работает, что он лишь слушает чужую, не им организованную физику процесса передачи данных. Он и не приемник и не передатчик. Поэтому и без отвечающих за физику элементов.

После Вашего ответа почитал подробнее про USB и полазил по схемам Марсоход2. Таки есть резисторы. Номиналы точно соответствуют спецификации. Просто они стоят не на плате расширения, а на самом Марсоходе2 четыре штуки - R73, R74 для одного порта и R77, R78 для второго. Смотрел по вот этой схеме - marsohod.org/downloads/category/21?download=120 Таки у Марсохода2 всё в порядке на этом фронте.

Насколько я понял, чтобы определить максимальную скорость USB устройства, USB-хост каким-то образом детектирует "speed identification resistor", но у Марсохода2 нет такой схемы, чтобы определить наличие резистора. Но это не должно быть проблемой, поскольку любое устройство должно уметь работать на low speed, а там уже можно "напрямую спросить" устройство о поддерживаемых скоростях. Как-то так.

А вот дальше - засада. В проекте анализатора есть код приёмника и, судя по всему, он вполне рабочий - может принимать по байту. А вот кода передатчика нет. Вероятно, основательно переделав код приёмника , можно соорудить передатчик, который сможет передавть по одному байту (по аналогии с приёмником). NRZI-кодирование и bit stuffing не так уж и сложно реализовать. Однако, тут возникают сомнения, что можно программно побайтно передавать USB пакеты - временные интервалы между байтами будут нарушены и синхронизация сорвётся - т.е. передаваемый USB пакет надо каким-то образом заранее формировать в памяти, а передавать его уже должен контроллер. И контрольные суммы надо бы считать аппаратно.

В общем, на мой взгляд, основная проблема заключается в реализации механизма взаимодействия процессора и USB-контроллера. Впоследствии все операции, типа согласования протокола и поддержки различных режимов работы, можно переложить на железо, но для начала вполне подошла бы возможность формирования пакета "извне", т.е с помощью процессора.


Часть сообщения скрыта для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от nckm.

Проект с USB разъемами шилда разъемов 3 года 5 мес. назад #4235

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 16
Вроде как дальше всех с легковесным CPU и минимальной аппаратной поддержкой критически важных процессов продвинулся автор Navre ( opencores.org/project,navre ) и, ссответственно, SoftUSB ( opencores.org/project,softusb ). Та ссылка, что я раньше показывал обеспечивает больше аппаратной поддержки, но я пока не понял в каком проекте и с каким процессором на ней что-то делали.

А еще очень интересно, что USB Host сделали на Parallax Propeller. В силу своей специфики этот процессор тянет программную реализацию USB с гарантированными стабильными таймингами.

Интересно, как устроена работа картридера по USB? По идее, это какой-то мост к контактам SD-карты. Наверное, это самое простое и полезное для марсохода USB устройство, с учетом наличия у него относительно большой SDRAM, но отсутствием слота для SD-карты. Хочется оценить реальность получения информации из FAT32 системы SD карты или обычной флешки устройством без многослойной (драйвер, ядро, софт) организации, а чтобы как BIOS у материнки (умеют же они грузиться с флешек). Пока не могу найти какого-то примера. Короче, тема достойная. Читать надо много :)

P.S.

один пример все-таки точно есть - это шилд usb хоста для Arduino, но можно ли повторить используемую там микросхему в FPGA пока непонятно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.
  • Страница:
  • 1
Время создания страницы: 0.189 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Вопросы о плате Марсоход Проект с USB разъемами шилда разъемов