Adam's Foolish Projects

Just a place to keep links to my foolish projects.

Development Tools

MRI: The Monitor for Remote Inspection allows you to debug your LPC1768 based mbed device. Link your mbed executable with the mri library, attach the GNU debugger (gdb) to your mbed over the serial port, and start debugging. Supports many of the same debugging features as found in full flown JTAG debuggers: breakpoints, single stepping, variable inspection/modification, watchpoints, etc.

CrashCatcher: Library to link into your GCC compiled firmware to catch and log Hard Faults for the purpose of post-mortem debugging.

CrashDebug: Post-mortem debugging tool which can load crash logs created by CrashCatcher and make them available for debugging under the GNU debugger, GDB.

GCC4MBED: A project to allow mbed code to be compiled with GCC. It even maintains the convenience of the mbed libraries. Supports Windows, OS X, and Linux.

mbed-LPC1768 (Cortex-M3) Projects

NeoPixelTree: An example for controlling Adafruit NeoPixels via DMA based SPI output.
FreqGen: Simple audio waveform generator. Uses DMA based DAC.
Animated Jack-O-Lantern Eyes: Bringing some life to a Halloween pumpkin with 8x8 LED matrices.
Green's Weather Station: Web server based weather station using Sparkfun Weather Meters.
SDCard: My implementation of a DMA based SDCard driver for the LPC1768.
mbedAdafruitLCD: A mbed port of Adafruit's 2.8" TFT LCD with Cap Touch Breakout Board w/MicroSD Socket SPI driver.
trackMYmbed: A mbed port of EA5HAV Javi's Trackuino (The Arduino APRS tracker).

mbed-LPC11U24 (Cortex-M0) Projects

Joystick as USB Mouse: Not a very useful project but fun first project with the mbed-m0 beta hardware. It uses an analog thumb stick from Sparkfun to control the absolute position of the mouse cursor on a PC.
Blackberry Trackball as USB Mouse: Demonstration of using the Blackberry trackball breakout board from Sparkfun and exposing it as a mouse on a PC.

File Systems

As I work on my lwip based HTTP server, I have found the need for different files systems at various stages of its development and testing. This is a list of some file systems that I have used so far.

FLASH File System: The file system image itself is appended to the program binary generated by the compiler and loaded into the FLASH of the mbed device along with the code. This allows for the remaining 512K of device FLASH to be used as a fast read-only source of file data. The read performance is >38 MB/second.

Fake File System: There are no actual files in this file system. It just allows an application to open a file of any name and pretends that all files are the same length. No actual data is read from the files but they will return EOF at the appropriate point. Useful to simulate an ultra-fast read-only source of file data.

5 comments on Adam's Foolish Projects:

12 Jan 2012

Nice work. How fast is the FLASH file system? Have you done any testing on it? How long would it take for example to save a 32kB file?

12 Jan 2012

I guess if I am going to use the fast descriptor for that file system, then I should actually measure it :) I will write a simple test to actually calculate its read speed.

Martin Smith wrote:

How long would it take for example to save a 32kB file?

Yeah, I didn't make that very clear, this is actually a read-only file system. It is sort of like creating an ISO for a CD-R and then burning it to disc. You create the file system image on your PC and then append it to your program binary before uploading to the mbed device. The mbed code can only read from the resulting file system image. It can't be written to from the mbed. Even on the PC, there is no support for updating the file image once it is created. You just create a new file system image each time you want to change its contents.

26 Feb 2012

Martin, I finally created a little test which would read a test file multiple times and then calculate the average read speed of the FLASH File System. Here is the output from that test:

/flash/testfile.bin is 176406 bytes in length.
Running 1000 test iterations.
Read 176406000 bytes in 4317 milliseconds.
40863100.000000 bytes/second.
38.970089 MB/second.
11 Aug 2012

Could you pleas supply a 'DUMMIES' program for your new file system,

I am extreaml interested in long file names for a future project,

I have skimmed through your code (realy quickly)

but cannot find if it is:

1.Local file system,

2.SC card,

or what i am realy looking for .. is a seperate memory chip (atmel 45..... similare to the one attached to Majic Chip)



12 Aug 2012

The documentation is here:

ceri clatworthy wrote:

but cannot find if it is:

1.Local file system,

2.SC card,

None of the above! This file system lives in the same 512K of FLASH as the currently executing code.

Please log in to post comments.