We all have(mostly) 32-bit machines at our homes. But the 32-bit machines have a microprocessor in them. I was reading an article about the ARM Cortex. Its a 32-bit microcontroller. Now that intrigued a question inside me. Microcontrollers were made to decrease the external circuitry around a microprocessor, then the microprocessors became more powerful while microcontrollers remained in there 8 bit forms for too long a while. But now that we have 32-bit microcontrollers can't we have like a computer based around those things?
It depends on how you define 'computer'..
On the smaller end of the scale, what you might call traditional micro-controllers, you don't get memory management and seldom see any more RAM than the tiny amount embedded in the chip. I'll admit to very little knowledge about the architecture of the more capable micro-controllers now available, but the existence (or lack thereof) of these features is probably key to distinguishing between a device best suited for embedded applications or for general purpose computation.
By 'memory management' I'm referring to the capability to run programs in virtual address spaces and map these to the physical RAM available in the system, a function carried out by what's usually called a memory management unit (MMU).
Without an MMU, if you try to run multiple processes, all of them are forced to share a single address space, and this means that unless all processes involved adhere to your memory allocation scheme, one process can very easily crash another. So if you're in total control of designing all the processes, as with an embedded system, this isn't as much of a concern. However, if you're trying to support general purpose computation, you can't guarantee that all the code that will be executed will respect the memory allocation scheme, and the system will be rather fragile.
Lack of RAM is also not much of a problem for embedded systems, (1) because there's usually lots of flash, and (2) not being a general purpose computer means you don't have to worry about running un-anticipated programs at the behest of a user. You know ahead of time the sum total of all the software that will run on the system, and only need RAM for variables for that software. When you try to make your system into a general purpose computer, though, users are going to expect to be able to run whatever suits them, and this requires RAM.
Now, it's absolutely fine to do general purpose computation on devices without an MMU, and not much memory. The original 128K RAM, 8088 based (16 bit) IBM PC got away with this, as long as you only needed to run one program at a time.
So if you want to define 'computer' as something like 1982 technology, the answer is definitely yes. Or if you have a closed system where you can mitigate the problems of not having an MMU and/or much ram (e.g., cell phones) by carefully controlling the design of the software, also yes. Or, if your micro-controller has a built-in MMU and gobs of RAM (or can accommodate these externally), you should be able to construct a system that more resembles current computers.
Absolutely! Take a look as almost every cell phone out there. For example, the Motorola Droid uses the TI OMAP ARM based microcontroller running Android on top of Linux. Basically, a full blown computer operating system is on it and many other gadgets. On some of the products my client builds, they use FreeScale PowerQuicc I & II 32-bit processor/controllers that can run Linux on them. The PowerQuicc's basically have a PowerPC core along with a separate RISC processor for handling all the peripherals in a highly configurable way. It's a glorified microcontroller.
You also have to remember that years ago computers weren't running on 32-bit processors, but more like 8-bit processors (4-bits way back then) like the Commodore 64. Then they migrated to 16-bit, 32-bit, etc. There's really not much difference between a microcontroller versus a microprocessor of equivalent bit architecture and speed. Microcontrollers usually lack the floating point unit, but that can be made up for with fixed point math. For example, the original Motorola 68000 processor (16-bits) was used to power those old time Macintosh computers and then spun into a microcontroller version for many embedded electronic applications for years.
You need to look at the role of microcontroller to understand how it is used. Normally, when you're designing with a microcontroller, you have a highly specialized application in mind and you're trying to fit it in a smaller space than say a PC Tower. Whereas, the computer is very general purpose: crunch numbers and process user input. When you look for a microcontroller, you're looking for one that will support the kind of interface you're building for your application. Do you need 3 USB ports, 2 ethernet, 2 UARTs, SPI port, ATM, and CAN interface? Some of these interfaces don't come on a typical computer such as SPI, ATM, and CAN, and a microcontroller has them built in to reduce board space. You can look at microcontrollers as processors designed for a specific solution.
We definitely can. The iPad, for example, uses an ARM Cortex A8 processor for its brain.
It worth noting that the mentioned ARMs (OMAP and A8) are microprocessors without Flash memory and RAM (not totally true for the A8). The Cortex-M3 microcontroller is smaller, has small built-in memory and easier access to peripherals.
There is quite a large gap (performance- and feature-wise) between them.
Recent netbooks are ARM-based: http://www.google.com/search?client=safari&rls=en&q=arm+netbook&ie=UTF-8&oe=UTF-8
Not trying to resurrect an old thread but my Zaurus SL5500 ran embedded linux on an ARM processor with gobs of RAM, and further gobs of storage via CF and SD slots. As far as I know the MMU was implemented mostly in software(makes sense for a linux system anyway). General purpose computing was not only possible, but made thoroughly available via third party software, compilers, and a flexible command shell which provided most of the standard *nix utilities and features.
Wasn't the fastest GP computer in the world, but sure made the ARM (and/or Samsung equivalents - I'm not 100 percent sure which it contained) look awfully capable. Feature and performance-wise it compared quite nicely with a WinMobile Ipaq of much more recent vintage (definite Samsung StrongArm clone). Both machines had lots of RAM and lots of storage so lots of memory managing going on - I suppose we have to blur the line a bit between microprocessors and microcontrollers when we get to this performance level.
You mention "microprocessors" and "microcontrollers" but increasingly there is a third category of device appearing known as "SOCs" (which stands for "system-on-chip", a term I find rather misleading)
Microcontrollers have very small ammounts of ram and typically have no memory mapping and very limited memory protection. This makes them poorly suited to use as general purpose computers.
SOCs can be seen as a middle ground between conventional microcontrollers which have everything integrated on one chip and conventional microprocessors which required large ammounts of support circuitry. SOCs have the processor core and perhipherals integrated onto one chip but unlike microcontrollers they use external memory. Typically these SOCs have a full MMU that can create a virtual address space for different applications. Many SoCs also have special function blocks for 3D graphics, DSP, video encoding/decoding etc.
SOCs are not as powerful as a modern desktop PC but when combined with an uncrippled software environment they are powerful and functional enough to count as "general purpose computers".