| Автор |
Съобщение |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 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 комуникация от самото начало
|
| Нед Окт 31, 2010 2:22 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Без да знам за какво точно иде реч - да ти кажа - на всички фирми, "безплатния" примерен код е такъв. Имам чувството, че го пишат някакви студенти в летния си стаж
Та съвета ми е - пускаш го колкото да се ориентираш кое как е и после го пренаписваш. Ако искаш да ти е мирна главата. Осбенно нещо такова като USB стек дето хич не е просто, колкото и да се пробват пройзводителите да те убедят, че е туряш чипа и ръгаш техния код и пускаш в продажба.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Нед Окт 31, 2010 10:51 am |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
USB-то по принцип е лудост, та ако искаш да работиш с него - отдели 10-ина дена здраво четене на спецификацията на 2.0, няма начин да не минеш през нея и след като относително добре я познаваш - намери класът, който ти трябва. изучи и него подробно, дет се вика на сън да те бутнат да знаеш какво прави. после си намери примерен код за стек и поддръжка на класа, който искаш да ползваш. тогава почни да четеш кода, вече разбирайки какво прави в отделните си части и да си дооправяш непознаването в него като използваш документацията на USB 2.0. Ще започнеш да виждаш тесните места в тоя код. И едва след като започнеш да виждаш тези издънки се опитвай да пишеш свой стек. Ако ще е за host хубаво изчети и спецификацията на host-a, то си зависи как е реализирана - и там има много, ама мнооого псувни. Изобщо да вземеш и да тръгне - Цецо ти го каза, НЯМА да стане. Особенно ако искаш да е за продукт.
|
| Нед Окт 31, 2010 11:04 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Убедих се в това. Доста четох в USB спецификацията. Обаче да напиша отначало целия USB стек е крайно решение. Да пренапиша потребителската част и да отделя USB от всичко останало - е това си е предизвикателство. Доста по-малко работа от цялостно пренаписване и пак ще получа в крайна сметка същото. Само че още ме мъчат съмнения. Май без изяждане на USB+HID спецификацията (и евентуално CDC за после) няма да мине. Май това е направил оня пич с "The cheapest dual trace scope in the galaxy".
|
| Нед Окт 31, 2010 11:09 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
10-тина, ама ако ги имам последователни, а аз ги нямам. повече ще са.
За хост още не си мечтая. Още повече PIC18 нямат хардуерна поддръжка на хост/OTG. По това което съм чел до момента, спецификацията/изискванията за хоста са поне 3-4 пъти повече от тези за device.
Това, за което питах е дали някой е виждал някакво приятно, олекотено четиво за USB като цяло и microchip-ския фреймуърк. USB спецификацията, като всяка сериозна спецификация цели предимно пълнота и точност, отколкото "да ти свърши работа". Може би на всеки екип който разработва USB софтуер/хардуер се полага по един дето чете като луд спецификацията и я превежда на останалите.
|
| Нед Окт 31, 2010 11:21 am |
|
 |
|
mountaineer
Ранг: Популярен
Регистриран на: Съб Дек 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 |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Мерси!
Първото нещо което направих е да направя копие и да махна всичко що не е за PIC18Fxxxx. main.c стана от 56к на 41к. Идиотско е тия всичките работи да ги напъхат в един файл, вместо да ги наредят в поддиректории - по една за всеки контролер.
|
| Нед Окт 31, 2010 3:19 pm |
|
 |
|
kiiid
Ранг: Почетен член
Регистриран на: Съб Сеп 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 |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
Аз пък си ползвам стека на CCS .. точно 2 файла единия ти е дескриптора на класа който се ползва а другия ти е самото USB и функциите му .... течно след 15 мин успях да подкарам HID девайс ... за дебъг ползвах Proteusa преди да го ръгна на реално устройство.
|
| Пон Ное 01, 2010 10:41 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
2 файла си е постижение. Откъде може да го дръпна това. Колкото до подкарването - не беше чак толкова трудно. пуснах половината примерчета, но още се боря с най-"простото" да го разуча. Горе-долу схванах повечето, но всичко е направено така като че ли USB е главното, което контролера ще прави, а останалото - второстепенни функции. То самия протокол не е чак толкова труден за разбиране, но има доста конкретизиране - всяко устройство си е намерило място из класовете. И въпреки това пак HID спецификацията е нищожна в сравнение с 650-те страници USB 2.0
|
| Пон Ное 01, 2010 10:56 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
 Добро утро
В 90% от реализациите които съм срещал при малките контролери, USB то при малко по сериозен трафик така яде от ресурсите на контролера, че освен да мигаш диоди....
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
Последна промяна Цецо на Пон Ное 01, 2010 11:03 am, променена общо 1 път
|
| Пон Ное 01, 2010 11:02 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
CCS беше някакво C. Предполагам че няма да е трудно да го конвертирам за Майкрочипското. Те главно константите се различават.
|
| Пон Ное 01, 2010 11:02 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
На мен ми хареса HID bootloader-a, който заема 4к. памет. Оня пич с осцилоскопа е направил целия осцилоскоп на малко повече от 1к. Даже bootloader-a ако го компилираш с lite версията на C18 не се хваща (някои оптимизации не са включени).
|
| Пон Ное 01, 2010 11:05 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
А не говорех за памет. То съвременните контролери това поне го имат достатъчно (горе долу). Имах предвид процесорно време, особенно в хай-приорити областта.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Ное 01, 2010 11:16 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Доколкото разгледах спецификацията, ако не ти трябва bandwidth не е чак толкова трудоемко. Примерно ако имаш температура и трябва да я ъпдейтваш на PC-то на всяка секунда - занимаваш процесора с каквото ти се иска и бълваш NACK, че си зает на всички заявки. Като си свършиш работата отговаряш. За останалото се грижи хардуера на микроконтролера. Е, не съм изчел подробно спецификацията на PIC18F4550 (оставих я за накрая щото без солидни знания за USB е безсмислено), но така ми се видя на пръв поглед. Може и да греша.
|
| Пон Ное 01, 2010 11:27 am |
|
|