I’m looking for a 32-bit ARM based microcontroller, capable of booting from external flash, that wont need any development hardware, except for the hardware needed to program the external flash. Does such a microcontroller exist and if so what is it?
Or is it possible to change the internal flash memory of a microcontroller using code that has been put into the microcontroller’s ram via a JTAG interface, in such a way so that the next time power is applied it will run from the internal flash code that has just been written?
Yes, you could use any ARM that has both an external bus (otherwise you wouldn’t have external flash) and an on-chip bootloader (unless you have a way to do the initial programming with additional hardware, e.g. a JTAG interface or an external flash programmer).
Question 2:
Yes, most (all?) of the ARM’s with internal flash allow you to write the flash via JTAG, and whatever is in the flash will be run on the next startup.
without knowing more about your particular needs it’s going to be hard to recommend any 32-bit ARM based micro - ARM 32-bit micros range from low-cost sub 50-MHz ARM7 and Cortex-M3 devices with a few KB of RAM to several 100-MHz ARM9/10/11/Cortex-A8 devices with hundreds of MB RAM. Many of them have both an external bus and an on-chip bootloader, like the LPC22xx, STR7xx, STR9xx, CS-EP93xx, LPC31xx, …
well, I’m planning on designing and building a low cost device that will be able to see in stereo vision. It is a hobbyist type project, I dont intend upon replicating it. I don’t have ample experience with microcontrollers but I’m been programming computers in c/c++ since the age of 7. In my view the the only other asset I’m looking for in the microcontroller is low power usage per mhz, as I can have external RAM and If need be I can custer together microcontrollers to increase performance. I’v done this with computers and small microcontrollers in the past and it has served me well.
ARM7 microcontrollers are quite powerful, about 60 MIPS is very roughly the same as early Pentium chips (90MHz or so). Running power is about 50mA at 3.3v. Two good AA batteries will provide 2700mAh and that gives you 54 hours, so you can see the power consumption is very low.
The ones with external flash can be flashed through JTAG quite easily. Popular chips are NXP and Atmel’s SAM7. They both have non-external bus versions you can start work on, and if you need more ram/flash you can swap the device with minimal change. Almost all ARM7 devices are very simple, run with minimal glue logic and can quickly be flashed with software through JTAG, you only have to choose the manufacturer.
If you do need more power, ARM9 chips are really powerful. They’re like entry-level Pentium-II chips (except MMX, SSE and other floating point stuff where ARM9 isn’t that good) and require much more care in design. But your software will easily scale up with it.
I usually start with LPC2138 or LPC2148 from NXP and replace it with LPC2210 with ram and flash as soon as I hit the memory limit. I’ve been ok with SRAM chips, but am looking at atmel SAM7SE chips which also support the cheaper SDRAM chips.