Отговори на тема  [ 15 мнения ] 
USB с framework-a на Microchip 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение USB с framework-a на Microchip
От известно време се боря с USB framework-a на Microchop и нищо не мога да вдяна. Може би защото съм свикнал да си структурирам програмите по друг начин... main.c е 45к. лудост. При такива малки програмки, които се компилират за секунда, две защо се боят да разделят всичко на достатъчно файлове. И документацията куца ... или пък аз съм неграмотен да си я намеря/прочета.

Би било прекалено лесно но дали сте попадали на стъпка-по-стъпка туториал в нета.

Малко да конкретизирам. Интересува ме HID - Generic вход/изход, endpoints, UPS примера. Мисля да започна с вход/изход. Избрах си FSUSB демо платката с PIC18F4550. Подкарах примерите само с един светодиод и тук/там някой пул ъп за да е по-просто. Обаче кода ми е пълна мъгла. Видях че трябва да има Include път:
Microchip\Include
USB Device - HID - Custom Demos\Generic HID - Firmware

Не ми става ясно къде трябва да ми е:
1. инициализацията
2. обработка на останалите (не USB) прекъсвания
3. останалия код не-свързан с USB в главния цикъл
4. USB вход/изход

Малко ми остава да продължа с четенето на USB спецификацията и направа на цялата USB комуникация от самото начало

_________________
PIC SPBRG values calculator


Нед Окт 31, 2010 2:22 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Без да знам за какво точно иде реч - да ти кажа - на всички фирми, "безплатния" примерен код е такъв. Имам чувството, че го пишат някакви студенти в летния си стаж :)

Та съвета ми е - пускаш го колкото да се ориентираш кое как е и после го пренаписваш. Ако искаш да ти е мирна главата. Осбенно нещо такова като USB стек дето хич не е просто, колкото и да се пробват пройзводителите да те убедят, че е туряш чипа и ръгаш техния код и пускаш в продажба.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Нед Окт 31, 2010 10:51 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение 
USB-то по принцип е лудост, та ако искаш да работиш с него - отдели 10-ина дена здраво четене на спецификацията на 2.0, няма начин да не минеш през нея и след като относително добре я познаваш - намери класът, който ти трябва. изучи и него подробно, дет се вика на сън да те бутнат да знаеш какво прави. после си намери примерен код за стек и поддръжка на класа, който искаш да ползваш. тогава почни да четеш кода, вече разбирайки какво прави в отделните си части и да си дооправяш непознаването в него като използваш документацията на USB 2.0. Ще започнеш да виждаш тесните места в тоя код. И едва след като започнеш да виждаш тези издънки се опитвай да пишеш свой стек. Ако ще е за host хубаво изчети и спецификацията на host-a, то си зависи как е реализирана - и там има много, ама мнооого псувни. Изобщо да вземеш и да тръгне - Цецо ти го каза, НЯМА да стане. Особенно ако искаш да е за продукт.


Нед Окт 31, 2010 11:04 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
Цецо написа:
Осбенно нещо такова като USB стек дето хич не е просто, колкото и да се пробват пройзводителите да те убедят, че е туряш чипа и ръгаш техния код и пускаш в продажба.

Убедих се в това. Доста четох в USB спецификацията. Обаче да напиша отначало целия USB стек е крайно решение. Да пренапиша потребителската част и да отделя USB от всичко останало - е това си е предизвикателство. Доста по-малко работа от цялостно пренаписване и пак ще получа в крайна сметка същото. Само че още ме мъчат съмнения. Май без изяждане на USB+HID спецификацията (и евентуално CDC за после) няма да мине. Май това е направил оня пич с "The cheapest dual trace scope in the galaxy".

_________________
PIC SPBRG values calculator


Нед Окт 31, 2010 11:09 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
head_up написа:
USB-то по принцип е лудост, та ако искаш да работиш с него - отдели 10-ина дена здраво четене на спецификацията на 2.0

10-тина, ама ако ги имам последователни, а аз ги нямам. повече ще са.

head_up написа:
Ако ще е за host хубаво изчети и спецификацията на host-a

За хост още не си мечтая. Още повече PIC18 нямат хардуерна поддръжка на хост/OTG. По това което съм чел до момента, спецификацията/изискванията за хоста са поне 3-4 пъти повече от тези за device.

Това, за което питах е дали някой е виждал някакво приятно, олекотено четиво за USB като цяло и microchip-ския фреймуърк. USB спецификацията, като всяка сериозна спецификация цели предимно пълнота и точност, отколкото "да ти свърши работа". Може би на всеки екип който разработва USB софтуер/хардуер се полага по един дето чете като луд спецификацията и я превежда на останалите.

_________________
PIC SPBRG values calculator


Нед Окт 31, 2010 11:21 am
Профил WWW
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
Ето едно леко четиво:

http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdf

30 страници е в PDF формат, иначе в сайта го имат разхвърляно и на html.

