USB 1.1 UHCI improvements GSoC - Week 1

by VardanM | May 30, 2016

Hi! My name is Vardan and during this GSoC I'll work on UHCI driver improvements.



Why ROS?

Now, when human is becoming more and more dependent on computer it becoming critical to have open-source OS on it. You can feel really secured only when you‘re able (allowed) to see any part of OS which can control all your data. For the student who is studying computer science, the best choice was Linux (especially when classroom computers working only under it). I have dived into Linux kernel and have done some investigation of it, especially on USB stack. Kernel development became my passion, because here you’re understanding the basics and becoming a really generic programmer who can easily switch to any sphere of programming market. Despite the fact that before this time I was worked only in Linux environment, I don’t think that I am true Linuxoid, I think I am “openSourceOSoid” who think that he can do something to contribute open source. After some investigation of open source OS field I’ve found that there is very few choice between Linux and Linux :D. Also I have found ReactOS, but I never dared to dig deeper into it. Maybe because NT internals were absolutely new for me. So I was only following some blogs and publications about ROS. The main place of info was ‘habr” (Russian-language site). When I saw that ROS is accepted for GSoC it was the pulse for me, I say to myself “It’s time to start investigation of NT kernel !!! ”.


In this post I have provided my status for community bonding period and week of coding. The points are described as steps, next reports will be much shorter.

  • Setup working environment for ROS.

Installed RosBE, compiled and ran latest version of ROS codes on VBox and Vmware virtual machines (there is different USB 1.1 controllers). Investigated ROS debugging methods. Setup debugging environment for ROS. Faced issue with command line debugger, it switches to debug mode but screen freezes in GUI and no terminal is seen. Anytime I was able to run debugging commands on freezed VM and saw them in putty connected to VM via COM port.

  • Setup working environment for Windows 2k3.
    Prepared vdisk images with retail and partly checked versions of 2k3. Done initial testing of USB drivers from ROS in Win 2k3 virtual environment on Vmware and VBox.

  • Participated in ReactOS team’s monthly meeting in IRC.
    Introduced myself and my project. Got familiar with reporting style of ROS community.

  • Prepared test plan and sent it for review.

I have planned to test ROS host controller drivers by injecting them separately into win2k3 USB stack. I have prepared smoke test spreadsheets for each controller (OHCI,UHCI,EHCI) and sent it to Thomas for review. He suggested to inject ros-usbhub too. So we decided to do both with usbhub injected too and with only usb?chi. This will allow to have overview of inconsistencies within ROS's hcd-hub pair and same pair of 2k3.

  • Investigated Windows NT architecture. (The biggest part of time)

    • Concepts and Tools

    • System Architecture

    • System Mechanisms

    • Management Mechanisms

    • Startup and Shutdown

    • Processes, Threads, and Jobs

    • Memory management

    • I/O subsystem

  • Done ROS’s USB host controller drivers testing,
    Tested ROS’s OHCI, UHCI and EHCI drivers. Tested by driver injection into Win2k3 usb stack see corresponding spreadsheets below. Here is presented resulsts only for ROS's hcd injection int 2k3 stack, without hub. Results for hcd-hub pair injection will be presented in next post.