Drag and drop code onto this ARM dev board

On the continuing list of homebrew ARM dev boards we’ve seen over the past few months, [Squonk42]’s USBug is one of the best we’ve seen. Like many other ARM boards, it breaks out a member of the Cortex M0/M3 family into a 40-pin DIP, but unlike all the others, [Squonk] designed it so you can drag and drop code onto the microcontroller just like a USB thumb drive.

[Squonk]’s trick relies on a certain breed of NXP LPC11xx/LPC13xx microcontrollers. These chips feature a ROM-based mass storage, meaning you can compile code on your desktop and simply shuffle it over to the USBug, no external programmer required. Here’s the relevant app note (PDF in a zip file. Double whammy).

Of course, the USBug features the I/O you’d generally expect from the current crop of Cortex-M3 devices, all while serving up 64 kB of Flash and 12 kB of RAM.

[Squonk] says he’d like to put the USBug on Kickstarter, but unfortunately he’s not a US citizen. In the spirit of Open Hardware, perhaps some maker-based electronics manufacturer will pick up where [Squonk] is forced to leave off.

Squonk didn’t design that feature, NXP designed that feature, you can go buy any LPC134x family microcontroller, slap it on a circuit with the requisite passives for USB, and have it come up as a flash drive on your computer ready to receive a compiled firmware.

USB bootloader is in ROM you see, burned in straight from the factory.

But the question isn’t HDL for the chip circuits, but source code for the bootloader?

Is a development board open source hardware when it contains a ROM-based closed source bootloader? It seems a number of products are claiming to be “open source hardware”, with a proprietary ROM-based bootloader. Are they really open source hardwarE?

It the answer is yes, does the exact same hardware lose its “open source hardware” status if it has a closed source bootloader programmed into memory by someone other than the chip manufactuter?

Okay, so the bootloader code inside the ATMega that enables ISP – that’s in ROM, just the NXP USB bootloader is in ROM.
The chip manufacturers have to provide some level of bootloading or ISP so that you can get a binary image into the flash. None of them AFAIK publish the source or make the ROM contents public. So maybe nothing is truly open source?

I’m being petty and pedantic, playing devils advocate, I don’t believe I’m right… But the line has to be drawn somewhere.

The ISP features on Atmel’s chips appears to be a hardware-based state machine. Even if it is implemented with ROM-based instructions executed by the CPU, it certainly isn’t comparable to ROM-based firmware than implements a USB mass storage device using the processor’s USB peripheral.

Many other chips provide a hardware interface for programming which most certainly is not firmware-based.

Atmel does ship closed source bootloaders pre-programmed to some of their ATMEGA chips, but most come completely blank. On Arduino Uno, the 8u2 or 16u2 chip comes with a closed source bootloader, which the Arduino people erase and replace with an open source version.

A chip might contain a close source ROM-based firmware image, but if it’s never used in the normal course of usage, that’s very different than building a development board, and calling it “open source hardware”, which uses that closed source code as the primary method of developing code.

The bootloader is a ROM-based firmware that is automatically brought up at boot time. Depending ons some condtiions (like pin status, code checksum), it presents the device as a mass storage device on USB. Even if Atmel provides some state diagrams of this feature, it is not hardware-based.

This board is open-hardware, as it provides all the required files need to make your own from scratch, and does not require any special tool to reprogram the chip, as the USB mass-storage specification is public and supported by existing open-source software tools.

I don’t understand the appeal of this drag & drop style of downloading code. Sure, you save some money on a programmer. But those programmers also support debuggers. Perhaps, as a software engineer, my bugs are more sophisticated than other people’s ( :-) ) but I would reject any development platform without debugging support.

I haven’t used Arduino, but my impression is that it has no hardware debugging support either.

ST Microelectronics’ ST-Link programmer/debugger is a whopping $22. I’ll take that any day over having to debug with print statements (especially when most microcontroller projects have no built-in print output).

Dude thats exactly what i say but for some reason people just like bugs and errors… Arduino and Other type of devices are awesome when updates are planned… or for a final release to be update-able by end user…

for the hobbiest and engineer that crap isnt needed.

The thing is this is still good since ISP is brought out. So you casn still use a programmer/debugger…

Then if you find a bug in testing or just have a update you can simply drag in the new code…

Atleast with an Arduino (AVR) you can auto-upload-reset from your make script.

While you can copy a file to a device, without a way to reset automatic, this is still a step backwards. Because it adds more steps during development cycle, which is more steps you can do wrong or forget.