KryoFlux - Drive Control Prerequisites

2009-10-05

We have come a long way during the past 2-3 weeks, although none of it would have been possible without the previous work on Cyclone20, or the hundreds of hours invested into learning the various architectures involved (USB protocol, ARM architecture, ARM programming/assembly, ATMEL chips and devices, linker scripting, Windows drivers...) - probably a few thousand pages of docs... We wouldn’t do it all over again though! :)

Right now we have a USB protocol with test data that maxes out the available full speed USB bandwidth. We have core firmware, core Windows driver components, even a proper installer for the Windows driver.

We also worked out how to fix the boards to get them to work as expected, as some fail to enumerate properly. We also got external validation that our code is working on an official ATMEL evaluation board (thanks Luigi). Surprisingly it works. The code works from flash too. Many of the things KryoFlux does is somewhat... magical.

Recent work:

  • Cleaned up all the sources.
  • Added profile timer capable of measuring time in microseconds, useful for various high-precision timings.
  • Added system timer that provides the system clock.
  • Completely separated low and high level driver logic to make all hardware specific access including USB replaceable. This will make moving to more powerful devices far easier.

Also these changes make it possible to add drive support routines, although nothing can call them at the moment.

We are also trying to organise a design for a suitably large number of ready-printed PCB‘s that will hopefully provide a low-cost way of people getting hold of a KryoFlux-compatible device. We have the option to work with two drives on our new PCB, which will allow one 5.25 header and one 3.5 header so there is no need to remove and attach drives.