Electronic – Microcontroler with external bus

avrbusgccmemory

I am looking for some microcontroler with external bus for program memory, and witch is supported by GCC.

I read this Atmel ATSam3U datasheet (I have no experience with this familly, yet) and there is note about external bus. Since ATSam3U is hardvard processor, I suppose this bus is for data memory and not for program memory. Am I right?

Best Answer

The Cortex-M3 core that this unit uses has 3 busses.

The "I" or instruction bus.

This is the normal bus used to fetch and execute instructions. The internal bus matrix has this linked to the internal ROM and RAM.

The "D" or data bus.

Normally used to access the internal ROM and RAM, the bus matrix has this linked to the same things as the instruction bus. This allows concurrent access for both instructions and data in the same memory areas.

The "S" or system bus.

This covers everything else. The other two busses are very limited in their address space. This one allows access to much more memory than the others. This is the bus that links to the external memory. While it is possible to execute code in this area of the memory space you do so at reduced efficiency. This is because there is only one bus connected to this area, and it also connects to everything else that isn't internal ROM or RAM. You cannot fetch instructions and data at the same time using this bus - it works much more like the normal memory architecture of a non-harvard system (like a Z80, 8086, 68000, etc)

So yes, you can use the external memory for program code, but at reduced efficiency.