Кажи малко по-конкретно доколко си запознат с USB.
Всичко което съм правил беше преди доста време, така че някои термини вече съм ги забравил. Иначе практическият ми опит в USB е, че успях да пригодя една програма за управление на USB мишката (т. е. става дума за HID устройство) писана за DOS за операционната система MenuetOS. Така че разглеждайки тази програма (която пазя) лесно ще си припомня как стоят нещата по отношение контрола от страна на компютъра. Адаптацията не беше твърде елементарна, защото трябваше да заменя BIOS извикванията със съответните функции за писане в pci регистрите и още други неща свързани с асемблера.
Между другото USB достъпа да мишката беше от интелски тип. Освен него има още един вид, който не му помня името, но съдържаше частицата "open". Аз използвах първото, защото такова имах на компютъра си (а исках да го тествам практически и наистина се получи). Не си спомням дори и протокола USB 1.0 или USB 2.0 беше.
Един въпрос, например, само за да си посверим часовниците: знаеш ли как дадено устройство ще "каже" на компютъра какво е?
Тези неща си ги пише в USB документацията. Разглеждах такава, докато се опитвах да подкарам едно USB флопи. Не се получи, защото не можах да подкарам DMA в MenuetOS (май прекъсванията правеха някакви мизерии). Иначе стартирането и спирането на двигателчето беше без проблемно.
При правенето на USB устройства, изчисляването на елементите е най-малкия проблем. Обикновено се ползва готово схемотехническо решение, дадено от производителя, което само се прилага.
За кой производител става дума? Туторияла който съм показал не показва ли в някакъв смисъл подобно готово решение? Между другото в оня туториял кварцът, който се ползва за тактов генератор е огромен. Също и самата интегрална схема е огромна. При реализирането на реална схема (а не само за тестове, като е показано) тези компоненти имат ли си "нормални" размери?
Но, за да имаш комуникация с компютъра, трябват доста познания. Мисля също, че Асемблер не е добра идея. Има други езици, с които много по-лесно да осъществиш това, което искаш.
С асемблер е далеч по-лесно трасирането, ако написаното от теб се тества например се емулатор. При горните експерименти аз емулирах MenuetOS с емулатора qemu. Този емулатор е много добре написан, така че можеш да схванеш начина на действие и по самия код.
От кой клас ще са устройствата, които искаш да правиш?
Крайната цел ще бъде да са от класа на USB флашките (забравих точно как се казваха). Но може отначало да опитам само HID.
Как стои въпросът с драйверите?
Крайната цел, която съм си поставил е за стандартно устройство, така че няма да имам нужда от драйвер. По времето на разработката мисля да ползвам въпросната MenuetOS, прилагайки директно управление. Така че няма да имам отново нужда да пиша драйвери за истинска операционна система.