While Arduino and its libraries are the quickest way to interface with a sensor and blink an LED, sometimes you shouldn’t have to write and compile code to do something exceptionally simple. [Oliver] realized most of the overly simple functions of a microcontroller could be done from a command line running on that microcontroller and came up with the MiniPirate, the Arduino command line tool.
The MiniPirate is just a sketch compiled on the Arduino that allows pins to be set high or low, set a PWM value, or reading and writing I2C bytes. It’s basically an extremely slimmed down version of the Bus Pirate meant for extremely simple modifications of circuits and peripherals.
[Oliver] demos his MiniPirate by taking a DS1307 real-time clock, wiring up the I2C bus, and writing values to set the time. It’s a very simple implementation meaning he needs to write everything in hex, but it’s still easy enough to find a use in many other projects.
19 thoughts on “The Arduino Operating System”
Cool… nice project. It’s not really an operating system though is it? It’s a “monitor” in true 70’s hacker parlance.
A monitor usually allows for uploading to memory, assembling into memory, single step execution etc. This is just a command line interface and the instrucables page says exactly that.
Yes, so its not a monitor by wikipedias definition either. Not sure what you were aiming for there.
“is software that allows a user to enter commands to view and change memory locations on a computer”
i.e. change the value of peripheral registers.
Anyway, enough feeding the trolls.
Misunderstands what a monitor is, ducks out while making a comment about trolls.
Stay Classy, EccentricElectron.
Err, no. I’ve written several, and have first hand experience. Do you? What you seem to be missing is that the most basic form of monitor only needs to support memory/register manipulation – exactly what this code does – in the same way a switch based front panel boot loader might. The other stuff – breakpoints, assembly, disassembly and single stepping is all icing on the cake.
This tool doesn’t support access to arbitrary memory, so to call it a monitor is a huge stretch.
You could call it Control Program for Microcontrollers :P
Decimal and Binary input is supported too :-)
There is also Bitlash, a true command shell for Arduino. You can even write shell functions in it. http://bitlash.net/
Ohhh… I was actually expecting a threaded, message-based, priority scheduled, hardware managed, kernel protected… operating system =(
AVRs are harvard architecture, so a real OS is impossible. A port of bash or even BASIC with lots of additional builtin functions for I/O would be awesome, though.
Nonsense. There are real operating systems for AVR, such as Contiki.
Would be useful to take this idea and add a select few functions to the bootloader, turning it into a monitor. Manual entry of EEPROM values would be #1 on my list for cal constants and lookup tables. Perhaps also baud rate control and passing a startup value to a sketch.
There’s also avrsh and arsh. Hackaday wrote about avrsh a few years ago.
Somewhat related I presented the Gizmo more or less at the same time this post was presented on hackaday.
It provides full control of a STM32F3 Discovery board using a console.
And it also enables Forth like programming.
Great project! I actually made something very similar inspired by the Yun’s REST API:
You can for example make a digitalWrite HIGH on pin 8 with:
And it works with WiFi and Serial communications (USB, XBee, Bluetooth) Would love to get some comments on my project!
The MiniPirate is now available as an Arduino IDE library. Install, open-compile-flash the example, start debugging without coding :-)
Please be kind and respectful to help make the comments section excellent. (Comment Policy)