log in | register | forums
Show:
Go:
Forums
Username:

Password:

User accounts
Register new account
Forgot password
Forum stats
List of members
Search the forums

Advanced search
Recent discussions
- AMCS free versions are live! (Gen:12)
- New RISC OS !FamTree application reviewed (News:1)
- Returning to ImpressionX (News:)
- RISC OS interview with Richard Keefe (News:2)
- South West Show is fast approaching (News:4)
- January News Round-up (News:)
- NetFetch reaches Version 5 (News:1)
- Primesolve (PP:12)
- RISC OS FR : The Raspberry Pie contest (News:23)
- BBC BASIC Reference Manual updated (News:4)
Related articles
- Newsround
- RISC OS on OMAP - the future?
- RC15 bring RISC OS to any Raspberry Pi
- Aemulor/Spellings.net account details posted online
- RISC OS 5.20 released, free Portsmouth show in planning
- Newsround
- RISC OS on The Register
- Easier video playback on RISC OS?
- Software migrates to the Beagleboard
- Lego Madness
Latest postings RSS Feeds
RSS 2.0 | 1.0 | 0.9
Atom 0.3
Misc RDF | CDF
Site Search
 
Article archives
Acorn Arcade forums: News and features: New Iyonix USB mass storage drivers released
 

New Iyonix USB mass storage drivers released

Posted by Jeffrey Lee on 18:00, 1/11/2009 | , ,
 
As you may or may not already know, over the past few weeks I've been working on improving the performance of RISC OS 5's USB mass storage drivers. Although RISC OS Open have yet to make an official announcement about the availability of the drivers, they are in fact available for download now from the ROOL website.
 
Read on for some brief benchmarks, and instructions on how to install the drivers on your Iyonix.
 

Benchmarks

This is probably the bit that will interest you most. Rather than bombard you with numbers I'll cut straight to the chase: The new drivers are much faster.

Performance - large transfers

Performance of large transfers has improved significantly. A design flaw in the old driver meant that performance was limited to a peak performance of around 3MB/s for large transfers (One 32KB buffer every centisecond). The new driver removes that limitation, so transfer speeds are much more dependent upon the speed of the USB device. Saving a 66MB sprite file to an SD card used to take 23 seconds (2.8MB/s) - it now takes 13 (5.07MB/s). Other people have reported speeds of up to 20MB/s for a USB hard drive.

Performance - small transfers

To measure the performance of small transfers I used a simple BASIC program to create 1000 files. With the old drivers it used to take 1151 seconds to complete. With the new driver it takes 93 seconds. This is again possible due to the removal of the "one transfer every centisecond" constraint from the driver. For comparison, when I ran the same test on my Iyonix's hard disc, it completed in 53 seconds.

Performance - interactive file copy

Interactive file copies benefit greatly from the increased performance of both large and small transfers. With a 4MB "Next" slot and "Faster" mode enabled, the time taken to copy a 128MB file to an SD card decreased from 3 minutes 7 seconds (0.7MB/s) to 30 seconds (4.2MB/s).

Conclusion

Like I said, it's faster.
 
All of the above tests were performed on a RISC OS 5.12 Iyonix, with the SD card formatted for RISC OS by !SCSIForm. USB performance on a BeagleBoard typically gives better performance, but that's probably something that deserves its own article!

Installation

Note that these steps only apply to Iyonix owners. BeagleBoard owners merely need to make sure they're running a recent ROM image (29/10/09 or newer), as all the required modules are contained in the ROM.
 
On Iyonix machines the USB mass storage drivers are soft-loaded by the !Boot sequence. At the moment the only way to obtain the full set of modules from the ROOL site is to download the full !Boot sequence/disc image - this is the "HardDisk4" download on this page.
 
If you don't have it already, you'll also need a copy of the !UnTarBZ2 application to allow you to extract the files (available from here).
 
If you're feeling brave you can replace your entire !Boot sequence with the new one - but be warned that there may still be a few kinks that need working out. In particular there's no USB2 softload, so you probably don't want to replace your !Boot sequence if you're running an old version of RISC OS 5 that doesn't have the USB2 drivers in ROM.
 
For the safer approach to using the modules, you need to copy the contents of !Boot.RO510Hook.Boot.PreDesk.SoftSCSI to !Boot.Choices.Boot.PreDesk.SoftSCSI in your own boot sequence. You'll also need to copy the RTSupport module from !Boot.Resources.!System.500.Modules to the identical place in your own boot sequence.

Any problems?

Feel free to mention them in the ROOL forums!

Links


 
  New Iyonix USB mass storage drivers released
  richcheng (15:13 2/11/2009)
  davehigton (22:21 2/11/2009)
    Phlamethrower (23:16 2/11/2009)
      jeff-doggett (07:40 3/11/2009)
        hubersn (11:29 3/11/2009)
          jeff-doggett (07:41 4/11/2009)
 
richard cheng Message #111757, posted by richcheng at 15:13, 2/11/2009

Posts: 653
Wow. This is pretty remarkable. Good work, Phlamey!
  ^[ Log in to reply ]
 
Dave Higton Message #111762, posted by davehigton at 22:21, 2/11/2009, in reply to message #111757
Member
Posts: 3
Ah... but most flash memory devices are not ADFS-formatted. Does the speed-up apply to FAT-formatted devices too?
  ^[ Log in to reply ]
 
Jeffrey Lee Message #111764, posted by Phlamethrower at 23:16, 2/11/2009, in reply to message #111762
PhlamethrowerHot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff

Posts: 15057
Yes, FAT-formatted devices are faster too, although I don't have any exact figures to give you!
  ^[ Log in to reply ]
 
Jeff Doggett Message #111766, posted by jeff-doggett at 07:40, 3/11/2009, in reply to message #111764
Member
Posts: 20
I've tried using Fat32Fs to read a 70MB file, old drivers took 44 seconds, new ones take 29 seconds.
This is not as good as the figures above for filecore formatted devices, so it looks like I've still got some more work to do to see if I can speed it up.
  ^[ Log in to reply ]
 
Steffen Huber Message #111770, posted by hubersn at 11:29, 3/11/2009, in reply to message #111766
Member
Posts: 69
I've tried using Fat32Fs to read a 70MB file, old drivers took 44 seconds, new ones take 29 seconds.
This is not as good as the figures above for filecore formatted devices, so it looks like I've still got some more work to do to see if I can speed it up.
Jeff, would you be interested to extend Fat32FS in a way to let it access the devices in a more direct way, i.e. directly accessing the USB/SCSI/ATAPI layer? I guess this would be a bit faster and a lot more universal (e.g. capable of using those 2048 bytes/sector devices) than the current "use filecore as a block device driver" approch.
  ^[ Log in to reply ]
 
Jeff Doggett Message #111785, posted by jeff-doggett at 07:41, 4/11/2009, in reply to message #111770
Member
Posts: 20
Jeff, would you be interested to extend Fat32FS in a way to let it access the devices in a more direct way, i.e. directly accessing the USB/SCSI/ATAPI layer?
I have no idea how to do this. It would require someone to replace the call to DiscOp with the relevant code.

I guess this would be a bit faster and a lot more universal (e.g. capable of using those 2048 bytes/sector devices) than the current "use filecore as a block device driver" approach.
No, the 512 byte block size is (very) hard coded into the efsl library that I used.

Jeff

[Edited by jeff-doggett at 07:41, 4/11/2009]
  ^[ Log in to reply ]
 

Acorn Arcade forums: News and features: New Iyonix USB mass storage drivers released