LUFA 090401 Released, ARM Arrives

Posted on March 31st, 2009

As usual, I’ve gotten impatient and released the next stable version of my LUFA library early. As always, you can grab the latest official releases from the project page, or grab the latest revision straight from the SVN if that’s more your style.

USBtoSerial demo now discards all Rx data when not connected to a USB host, rather than buffering characters for transmission next time the device is attached to a host.

Added new F_CLOCK compile time constant to the library and makefiles, to give the raw input clock (used to feed the PLL before any clock prescaling is performed) frequency, so that the PLL prescale mask can be determined

Changed stream wait timeout counter to be 16-bit, so that very long timeout periods can be set for correct communications with badly designed hosts or devices which greatly exceed the USB specification limits

Mass Storage Host demo now uses a USB_STREAM_TIMEOUT_MS of two seconds to maintain compatibility with poorly designed devices

The NO_CLEARSET_FEATURE_REQUEST compile time token has been renamed to FEATURELESS_CONTROL_ONLY_DEVICE, and its function expanded to also remove parts of the Get Status chapter 9 request to further reduce code usage

Makefile updated to include output giving the currently selected BOARD parameter value

Board Dataflash driver now allows for dataflash ICs which use different shifts for setting the current page/byte address (thanks to Kenneth Clubb)

Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy interfacing with a FAT library for dataflash file level access

Which all points to this release being a good evolution for the project. I’m particularly excited by the fix made early in this revision which made LUFA hosts compatible with LUFA devices, so that LUFA devices can now control one another effectively. Happy coding everyone, and be sure to give feedback!

This week a number of packages arrived for me. A week or two ago I got my Acer Aspire One back from repairs, which gave me a huge wave of relief after it spent over a month lost in Acer-limbo. Good customer service, but lousy repair times. Unless the thing manages to melt into a pile of sludge in the meantime, I’ll probably live with any faults that might develop until near the end of the 12 month warranty, so I get maximum use of the machine while still covered.

From one of the generous donations made to me by a LUFA-appreciator, I purchased an extended 9-cell battery for my AAO. I was actually aiming for the slightly slimmer 6-cell, but when I found that the price difference was only a few dollars I decided to splurge. The end result is a 7.5 hour practical runtime (Wifi on and in use) with the added bulk and weight not significantly detracting from the machine. If nothing else, it makes going to-and-from University much more tolerable now that I’ve loaded it up with videos to pass the time.

Also on my doorstep this week was my new ARM7 development board and JTAG from Cassainho (picture pending). It seems like a nice board, and I look forward to playing around with it. I’ve managed to get a handle on my EVK1101, after binning my cross-architecture makefile idea and just going with the AVR32Studio automated build process, as I couldn’t figure out the different switches and linker scripts required to make a correct binary. I’ve succeeded in controlling the GPIOs, so I’m confident that the porting of the main LUFA code can now commence. All I need now is to work up the motivation to do so, as it’s a daunting task.

Once I get an initial port working on the EVK1101, I’ll be merging the MultiArch branch back into the mainline (by hand, since I hadn’t worked out how to properly move and delete files using SVN – lesson learned) and progressing with an ARM port. Now, if only I wasn’t so damn lazy…

Comments: 5

You talked on the AVR32 IDE, for sure you are using it for the AVR32… and for the ARM7, which IDE will you use? — I recommend the Eclipse, which have support for C and C++ programming plus Make files, plus JTAG Debug using OpenOCD. Please read the tutorial “Using Open Source Tools for working with ARM” by Mr. Jim Lynch:http://www.atmel.com/dyn/resources/prod_documents/atmel_tutorial_source.zip

Preferrably, I’d rather write my C source in my own text editor, and only use the IDEs for programming the chip and simulation/debugging — this is the workflow I use for AVR8s and I would love it if I could continue with it across platforms. However, the AVR32 and all their linking complexity has taught me that it is a bad idea, so I’ll probably end up using Eclipse. AVR32Studio is actually just a modified Eclipse (which I find horribly complicated) so hopefully the knowledge I gain from one can be applied to the other.

Thanks for your work on LUFA project, it was very usefull for me.
I would like to inform you that I tried to download (yesterday and today using 2 different computers) your last release, but after downloading, when I try to open the file using windows XP embedded zip tools, it gives me an error (like invalid zip file). If I try to open it with winrar, it extracts just one file with invalid information…