















Welcome to the Cypress Hills Website!
We're a group from the fall 2006 Georgia Tech ECE 4180 (embedded systems) class.
For our final project, we decided to create a Windows CE device driver that
would run on the newly available eBox2300. This driver would be for a
particular USB (Universal Serial Bus) HID (Human Interface Device) implemented
by the Cypress PSOCEvalUSB Board. This board has a built-in USB controller and
integrated peripherals which made it suited for our task.
The different aspects of this project included writing the firmware on the
Cypress board, writing the dynamically linked libraries that implemented the
driver on the eBox, and creating a C# GUI that demonstrates the driver in
action.
Since our main focus was creating the driver, the firmware on the device is
relatively simple. It can transmit the state of the board's pushbuttons and two
available potentiometers to a host. It can also receive commands from the host
and respond by changing the states of the board's LEDs and LCD display.
It was possible to implement the GUI aspect of the project relatively
independently, since that required only abstract information regarding what data
needed to be sent to the board and what data would be received from it.
The project was nevertheless quite difficult to implement, especially in regard
to the USB driver, due to the sheer complexity of the USB protocol and the lack
of available documentation of HID drivers on Windows CE. For instance, example
drivers or applications that might work on desktop Windows tended to prove
useless since they might use functions that the Windows CE API does not
implement.
Another difficult task was finding a way to reliably transfer data between the
Cypress board, the driver DLL, another DLL, and the C# GUI.
After these complexities were solved one by one, however, the project finally
came to completion. We hope that these pages may help others in developing
similar applications.