По нета май се намират пренаписани кодове, ама са бая ограничени. По едно време се занимавах с такива, обаче накрая излезе по-лесно да поизчистя микрочепските спагети.

_________________
Manners maketh man.


Нед Окт 31, 2010 2:34 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
Мерси!

mountaineer написа:
По едно време се занимавах с такива, обаче накрая излезе по-лесно да поизчистя микрочепските спагети.


Първото нещо което направих е да направя копие и да махна всичко що не е за PIC18Fxxxx. main.c стана от 56к на 41к. Идиотско е тия всичките работи да ги напъхат в един файл, вместо да ги наредят в поддиректории - по една за всеки контролер.

_________________
PIC SPBRG values calculator


Нед Окт 31, 2010 3:19 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Сеп 24, 2005 2:00 pm
Мнения: 787
Мнение 
Да... USB си е направо самоубийство. Те Майкрочип добре са се постарали ама то самия протокол като е куц...
В момента се сещам за два три лесни начина за подкарване на USB:
1. Слагаш USB-UART конвертор чипче. Такива има доста и са дребни пари. Даже и Майкрочип пуснаха такова.
2. Пробвай PIC18 Simulator от www.oshonsoft.com. Там има BASIC дето пича доста се е постарал да го развие. Поддържа и USB на доста високо ниво от гледна точка на програмиране.
3. Пробвай USB с нещо друго. Аз например често наблягам за чиповете на Cypress за тая цел понеже в PSoC Designer целия USB стек е вкаран (скрит от тебе, не както Майкрочипския стек) и отгоре остават само няколко реда, предимно инициализации за да се подкара
:)


Пон Ное 01, 2010 12:39 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение 
Аз пък си ползвам стека на CCS .. точно 2 файла единия ти е дескриптора на класа който се ползва а другия ти е самото USB и функциите му .... течно след 15 мин успях да подкарам HID девайс ... за дебъг ползвах Proteusa преди да го ръгна на реално устройство.


Пон Ное 01, 2010 10:41 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
valioman написа:
Аз пък си ползвам стека на CCS .. точно 2 файла единия ти е дескриптора на класа който се ползва а другия ти е самото USB и функциите му .... течно след 15 мин успях да подкарам HID девайс ... за дебъг ползвах Proteusa преди да го ръгна на реално устройство.

2 файла си е постижение. Откъде може да го дръпна това. Колкото до подкарването - не беше чак толкова трудно. пуснах половината примерчета, но още се боря с най-"простото" да го разуча. Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции. То самия протокол не е чак толкова труден за разбиране, но има доста конкретизиране - всяко устройство си е намерило място из класовете. И въпреки това пак HID спецификацията е нищожна в сравнение с 650-те страници USB 2.0

_________________
PIC SPBRG values calculator


Пон Ное 01, 2010 10:56 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
npelov написа:
valioman написа:
Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции.


:) Добро утро :)

В 90% от реализациите които съм срещал при малките контролери, USB то при малко по сериозен трафик така яде от ресурсите на контролера, че освен да мигаш диоди....

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Последна промяна Цецо на Пон Ное 01, 2010 11:03 am, променена общо 1 път



Пон Ное 01, 2010 11:02 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
CCS беше някакво C. Предполагам че няма да е трудно да го конвертирам за Майкрочипското. Те главно константите се различават.

_________________
PIC SPBRG values calculator


Пон Ное 01, 2010 11:02 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
Цецо написа:
npelov написа:
valioman написа:
Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции.


:) Добро утро :)


На мен ми хареса HID bootloader-a, който заема 4к. памет. Оня пич с осцилоскопа е направил целия осцилоскоп на малко повече от 1к. Даже bootloader-a ако го компилираш с lite версията на C18 не се хваща (някои оптимизации не са включени).

_________________
PIC SPBRG values calculator


Пон Ное 01, 2010 11:05 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
А не говорех за памет. То съвременните контролери това поне го имат достатъчно (горе долу). Имах предвид процесорно време, особенно в хай-приорити областта.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Ное 01, 2010 11:16 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение 
Цецо написа:
А не говорех за памет. То съвременните контролери това поне го имат достатъчно (горе долу). Имах предвид процесорно време, особенно в хай-приорити областта.


Доколкото разгледах спецификацията, ако не ти трябва bandwidth не е чак толкова трудоемко. Примерно ако имаш температура и трябва да я ъпдейтваш на PC-то на всяка секунда - занимаваш процесора с каквото ти се иска и бълваш NACK, че си зает на всички заявки. Като си свършиш работата отговаряш. За останалото се грижи хардуера на микроконтролера. Е, не съм изчел подробно спецификацията на PIC18F4550 (оставих я за накрая щото без солидни знания за USB е безсмислено), но така ми се видя на пръв поглед. Може и да греша.

_________________
PIC SPBRG values calculator


Пон Ное 01, 2010 11:27 am
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни