views:

134

answers:

6

I am looking to start simple hardware development, and hopefully progress enough to learn from reverse engineering.

I would like to start with a micro-controller and have a few in mind, such as Mbed and Arduino. What should I go with?

I was thinking maybe mbed because it has USB and ethernet features, among a few others, but I don't really know what Arduino has. Would getting bus-pirate (because its cheaper) work as well?

I really don't want to program in basic; my current parallax controller is a pain!

+1  A: 

Choice of micro-controller will depend on a number of factors:

  • what kind of interfaces do you need ?
  • how mich performance do you need ? (e.g. do you need to do anything computationally-intensive, like run DSP algorithms)
  • how much memory are you likely to need ?
  • is power consumption important ? (i.e. are you considering battery-powered applications ?)
  • what programming language, development environment, tools, etc, do you want to work with ? (could be as simple as assembler and little or no debugging capabilities, up to cross-compilers, JTAG debuggers, etc)
  • what sort of budget do you have ?
Paul R
* I am interested in reverse engineering (IE figuring out something works and make it do something its not supposed to)* seeing as I would be a beginner I wouldnt need all that much performance. but i do need expandability, i can work slow. just as long as i have features.* i dont realy know how much memory i need. seeing as i am just starting out. dont know what takes what really.* power isn't really a problem. i can easily make up for any lack of power* i know a little c and some cpp so i was hoping to stick with them.* fairly low. im looking at or under $100
Patrick Stallings
If reverse-engineering is the primary goal then you probably want to choose a micro-controller that is similar that used in the kind of device you want to reverse-engineer. E.g. if you wanted to reverse-engineer the Apple iPod Touch then you would probably want to go for an ARM CPU, perhaps a low cost ARM evaluation board.
Paul R
Hmm, ok, well as a beginner micro-controller, can you recommend either Mbed or Arduino? and do you think using something similar to the bus pirate would be an alternative?
Patrick Stallings
Bus Pirate is PIC, Mbed is ARM, Arduino is AVR - they all look very similar but use different CPU families. Whichever you choose you'll have a lot of fun and learn a lot, but if you have a specific type of application that you want to reverse-engineer then you want to choose something close to that in terms of CPU family and interfaces etc.
Paul R
+3  A: 

I would really recommend that you start with the Microchip micro controllers. They are cheap, simple architecture and the development tools are free. You will have to program in Assembler or C (I highly recommend Assembler for this task).

Raphael
+1: 8-bit PIC microcontrollers and C (or assembly if you're brave) are a good place to start.
Jon Cage
I kind of feel that there is much to gain in using assembly for 8-bits micro controllers. C is overkill, with an 8-bit micro controller you WANT to be close to the hardware.And of course it's a wonderful educational experience.
Raphael
+1 love the PICs. Cheap, you can get some of them for under a dollar. About $2 with USB. Though I disagree with @Raphael, C is the way to go and definitely *not* overkill.
kenny
I have to agree, PIC's are great, I'm not sure what other chips use it but alot of the PIC MCU's are ICSP programmed, and just having a simple PICKit 1 will allow programming of a good variety of chips, I use C, but I agree assembly can really enlighten you on some things if you can take the time to learn it.
onaclov2000
+2  A: 

Get an Arduino.

It's silly easy to get the toolchain set up and start writing working code. They are cheap, and all of the tools are open source. Since it uses a socketed DIP chip, if you fry the chip you can replace it easily, and you can also take a programmed chip and stick it into a board of your design.

As for mbed, do you really want to be reliant on their web app to compile your own software?

Drew Wagner
+4  A: 

I can't recommend the Arduino enough. Trivially easy to set up and program for, 100% open source, you can program for it using C, C++, Wiring, there is a glut of tutorials out there and the majority are well written and easy to follow, you can communicate with it via OSC (which means that you can send and receive commands over the network via Processing, Quartz Compositor, LibLO, etc).

Check out this link of 40 Arduino projects to get an idea of what's possible.

kubi
A: 

I recommend start with PIC microcontrollers because they are easy to understand an program. The development tools are free and chip programmers are cheap.

Latter, when you are more familiar with the concepts move to the ARM family because they`re cheap and powerfull.

RHaguiuda
A: 

The arduino is fine, I like atmel very much, but dont like the avr instruction set. The avr and the arduino in particular are very popular. The lillypad from sparkfun.com with the additional usb to serial/power thing is a good combo, no soldering required and you can start to play right away, single usb connector, lower priced. The arduini pro mini, is similar but some soldering is required to use it (or dangling wires across). I would recommend the cordium armmite pro, it is lpc not atmel but arduino like and should mate up with other arduino peripherals if you go down that path. You definitely dont need the basic interpreter that comes with it, easy to wipe that off and use the lpc bootloader thing to load your own programs (see lpcstuff.blogspot.com). I am/was anti-lpc but happened to play with the mbed the last day or two after retiring it immediately to the reject pile moments after I got it. The blue leds still give me migraines, but the good news is you are not tied to their sandbox web development thing. You can easily roll your own programs as you can with the arduino and armmite pro. the nice thing about the mbed is mounts like a flash drive and you copy your .bin file to the device and press the button to load it. doesnt get much easier. Another one is the sam7s-256. Olimex (note all of these items are available at sparkfun.com) the sam7s-h256 or sam7s-h64 header board is what I am referring to. It is an atmel arm chip. Atmel is developer friendly as any avr user will tell you, sam-ba now runs on linux which is a requirement for me, it is just a well done chip and board ready to be used for manythings. The arm boards will easily outrun the arduino/avr boards, although in these form factors are a bit more expensive. The msp430 family is another good one, get an ez430 direct from TI and the three pack of additional boards is another $10, basically four boards for the price of one or half of one of the items above). Very good instruction set, good tools (gcc 4.x, llvm). I would avoid the pic, sure many folks, myself included, cut their teeth on a pic, from an overall user perspective from number of easy to use boards at a good price, easy to find and use tools, support groups, example web pages, they just cant compete with the arm and avr. And their instruction set is far worse than the 8051 which is pretty bad. pic32 which is a mips is another story, still not as well packaged and user friendly but the instruction set is no longer the main problem.

dwelch