I have been having a hard time trying to know if ARM is a microprocessor or microcontroller or something else?
ARM – Is ARM a Microprocessor or Microcontroller?
arm
Related Solutions
Often I have a question, but I don't even know enough about the topic to know how to use the right words to phrase the question. Is one of the following one of the questions you really intended to ask?
Which is better, the Micro 2440 "Stamp Module" or the Micro 2440 "SDK-Board" ( both from FriendlyARM ), for running a program I custom-write to display stuff on a touch panel? Both. These two boards are designed to plug into each other; neither one is useful alone. (But perhaps the "Stamp Module" could plug into some carrier board other than the SDK board, as described below).
Can I buy a bunch of FriendlyARM Mini 2440 SBC SDK-Board + Stamp Module and FriendlyARM accessories from FriendlyARM, install Linux on it, install my own custom application on that, put it in a box and sell them to customers? Yes.
Are there standard ARM Linux boards, small TFT monitors, etc. kind of like the FriendlyARM Mini 2440 SBC, that I could buy as separate components, assemble, then put my own custom application on it and sell to customers? Yes. Some of them are listed at "motherboards that run Linux".
Do I need to custom-design my own hardware from scratch? No. While you could do that, another option is to assemble separate components, as mentioned above.
If none of the standard ARM Linux board was quite what I wanted, could I save money by hire someone to custom-design a handheld Linux board for me that has exactly what I need, rather than using these off-the-shelf modules that have a bunch of stuff I don't want? Maybe. Because of economies of scale, standard off-the-shelf components are going to be lower cost than custom-designed products produced in lower quantities. It's often lower total cost to use a OTS component rather than design something new, even when the OTS component includes several things you never use. (This is one reason why smaller, lighter products are sometimes more expensive than bigger, heavier products that do more).
If the standard ARM Linux boards plus the accessories I need are too big to fit in the handheld shape I want, but only because they include a bunch of stuff I wasn't going to use anyway, could I hire someone to more-or-less copy the design, leave out the parts I don't use, and fit it into the shape I want? Yes.
- Option 1: prototype with a pile of "open hardware" boards. Once you confirm that the prototype does everything you want it to do (except it's the wrong shape and weighs too much), you or any engineer you hire can copy-and-paste the original schematics into one big schematic, edit that big schematic to cut out all the stuff you don't need, (optionally) cut the schematic into multiple boards, and then lay out one or (optionally) several PCBs in the appropriate shape you need. The engineer can design the PCB so it connects the remaining components exactly the same way, so the software can't tell the difference.
- Option 2: If it looks like a pile of non-open-hardware boards, all from the same manufacturer, will do what you want, you can ask that manufacturer to design a custom board (or multiple boards) that fits exactly the shape you want. Pretty much any manufacturer is more than willing to produce a customized version of their products, if you pay them enough money for the up-front design and per-board price. If you are lucky you can negotiate that price to something you can live with.
- Option 3: prototype with a pile of boards, some of them "open hardware" and some of them non-open-hardware from a variety of manufacturers. The engineer designs a "carrier board" so your final product includes the carrier board and a bunch of off-the-shelf components plugged into it -- all of the non-open-hardware components, and perhaps some of the off-the-shelf open-hardware components. Option 3 often gives the fastest time-to-market, because the carrier board does so little that it's much quicker to design and test it than a huge monolithic board.
I agree that ARM is the way to go for 32-bit microcontrollers. ARM is ubiquitous and its assembly language can be used across a broad range of microcontroller families. ARM also has good support from the GCC toolchain. The ARM7TDMI chip architecture has dominated the 32-bit mcu space the last 5 years and the ARM Cortex-M3 is the emerging replacement. The Cortex-M3 does have a Harvard architecture (separate instruction and data address spaces), but I don't feel that's a limitation.
Micromint has a solid reputation, and they offer a Cortex-M3 board with configurable options for a decent price. However, if you really need DIP configuration, I've had success with the mbed
Now, the next thing is languages. You mentioned FORTH. I also recommend Python-on-a-Chip and eLua as powerful, easy to learn languages that work on this size target platform. eLua is more fully developed but has larger resource requirements than Python-on-a-Chip. Full disclosure: I'm the author of the PyMite VM used in Python-on-a-Chip. So, if your goal is to make your own language, I fully understand the joy of that exercise.
Best Answer
Neither.
ARM is a CPU architecture (more accurate, a family of related CPU architectures). If you put that CPU (or anyother) CPU on a chip all by itself, you have a microprocessor (like they did in the age-old Acorn machines). If you combine it with ROM (Flash), RAM and peripherals on one chip, you have a microcontroller (example: LPC2148).
Things can get a bit muddy when you combine the CPU with ROM and RAM, but also provide the data, address and control lines on the pins, so external memory can be added. Such a chip is can be used either in microcontroller mode, or in microprocessor mode. (example: LPC2478)
Nowadays smaller systems (up to 0.5Mb Flash, a few 10's Kb RAM) are available as microcontroller. Larger systems (typically running a Linux or something similar) are typically composed of a microprocessor with external RAM. (ROM can be external too, or a small boot-rom on chip + an SD card or similar). Examples: The Raspberry Pi and other small Linux boards, the ESP8266, or open up any mobile phone, set-top box, modem/router, etc.
Funny note: microcontrollers tend to be short on RAM, hence the run from Flash, which often limits their speed. Microprocessors often have plenty RAM, have a slower Flash, from which the code and data is loaded into RAM for execution.
Nowadays (2015) the term ARM is increasingly confusing, because it can refer to the company that makes the ARM designs, or to one of the designs. (The ARM company itself does not make chips, it licenses its designs to chip makers.) The recent Cortex 'family' of designs is sufficiently different from the old ARM designs that I prefer not to call it 'ARM'.